Hi all.
I have a strange problem.
My app was accepted to the App Store but what I've found is that it works only on phones listed in UDID list in Devices in Certificates section.
If I try to install it on any other phones it installed successfully but when I started it it just shows me a login screen that looks like it was opened in IDE designer. If I in designer click on bil file and then click F2 the activity design preview opened on a phone I use for development (see attached image IMG_0101.png)
Please see how it looks on a phone that wasn't added to the UDID list (IMG_0102)
Please see how the same screen should look (IMG_0085)
And on the first start of my app the
I remember that I had the same problem when I forgot to add a tester's phone UDID to Devices list and select this phone in my Add Hoc provision profile. When I tried install the app from TestFlight on a tester's phone I had the same problem. So I added tester's phone UDID into Devices list, selected it in Add Hoc provision profile, regenerated provision and downloaded on my development computer. I recompiled the app again, uploaded to the iTune Connect and then reinstalled on tester's phone - problem gone.
Now I have the same problem again even though the app was accepted into App Store.
I created only 1 certificate for iOS_Distribution as in Erel video. Then I created 2 provision profiles. Please see attached screens
In my code I use this
And also I created 2 Build Configurations Default that I use for development and Store - for compiling with store Package name and store provision profile.
On the App start in sub Application_Start I call login screen Show sub. And in Login Show sub I check if the airplane mode is off and if so check if Privacy accepted text
it's a first time start and if my code calls screen Privacy when user must accept privacy statement and once he accepted it Registration screen comes up. That's how it should work.
Please see Login screen Show code
Here is a code for Main.modFun.ShowError
It looks like in sub Show doesn't go below line 34 but no error messages shown.
What Am I missing?
Thank you.
I have a strange problem.
My app was accepted to the App Store but what I've found is that it works only on phones listed in UDID list in Devices in Certificates section.
If I try to install it on any other phones it installed successfully but when I started it it just shows me a login screen that looks like it was opened in IDE designer. If I in designer click on bil file and then click F2 the activity design preview opened on a phone I use for development (see attached image IMG_0101.png)
Please see how it looks on a phone that wasn't added to the UDID list (IMG_0102)
Please see how the same screen should look (IMG_0085)
And on the first start of my app the
I remember that I had the same problem when I forgot to add a tester's phone UDID to Devices list and select this phone in my Add Hoc provision profile. When I tried install the app from TestFlight on a tester's phone I had the same problem. So I added tester's phone UDID into Devices list, selected it in Add Hoc provision profile, regenerated provision and downloaded on my development computer. I recompiled the app again, uploaded to the iTune Connect and then reinstalled on tester's phone - problem gone.
Now I have the same problem again even though the app was accepted into App Store.
I created only 1 certificate for iOS_Distribution as in Erel video. Then I created 2 provision profiles. Please see attached screens
In my code I use this
B4X:
'Code module
#CertificateFile: ios_distribution.cer
#Region Project Attributes
#ApplicationLabel: HCMS-EVV
#Version: 1.0.32
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
#iPhoneOrientations: Portrait
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
#Target: iPhone, iPad
#ATSEnabled: True
#MinVersion: 8
#If RELEASE
#ProvisionFile: EVVReleaseOrg.mobileprovision
#Else
#ProvisionFile: EVVProfile.mobileprovision
#End If
#PlistExtra: <key>UIFileSharingEnabled</key><true/>
#PlistExtra: <key>UIUserInterfaceStyle</key><string>Light</string>
#PlistExtra:<key>NSLocationWhenInUseUsageDescription</key><string>Used to display the current navigation data.</string>
#PlistExtra:<key>NSLocationUsageDescription</key><string>Used to display the current navigation data.</string>
#PlistExtra:<key>NSMicrophoneUsageDescription</key><string>Used to record the voice messages.</string>
#PlistExtra:<key>NSPhotoLibraryUsageDescription</key><string>Select a photo.</string>
#PlistExtra:<key>NSPhotoLibraryAddUsageDescription</key><string>Save photo in albums.</string>
#PlistExtra:<key>NSCameraUsageDescription</key><string>Taking a photo.</string>
#End Region
And also I created 2 Build Configurations Default that I use for development and Store - for compiling with store Package name and store provision profile.
On the App start in sub Application_Start I call login screen Show sub. And in Login Show sub I check if the airplane mode is off and if so check if Privacy accepted text
it's a first time start and if my code calls screen Privacy when user must accept privacy statement and once he accepted it Registration screen comes up. That's how it should work.
Please see Login screen Show code
B4X:
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Private pg As Page
Private x As XUI
Public IsAttemptRegistrationOk As Boolean=True
'Private TestRet As Boolean
Private imgLogo As ImageView
Private btnLogin As B4XView
Private lblVersion As Label
Private txtUserName As B4XView
Private txtPassword As B4XView
Private chTOS As Switch
Private chPrivacyAccept As Switch
Private lblViewTOS As Label
Private lblViewPrivacy As Label
Private lblRestorePassword As Label
Private UserName As String,Password As String
Private HUD As HUD,XUI As XUI
End Sub
Public Sub Show
Try
If pg.IsInitialized=False Then
pg.Initialize("pg")
pg.RootPanel.LoadLayout("Main")
End If
Main.NavControl.ShowPage(pg)
pg.ResignFocus
If Main.modFun.CheckAirplane Then
X.MsgboxAsync("Please turn off the airplane mode or check if you allowed the network permission","HCMS")
Return
End If
If Main.ParentScreen="PatientDetails" Then
PatientDetails.Show
Return
Else If Main.ParentScreen="EmergencyMemo" Then
EmergencyMemo.Show
Return
Else If Main.ParentScreen="FacilityDetails" Then
FacilityDetails.Show
Return
Else If Main.ParentScreen="SelectedClient" Then
SelectedClient.Show
Return
Else If Main.ParentScreen="UnscheduledClockIn" Then
UnscheduledClockIn.Show
Return
End If
If Main.IsExpired And Main.IsRegistered And Main.IsAccepted Then
X.MsgboxAsync("Your session has expired. Please login","HCMS")
txtUserName.Text=""
txtPassword.Text=""
chTOS.Value=False
Main.IsExpired=False
chPrivacyAccept.Value=False
Return
End If
If Main.modFun.IsDebugMode Then
chTOS.Value=True
chPrivacyAccept.Value=True
End If
lblVersion.Text="HCMS-EVV Version 1.32 2/20/2021"
btnLogin.SetColorAndBorder(Main.modFun.GetColor("blue"),3dip,Colors.White,8dip)
btnLogin.Height=55dip
lblVersion.Color=Colors.White
txtUserName.SetColorAndBorder(Colors.white,1dip,Colors.Black,0dip)
txtPassword.SetColorAndBorder(Colors.white,1dip,Colors.Black,0dip)
lblRestorePassword.TextColor=Main.modFun.GetColor("blue")
DateTime.DateFormat=Main.DateFormat
DateTime.TimeFormat=Main.TimeFormatShow
CheckLegal
If Main.IsAccepted=False Then
Return
End If
AddTable
AddColumn
If IsAttemptRegistrationOk=False Then
Return
End If
Main.IsRegistered=CheckRegistration
If Main.IsRegistered=False And Main.IsAccepted Then
Registration.Show
Return
End If
Catch
Log("Login_Show " & LastException.description)
Main.modFun.ShowError("Login_Show " & LastException.description)
End Try
End Sub
Private Sub CheckLegal
Try
Dim TimeStamp As String
Dim x As XUI
Dim arr() As String
Dim DateStr As String,TimeStr As String
If File.Exists(Main.FileDir,"legal.txt") =False Then
Legal.Show
Return
Else
End If
TimeStamp=File.ReadString(Main.FileDir,"legal.txt")
TimeStamp=Main.modFun.Decrypt(TimeStamp)
arr=Main.modFun.Split(" ",TimeStamp)
DateStr=arr(0)
TimeStr=arr(1) & " " & arr(2)
If Main.modFun.IsValidDate2(DateStr,TimeStr)=False Then
x.MsgboxAsync("Legal file is not valid","HCMS")
Return
End If
Main.IsAccepted=True
Main.AcceptedDate=TimeStamp
Catch
Log("Main_CheckLegal " & LastException.description)
Main.modFun.ShowError("Login_CheckLegal " & LastException.description)
End Try
End Sub
Private Sub AddTable
Try
Main.sql1.ExecNonQuery(modDB.tblNurseNotesSQL)
Main.sql1.ExecNonQuery(modDB.tblPASchedule)
Main.sql1.ExecNonQuery(modDB.tblPA)
Main.sql1.ExecNonQuery(modDB.tblUnscheduledShifts)
Main.sql1.ExecNonQuery(modDB.tblPhotoNotes)
Main.sql1.ExecNonQuery(modDB.tblMailSettings)
Main.sql1.ExecNonQuery(modDB.tblEmergencyMemo)
Main.sql1.ExecNonQuery(modDB.tblLegal)
Main.sql1.ExecNonQuery(modDB.tblMessages)
Main.sql1.ExecNonQuery(modDB.tblNewCases)
Main.sql1.ExecNonQuery(modDB.tblActivity)
Main.sql1.ExecNonQuery(modDB.tblNewCases)
Main.sql1.ExecNonQuery(modDB.tblSentMatchupRequests)
Main.sql1.ExecNonQuery(modDB.tblSentDayOffRequests)
Main.sql1.ExecNonQuery(modDB.tblViewedCases)
Main.sql1.ExecNonQuery(modDB.tblReminder)
Main.sql1.ExecNonQuery(modDB.tblCovidSymptomsByDeviceID)
Main.sql1.ExecNonQuery(modDB.tblSymptoms)
Catch
Log("AddTable " & LastException.description)
Main.modFun.ShowError("Login_AddTable " & LastException.description)
End Try
End Sub
private Sub AddColumn
Try
modDB.AddColumn("tblMobileUserAccounts","ProviderTypeID","INTEGER")
modDB.AddColumn("tblMobileUserAccounts","AccountStatusID","INTEGER")
modDB.AddColumn("tblMobileUserAccounts","Covid","BIT")
modDB.AddColumn("tblClientNeeds","MatchupID","INTEGER")
modDB.AddColumn("tblClientNeeds","DOW","TEXT")
modDB.AddColumn("tblClientNeeds","ParentNeedID","INTEGER")
modDB.AddColumn("tblClientNeeds","ParentSkills","TEXT")
modDB.AddColumn("tblNurseNotes","Latitude","float")
modDB.AddColumn("tblNurseNotes","Longitude","float")
modDB.AddColumn("tblNurseNotes","Photo","text")
modDB.AddColumn("tblNurseNotes","NoteTime","SmallDateTime")
modDB.AddColumn("tblNurseNotes","ToNoteTime","SmallDateTime")
modDB.AddColumn("tblPlacementTasks","Note","Text")
modDB.AddColumn("tblClients","Apartment","Text")
modDB.AddColumn("tblClients","Distance","Float")
modDB.AddColumn("tblClients","Latitude","Float")
modDB.AddColumn("tblClients","Longitude","Float")
modDB.AddColumn("tblClients","ScheduleMonitoring","BIT")
modDB.AddColumn("tblClients","PriorityID","Integer")
modDB.AddColumn("tblClients","EmergencyMemo","Text")
modDB.AddColumn("tblClients","EmergencyMemoCreated","SmallDateTime")
modDB.AddColumn("tblClients","EmergencyMemoCreatedBy","Text")
modDB.AddColumn("tblClients","EmergencyMemoUpdated","SmallDateTime")
modDB.AddColumn("tblClients","EmergencyMemoUpdatedBy","Text")
modDB.AddColumn("tblPlacementSchedule","StartExplanation","Text")
modDB.AddColumn("tblPlacementSchedule","FinishExplanation","Text")
modDB.AddColumn("tblPlacementSchedule","AdjustedActualStart","SmallDateTime")
modDB.AddColumn("tblPlacementSchedule","AdjustedActualFinish","SmallDateTime")
modDB.AddColumn("tblPlacementSchedule","ActualHours","SmallDateTime")
modDB.AddColumn("tblPlacementSchedule","PAID","INTEGER")
modDB.AddColumn("tblPlacementTasks","Completed","BIT")
modDB.AddColumn("tblNotesMediaFiles","FTPDate","SmallDateTime")
modDB.AddColumn("tblNotesMediaFiles","Updated","SmallDateTime")
modDB.AddColumn("tblClientsSchedule","Units","INTEGER")
modDB.AddColumn("tblFacility","Address","Text")
modDB.AddColumn("tblFacility","City","Text")
modDB.AddColumn("tblFacility","State","Text")
modDB.AddColumn("tblFacility","Zip","Text")
modDB.AddColumn("tblFacility","Phone","Text")
modDB.AddColumn("tblFacility","ProviderType","Text")
modDB.AddColumn("tblFacility","Logo","Text")
modDB.AddColumn("tblFacility","WebSite","Text")
modDB.AddColumn("tblFacility","Fax","Text")
modDB.AddColumn("tblFacility","RequestDays","INT")
modDB.AddColumn("tblClientContacts","ProviderID","INTEGER")
modDB.AddColumn("tblNewCases","ProviderID","INTEGER")
modDB.AddColumn("tblNewCases","Viewed","SmallDateTime")
modDB.AddColumn("tblNewCases","LanguagePreference","Text")
modDB.AddColumn("tblNewCases","ScheduleMemo","Text")
modDB.AddColumn("tblNurseNotes","NoteTime","SmallDateTime")
modDB.AddColumn("tblReminder","ExpDate","SmallDateTime")
modDB.AddColumn("tblPASchedule","UsedHrs","Float")
modDB.AddColumn("tblPriorAuthorization","CheckPostActivePA","Bit")
Catch
Log("AddColumn " & LastException.description)
Main.modFun.ShowError("Login_AddColumn " & LastException.description)
End Try
End Sub
private Sub CheckRegistration As Boolean
Try
Dim MySQL As String=""
Dim Qty As Int
Dim Res As Boolean
MySQL="select count(*) as Qty from tblUsers"
Qty= Main.SQL1.ExecQuerySingleResult(MySQL)
If Qty=0 Then
Res= False
Else
Res=True
End If
Return Res
Catch
Log("CheckRegistration " & LastException.description)
Main.modFun.ShowError("Main_CheckRegistration " & LastException.description)
Return False
End Try
End Sub
Here is a code for Main.modFun.ShowError
B4X:
public Sub ShowError(ErrorStr As String)
Dim str As String=""
str="IOS"
Msgbox("ERROR:" & CRLF & ErrorStr,"HCMS")
ErrorStr=str & "<hr/>" & Main.DeviceID & "<hr/>" & ErrorStr
SendEmail(ErrorStr)
End Sub
It looks like in sub Show doesn't go below line 34 but no error messages shown.
What Am I missing?
Thank you.
Attachments
Last edited: