iOS 9 LaunchServices: ERROR: There is no registered handler for URL scheme itms-services

Daniel picture Daniel · Sep 18, 2015 · Viewed 20.8k times · Source

We have some in-house apps and before iOS 9, the apps will open a link like "itms-services://" after version compare, the new version apps will be downloaded and install.

But after we tested on iOS 9, we found the apps cannot open the link "itms-services://" link, got error like "LaunchServices: ERROR: There is no registered handler for URL scheme itms-services"

The code we used to update the app:

let downloadUrl = NSURL(string: url)
UIApplication.sharedApplication().openURL(downloadUrl!)

We have tested put "itms-services", "itms-services://" and the full URL into "LSApplicationQueriesSchemes" in plist file. But still not work.

Answer

dullgrass picture dullgrass · Dec 3, 2015

I have come to the same problem with you. And I solve this problem with the method that the app open a html url with safari first,

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// xx.xx.xx.xx/xx.html"]];

the html url redirect to the url --- itms-services://?action=download-manifest&url=https://xx.xx.xx.xx/xx/xx.plist address. Though this method can update my app, but the update process need open Safari first and then alert open App Store, if you select open button then it will alert whether install your app, at last you confirm install button. the app will be installed automatically.

my html content as follow:

<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
     <script type="text/javascript">
               function load()
               {
                        window.location ="itms-services://?action=download-manifest&url=https://xxx/xx/xx.plist";
               }
     </script>
</head>
<body onload = "load()">