IOS OTA install does not register custom url scheme

For one of our clients, we created an OTA app store for distribution.

To enable testing if the apps are installed, in each of the apps I wrote, I added two custom URL schemes: one with only the app ID and one with the app ID and version (both .

replaced with -

); for example com-mycompany-app

also com-mycompany-app-1-2-0

for com.mycompany.app, version 1.2.0.

Then in our "app store" I just use [[UIApplication sharedApplication] canOpenUrl:]

to determine if the app is installed or the latest version, and if so, replace the Install button with the Open button.

When installing the app via Xcode, it works great. However, when I install the same OTA app, via my "app store", the call canOpenUrl:

always returns NO. To verify that this is caching, I tried to restart the "app store" after the OTA install finished, but I get the same results.

Is this a problem with my plist manifest file? In the Info.plist that is related to the target, the custom url schema structure is explicitly present, but it is not in the manifest. However, I would suggest it uses a manifest to trigger the initial installation ... shouldn't you use Info.plist during the actual installation to register things like this? Is there something else I am missing?

Thank!


Edit: I am using a custom build script to generate files .ipa

and .plist

that are used for OTA distribution. I tried to use iPhone Configuration Utility

to set the IPA directly and my app store was able to recognize these URLs as openable. The only possible things I can think of is that the plist I'm using to download and install must have some reference to these custom url schemes, or is it actually a legitimate bug in Apple's OTA framework.

+3


source to share


1 answer


I got this to work if anyone is watching this or stumbling across a similar issue.

The only thing I changed - and there is no documentation that says the old way doesn't work or shouldn't work - is to use periods in my URL scheme instead of a hyphen. So it com-company-app://

became com.company.app://

(same as package id) and also with added version.



I don't know if my old URL schemes were breaking the official URL specification, or if you should be using reverse DNS, but it works now.

+3


source







All Articles