Refresh Associated Domains iOS - 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

Related

Unable to access HealthKit permissions for my app in Settings

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.

IOS 12 Unwanted communication Reporting Extension Working on Phone but not on Messages app

I have been trying to make the new iOS extension Unwanted Communication Reporting work. Currently I couldn't find any good walk-through tutorial or code-sample to make it work. Above that by just firing up a new project with this extension and building it shows me the option of reporting in the Phone App but not on the Messages app, Moreover, the option to enable it only appears in phone app but it says "sms/phone" so I think this should work for both of them.
I know its in beta right now but just want to know if anyone had any luck with it. Also, There is no code to share as its just the boiler plate that comes with the new project.
This might have been a personal issue. I reset the whole phone and now I can see the options to report message. Apple might have fixed it in their latest iOS build or it might have just been my device issue.
Apple's developer site specifies ”SMS and call spam reporting," which is an app extension that you will have the option of turning on or off.
You may enable an Unwanted Communication extension in the Settings app. I am not sure if Apple will utilize this but i know for android - screen turns red when such spam calls come in, also caller id notes that but currently apple seems to have found a middle ground.
The following worked for me, you can try:
Remove command definition for this in Plist file.
Delete the Target in project (you can delete code folder).

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.

How to get crash logs of Testflight external testers on Xcode or iTunes connect?

Is there any ways to know what's wrong with someone's app. It is working on everyone else's device but this person.
The person tried removing the previous version and installing the new one, but it still does not work. I suspect that one of the files that I place in the documents folder might still be there... but the format of this file has changed since...
Apple has a technote about this named Debugging Deployed iOS Apps.
Also, if your tester syncs up their iPhone with a Macintosh or PC, iTunes also helpfully moves logs into predictable places where they can be retrieved from.
I am attempting to solve this logging of execution in TestFlight with the following simple approach...
In in-App Billing you really have to use TestFlight, so the problem is serious.
The "print("text") statements can be replaced in the code to calls to a func printTestFlight(text: String) which writes the strings to a database along with some identifier so you know the user.
This is quite simple and obvious, and to an extent it works.
If there are events which are logged by the os rather than teh user, then this approach misses those, notably the interesting ones around a crash. I'd be happy to hear from anyone who knows how to do thiso

Removal of TestFlight apps?

Is there a way to remvoe TestFlight apps from users that have installed them? Also is there a way that TestFlight can bake into the app some sort of password that the users all have to log in with (in case of a lost phone, we don't want our developement apps exposed).
If left untouched, the provisioning of your apps will eventually expire automatically. Even without the native ability to remove applications with TestFlight there is still something of an expiration date on the application.
That would still leave your question of a "baked in password prompt" and removing the application itself physically from the device.
The first part, the app checking for authentication could be solved by implementing a solution with a more robust SDK that happens to have that sort of security-minded approach. As far as I know, and based on TestFLight's feature grid, this exceeds the abilities of their tool.
The second part, removing the application itself from the device, would be accomplished by using a tool that has the ability to use MDM (Mobile Device Management) for device-level control. Specifically you'd want to look for something that can selectively control a single application, rather than having to apply a blanket MDM policy. Again based on knowledge of TestFlight and based on their web page this is also not something TestFlight is capable of.
There are solutions out there that will give you exactly what you are asking about - easy beta testing with the added ability to force the app to check in and re-authenticate as well as the ability to remove applications from the device when you're done testing. If you hit your search engine of choice you can find a few tools that will give you a "yes" to all of your questions here. The list is very short so they're easy to find. :)
If it is at all helpful to you, I am associated with one of those companies, AppBlade, and would be happy to answer questions about this sort of thing. We're at https://AppBlade.com and you're welcome to give us a call or even log into the tool to see how it works for yourself.
Unfortunately you can't delete apps that are already installed on the device via TestFlight, unless you do it on the device itself. As for the password, TestFlight doesn't exactly support that either. You could however put a passcode lock feature in all of the Beta versions of your apps through your code. Sorry thats probably not the answers that you wanted to hear, but TestFlight is still in its early stages.
You are not able to delete apps from a users device, however TestFlight is testing in their 'Area51' an option to force users to update to a new build if there is one available.
If you no longer want testers to access your app you probably could add a new build which justs shows some info screen.
There is a way to expire the builds in the app store connect when you click on build.
Another way if you want to get rid of it as a tested to open the app page and click on stop testing.

Resources