Unable to access HealthKit permissions for my app in Settings - ios

I recently published an app to the App Store that reads several metrics from HealthKit. It all seems to be working correctly in the app (permissions screen loads fine and data is being read okay) but when I go to Settings > Privacy > Health > MY APP, there is just a blank screen with no data.
I've seen this bug with other apps (MyFitnessPal, Balance) and a forum recommended deleting and reinstalling, which fixed it for them. But it doesn't fix my app at all.
Can anyone think of something I might have missed that's creating this issue?
Thanks

This should be addressed in iOS 15.4 Beta 1. Can you try there?
You should also be able to access your apps authorizations from within Health App. Go to Profile View and navigate to your app under the Apps view.

Related

TestFlight build is not working same for every user

I'm new to iOS development.
I have a app built with React Native and already deployed on app store. I'm working on version 2.0 of the app. Previous version was built by some other developer company.
They delivered the source code for the version one, I'm gonna work on top of the codes of version one.
I've pushed a build on TestFlight to check if the existing codes are okay.
Now on TestFlight,
most of the testers are not finding any problems but some users can't login. Whenever they try to login, either there is an infinite loading screen or the app takes back to splash screen. The users then tries again to login but again after entering otp, user is sent back to splash screen.
Now this scenario is happening only with 2, out of our 20+ testers. We don't know where the problem is because we can't recreate the same issue in other devices.
Also, this same app with same code is deployed on google play store and working without any issue.
Has anyone else faced similar issue? Is it a problem with the test flight?
N.B: Everyone using iphone with latest iOS update 16.3
Try to log in with their credentials on your simulator/local device where you have access to logs etc.
Sounds to me like there's an issue with some specific accounts, maybe they have some properties in their accounts that has been altered/removed that's making the login process fail / load the correct content.
Edit: If there's infinite loading, have they checked their internet connectivity as well?

Access is not requested again after reinstalling the app in iOS12

After updating to iOS12 and testing the apps build in Xcode 9, we found out that after deleting and reinstalling the app - the user is not prompt again with a question regarding access to the Camera or Gallery.
On iOS11, every time the app is installed, iOS asks for permission.
I tested few random apps from AppStore to see how they behave and the conclution is - some of them do reset the access and some don't. So, I'm completely lost.
Also, as an info, but I'm not 100% sure about this: when there is a time period between deleting and installing the app (more than 1h), even on iOS 12 is asking for permission.
Is there any change there in iOS 12? Do you have any clue how to keep iOS 11 behaviour instead?
Thanks!
The only certain way to test the authorization request process again after deleting your app is (and always has been) to go to the Settings app and choose General -> Reset -> Reset Location & Privacy. This is a major pain because you've now reset all your location and privacy settings.
My other suggestion (and it's only a suggestion) is that you try restarting the device after deletion of the app. Maybe, just maybe, this will cause the device to write something out to disk that will cause it to forget about its previous authorization of this app.

Refresh Associated Domains iOS

I have universal links working in my app.
I enable the Associated Domains, upload the apple-app-site-association file, and run the app. All works as expected, the domains are registered (I'm watching via the OS log in Xcode), and I can use Open In from the Notes app to test the links.
HOWEVER. If I reboot the device (in my case iPad, iOS 10) it ceases to work. It appears to me as if the associated domains are getting un-registered/forgotten when the device shuts down.
Is there a way to refresh the associated domains on app launch?
I'm already using Branch.io, and this affects those links as well as straight universal links.
I'm guessing this is an Apple bug, and will file a radar with them. However, any workarounds would be appreciated.
We had not seen this issue at Branch when Alex wrote his comment above. We have since confirmed that this is indeed an Apple bug.
Current documentation states you need to uninstall the app every time you update Associated Domains list to apply the effect immediately.
https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app

MobileGestalt no access to InverseDeviceID

This happens with every app when I try to use OpenGLES on my iPhone7+ with iOS10.3. But it works without any problems on my iPhone7 iOS10.1.
This is the message I get:
libMobileGestalt MobileGestaltSupport.m:153: pid 304 (OpenGLES_Ch4_1) does not have sandbox access for ... and IS NOT appropriately entitled
libMobileGestalt MobileGestalt.c:549: no access to InverseDeviceID
Does anyone have an idea about these messages?
I wonder if it is bugs or something else in iOS10.3? Because when I run the app on iPhone5s iOS10.2, those messages did not shown on the screen. While I upgraded the phone to iOS10.3.1, the massages shown again.
The reason why I ask this question is that some animation effects perform quite stuck on my iPhone7+, but it is completely smooth on iPhone5s. But now it seems it is no relationship between the message above and the stuck, and I have to check my iPhone7+...
I had the same issue. It turns out to be multiple thread accessing the same OpenGLES related resource, EAGLContext to be specific. I guess it is possible that OpenGLES related codes are not thread-safe, and it behaves differently in different OS versions / iPhone 7 / 7+, sometimes it messes up the memory.
After making sure data accesses are synchronised across threads, the problem is gone.
For those of you who are maybe using Ionic and getting this error, please just make sure that in case you've cloned a new fresh copy of the project from your repository that you did both npm install and bower install.
I was missing bower install and this was torturing me for like two days, so hope this helps someone. Sad thing is that I'm by all means not a beginner with Ionic (top #3 answerer on SO) but was still able to miss this fact so I hope that in case someone else runs into this problem it will help you.
Google Map display and functionality works fine with this warning
Check my answer here:
https://stackoverflow.com/a/44970665/3378076
I can see where the setting up of a sandbox account might do the trick, but if the device you are using is also connected to your normal icloud account, you can't create a sandbox with the same AppleID.
You then have to log out of your existing icloud account, and log in with the new icloud (sandbox) useid. Which screws up your existing icloud device settings.
So you are unable to use your Developer ID, only your Sandbox ID.
This worked for me:
Create a new sandbox user in iTunesConnect. YES, you have to create a new iCloud user with a new email.
Log OUT your current iCloud user on your mac AND on the device you are testing on.
Log IN with your new iCloud user on your mac AND on the device you are testing on.
Run your app on your device again. This time it should work.
Hopefully Apple will come around and simplify this issue since this is a real pain in the ...
I had the same issue, and this point me in the right direction:
I've managed to solve the same problem for MKMapView. Apparently, that happens when your app's current permissions state doesn't correspond to entitled (declared in Info.plist) one. That effecively means that you need to call APIs to gather user's permissions explicitly and preemptively. (E.g. LocationManager.requestWhenInUseAuthorization before displaying a map with user location on it)
Source: rdar://problem/11744455
I had same issue. My rendering program was written to support 3 version of openglES(1, 2 and 3). On my case I was accidentally supplying EAGLRenderingAPI.openGLES1 or kEAGLRenderingAPIOpenGLES1 to my renderer class based on openGLES2.
I just had this issue when trying to use in-app-purchases.
Not sure if yours is the same issue, but I realised that you HAVE to create a Sandbox User in iTunes Connect, then log into iCloud on an iOS device with that user to enable the app to work.
I got this console warning message because of issues with multiple Apple Developer accounts. Evidently you cannot have a sandbox account with an existing Apple Developer account. I didn't try to create a sandbox account but it seems to check my default account, which is also an old Apple Developer account that I don't use and hence is no longer entitled. This issue has been reported to Apple many times by other people and I have not yet seen a solution.
My workaround to suppress this warning was to set the OS_ACTIVITY_MODE environment variable to disable in my scheme settings. You can click on the app name and then click Edit Scheme... or from the top menu you can click Product->Scheme->Edit Scheme... :
Then you edit the "Run" settings and add the environment variable OS_ACTIVITY_MODE and set it to disable:
NOTE: Be sure to set this environment variable to enable before you submit your app so that you can see if there are other warnings. There may be other warnings you should fix before you submit your app to the App Store.

iOS Application - intercept when a user deletes the app from device

I'm developing an apple iOS application using Xcode.
How to know if a user removed an application from his iPhone/iPad Device?
thank you
If you have several your apps on device - you can use SHARED KEYCHAIN to detect marker you've written in deleted app. Shared keychain can be accsessed by apps sharing same keychain access group. Or you can get approximate statistics using some statistics framework by checking whether some application stopped logging any events for a long period of time.
No you cannot. The only thing you can catch is first run of your app. There is no obvious reason for knowing when your app is uninstalled (except of spamming users). You can just keep stats to see your app usage if that's the case.
No, an app cannot detect when it is being deleted from the device.
An app runs in a sandbox / secure container. (Almost) everything outside that sandbox is just a 'mystery' for the app. Your app shouldn't need to know, so IF this is an issue at all, it is basically just a design issue for you to deal with.

Resources