web-dev-qa-db-fra.com

iOS 9 LaunchServices: ERREUR: il n'y a pas de gestionnaire enregistré pour le schéma d'URL itms-services

Nous avons quelques applications internes et avant iOS 9, les applications ouvriront un lien du type "itms-services: //" après comparaison de versions, les nouvelles applications seront téléchargées et installées.

Mais après avoir testé sur iOS 9, nous avons constaté que les applications ne pouvaient pas ouvrir le lien "itms-services: //".

Le code que nous avons utilisé pour mettre à jour l'application:

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

Nous avons testé les options "itms-services", "itms-services: //" et l'URL complète dans "LSApplicationQueriesSchemes" du fichier plist. Mais toujours pas travailler.

10
Daniel

Je suis venu au même problème avec vous. Et je résous ce problème avec la méthode selon laquelle l’application ouvre d’abord une url html avec safari,

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

l'URL html redirige vers l'URL --- itms-services: //? action = manifest-download & url = https: //xx.xx.xx.xx/xx/xx.plist address. Bien que cette méthode puisse mettre à jour mon application, le processus de mise à jour doit d'abord ouvrir Safari, puis alerter App Store, si vous sélectionnez le bouton Ouvrir, il vous avertira si vous souhaitez installer votre application, vous confirmez enfin le bouton d'installation. l'application sera installée automatiquement.

mon contenu html comme suit:

<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()">
1
dullgrass

Dans iOS9 (dans mon cas, mon schéma d'URL est le suivant: hash :)

Changer info.plist:  add the custom url schemes here

puis enregistrez le gestionnaire d'événements dans appdelegate:

 func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    // do what you want to do
    print(url);

    // return true if url matches scheme
    return true;
}
0
creality

Dans iOS 9, vous devez inclure dans la liste blanche les modèles d'URL que votre application souhaite interroger dans Info.plist sous la clé LSApplicationQueriesSchemes (un tableau de chaînes):

 enter image description here

Avec les schémas inclus dans Info.plist, tout fonctionne comme avant. Lorsque vous vous connectez à iOS 9, vous n'êtes pas limité à 50 régimes distincts. Vous devez simplement déclarer ce dont vous avez besoin dans Info.plist. Il semble n'y avoir aucune limite quant au nombre de régimes que vous pouvez inclure, mais je m'attendrais à des questions de la part de l'équipe de révision de l'App Store si elles pensent que vous abusez du mécanisme.

Notez que ce mécanisme s'applique uniquement à canOpenURL et non à openURL. Vous n'avez pas besoin d'avoir un schéma répertorié dans Info.plist pour pouvoir l'ouvrir avec openURL.

Plus d'informations sur: http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html

0
NSKevin

Je ne sais pas si c'est votre cas, mais vous avez besoin d'une URL https pour télécharger les applications. Nous n'avons pas de protocole SSL sur notre site Web, nous devons donc télécharger la liste .plist dans une boîte aux lettres et utiliser le lien partagé dans le lien itms-services. Le .plist redirige vers votre serveur et nous n'avons pas de problèmes

0
magorich