Quelle erreur obtenez vous? Ce n'est pas une question sur xcode .
JAL
Il échoue "si UIApplication.sharedApplication (). CanOpenURL (instagramURL!)" La vérification
Sk.Azad
Veuillez consulter l'article ici: awkwardhare.com/post/121196006730/… Dans iOS 9, vous devez spécifier les schémas d'URL que votre application recherche (je ne l'ai pas fait moi-même)
iOS 9 a apporté une petite modification à la gestion du schéma d'URL. Vous devez ajouter à la liste blanche les URL que votre application appellera à l'aide de la LSApplicationQueriesSchemesclé de votre Info.plist.
Si vous appelez la méthode «canOpenURL» sur une URL qui ne figure pas dans votre liste blanche, elle renverra «NON», même si une application installée s'est inscrite pour gérer ce schéma. Une entrée syslog «Cette application n'est pas autorisée à interroger le schéma xxx» apparaîtra.
Si vous appelez la méthode «openURL» sur une URL qui ne figure pas dans votre liste blanche, elle échouera silencieusement. Une entrée syslog «Cette application n'est pas autorisée à interroger le schéma xxx» apparaîtra.
L'auteur spécule également qu'il s'agit d'un bogue avec le système d'exploitation et Apple le corrigera dans une version ultérieure.
Pour clarifier, n'incluez PAS ": //" dans la chaîne d'une application spécifique à mettre sur la liste blanche dans le tableau LSApplicationQueriesSchemes, c'est-à-dire "comgooglemaps: //". Si vous incluez ": //" canOpenUrl: retournera NON et fournira le syslog / erreur "Cette application n'est pas autorisée à interroger le schéma xxx". Cependant, lorsque vous effectuez l'appel réel de canOpenUrl: vous devez toujours inclure les deux points, c'est-à-dire canOpenUrl: @ "comgooglemaps:".
EmphaticArmPump
5
Apple a en fait résolu ce problème dans une mise à jour récente. -openURL:fonctionne toujours même s'il -canOpenURL:est limité.
Tim Johnsen
À quoi ça sert? Où est la sécurité si je peux simplement lister tout dans le plist et toujours le demander?
Maciej Swic
@MaciejSwic Une des raisons est que vous ne pouvez pas modifier la liste sans la soumettre à nouveau à Apple.
lois du
Notez que tout cela est uniquement lié aux applications compilées avec iOS SDK 9. «Si vous ne recompilez pas avec iOS SDK 9.0, votre application est limitée à 50 schémas distincts (les appels à canOpenURL renvoient ensuite NO)», comme spécifié sur developer.facebook.com/docs/ios/ios9
mkll
158
Comme dit plus haut, vous souhaitez ajouter une clé dans la liste d'informations, voici la liste de la plupart des réseaux sociaux
mais si je veux rediriger vers n'importe quelle page de livre de visage comme " facebook.com/ ...."
siva krishna
Presque bon. En octobre 2015, j'ai eu des échecs avec des URL étranges à partir de boîtes de dialogue de partage Facebook. Je les ai ajoutés comme réponse, n'hésitez pas à l'ajouter à la vôtre qui est en effet correcte.
elbuild
1
et Ha://add/[username]pour ajouter des amis Snapchat dans Swift 3
EssamSoft
87
Il s'agit d'une nouvelle fonctionnalité de sécurité d'iOS 9. Regardez la session 703 de la WWDC 2015 pour plus d'informations.
Toute application créée avec le SDK 9 doit fournir une LSApplicationQueriesSchemesentrée dans son fichier plist, déclarant les schémas qu'elle tente d'interroger.
Pour clarifier les choses. Cela exclura-t-il de telles applications qui permettent à l'utilisateur d'entrer son propre schéma d'URL + l'exécuter?
Jonny
@Jonny Non, car vous pouvez toujours essayer d'ouvrir n'importe quelle URL en utilisant openURL:. Et il vous dira si l'ouverture a réussi ou non.
Leo Natan
Oui, mais canOpenURL ne peut pas être utilisé, nous ne pouvons donc pas dire à l'utilisateur si cela fonctionnera ou non, il doit juste essayer par lui-même.
Jonny
Je veux ouvrir Google Maps, que dois-je mettre dans le urlscheme?
codage22
25
En supposant deux applications TestA et TestB. TestB veut demander si TestA est installé. "TestA" définit le schéma d'URL suivant dans son fichier info.plist:
Mais cela retournera normalement NON dans iOS9 car "TestA" doit être ajouté à l'entrée LSApplicationQueriesSchemes dans le fichier info.plist de TestB. Cela se fait en ajoutant le code suivant au fichier info.plist de TestB:
attendez, la valeur de chaîne de la clé LSApplicationQueriesSchemes ne devrait-elle pas être «testA» dans into.plist de l'application TestB?
Nik Yekimov
22
De, Session 703 WWDC 2015:
Vous pouvez continuer à utiliser des schémas d'URL lorsque vous créez votre application pour iOS 9 et que vous souhaitez appeler des schémas d'URL, vous devrez maintenant les déclarer dans vos applications Info.plist. Il y a une nouvelle clé, LSApplicationQueriesSchemeset ici vous devrez ajouter la liste des schémas sur lesquels vous souhaitez que canOpenURL.
Ouais, ce n'est pas ça. Cela ne fonctionnera toujours pas avec comgooglemaps, même avec info.plist
Radu
avez-vous trouvé une solution à cela?
Salman Hasrat Khan
1
une image vaut 1000 mots. merci pour la capture d'écran. c'était tout ce dont j'avais besoin.
sean808080
3
Le partage Facebook à partir d'une boîte de dialogue de partage échoue même avec la réponse @Matthieu (qui est 100% correcte pour le reste des URL sociales). J'ai dû ajouter un ensemble d'URL que j'ai inversé du SDK Facebook.
Il est important de noter qu'il y avait un bogue avec les téléphones jailbreakés sur 9.0.x qui cassait les schémas d'URL. Si vous utilisez un appareil jailbreaké, assurez-vous de mettre à jour Patcyh dans Cydia
Eh bien, vous pouvez ouvrir une application en appelant openURL:ou openURL:options:completionHandler:(à partir d'iOS 10) directement sans effectuer la vérification conditionnelle canOpenURL:. Veuillez lire la section de discussion dans le document Apple pour la méthode canOpenURL: qui dit:
la méthode openURL: n'est pas contrainte par l' LSApplicationQueriesSchemesexigence.
Il semble que personne ne se soit demandé comment spécifier des URL avec des paramètres intégrés. Toute URL contenant des paramètres, il ne sera pas possible de spécifier l'URL spécifique dans LSApplicationsQueriesSchemes. Par exemple, supposons que je dispose d'une application de messagerie qui transmet l'adresse e-mail des expéditeurs:
Hein? Ce que vous devez ajouter dans le plist est myemail. Les paramètres ne jouent aucun rôle ici.
Leo Natan
0
Apple a changé la méthode canOpenURL sur iOS 9. Les applications qui vérifient les schémas d'URL sur iOS 9 et iOS 10 doivent déclarer ces schémas au fur et à mesure qu'ils sont soumis à Apple.
Lorsque j'ai essayé d'appeler Facebook à partir de ma propre application aujourd'hui, j'ai trouvé qu'il n'y avait pas de LSApplicationQueriesSchemesclé que je pouvais ajouter au Info.plist(Xcode Version 8.2.1 (8C1002)). J'ai ouvert le Info.plistavec Sublime Text et l' ai ajouté manuellement dans le fichier, puis cela a fonctionné. Juste pour vous faire savoir que si vous ne trouvez pas la clé, ajoutez-la simplement vous-même.
+canOpenURL:
revient?Réponses:
iOS 9 a apporté une petite modification à la gestion du schéma d'URL. Vous devez ajouter à la liste blanche les URL que votre application appellera à l'aide de la
LSApplicationQueriesSchemes
clé de votreInfo.plist
.Veuillez consulter le message ici: http://awkwardhare.com/post/121196006730/quick-take-on-ios-9-url-scheme-changes
La principale conclusion est que:
L'auteur spécule également qu'il s'agit d'un bogue avec le système d'exploitation et Apple le corrigera dans une version ultérieure.
la source
-openURL:
fonctionne toujours même s'il-canOpenURL:
est limité.Comme dit plus haut, vous souhaitez ajouter une clé dans la liste d'informations, voici la liste de la plupart des réseaux sociaux
* Les 3 premiers matchs Facebook (FBSDK 4.6): fbapi, fbauth2, fbshareextension. "Ha" est pour Snapchat
la source
Ha://add/[username]
pour ajouter des amis Snapchat dans Swift 3Il s'agit d'une nouvelle fonctionnalité de sécurité d'iOS 9. Regardez la session 703 de la WWDC 2015 pour plus d'informations.
Toute application créée avec le SDK 9 doit fournir une
LSApplicationQueriesSchemes
entrée dans son fichier plist, déclarant les schémas qu'elle tente d'interroger.la source
openURL:
. Et il vous dira si l'ouverture a réussi ou non.En supposant deux applications TestA et TestB. TestB veut demander si TestA est installé. "TestA" définit le schéma d'URL suivant dans son fichier info.plist:
La deuxième application "TestB" tente de savoir si "TestA" est installé en appelant:
Mais cela retournera normalement NON dans iOS9 car "TestA" doit être ajouté à l'entrée LSApplicationQueriesSchemes dans le fichier info.plist de TestB. Cela se fait en ajoutant le code suivant au fichier info.plist de TestB:
Une implémentation fonctionnelle peut être trouvée ici: https://github.com/gatzsche/LSApplicationQueriesSchemes-Working-Example
la source
De, Session 703 WWDC 2015:
la source
Le partage Facebook à partir d'une boîte de dialogue de partage échoue même avec la réponse @Matthieu (qui est 100% correcte pour le reste des URL sociales). J'ai dû ajouter un ensemble d'URL que j'ai inversé du SDK Facebook.
la source
Dans Swift 4.2 et Xcode 10.1
Dans info.plist, vous devez ajouter CFBundleURLSchemes et LSApplicationQueriesSchemes.
-> Sélectionnez info.plist dans votre projet,
-> clic droit,
-> Sélectionnez Ouvrir en tant que code source
Voir la capture d'écran ci-dessous
-> le fichier xml sera ouvert
-> copier - coller ci-dessous le code et le remplacer par vos identifiants
CFBundleURLSchemes et LSApplicationQueriesSchemes pour gmail, fb, twitter et liés dans.
Voir l'écran ci-dessous, votre fichier info.plist final est
la source
Il est important de noter qu'il y avait un bogue avec les téléphones jailbreakés sur 9.0.x qui cassait les schémas d'URL. Si vous utilisez un appareil jailbreaké, assurez-vous de mettre à jour Patcyh dans Cydia
la source
Eh bien, vous pouvez ouvrir une application en appelant
openURL:
ouopenURL:options:completionHandler:
(à partir d'iOS 10) directement sans effectuer la vérification conditionnellecanOpenURL:
. Veuillez lire la section de discussion dans le document Apple pour la méthode canOpenURL: qui dit:la source
Il semble que personne ne se soit demandé comment spécifier des URL avec des paramètres intégrés. Toute URL contenant des paramètres, il ne sera pas possible de spécifier l'URL spécifique dans LSApplicationsQueriesSchemes. Par exemple, supposons que je dispose d'une application de messagerie qui transmet l'adresse e-mail des expéditeurs:
La seule façon de le faire fonctionner dans iOS9 est de supprimer tous les paramètres.
la source
myemail
. Les paramètres ne jouent aucun rôle ici.Apple a changé la méthode canOpenURL sur iOS 9. Les applications qui vérifient les schémas d'URL sur iOS 9 et iOS 10 doivent déclarer ces schémas au fur et à mesure qu'ils sont soumis à Apple.
la source
Pour PayPal, ajoutez ci-dessous les schémas d'URL:
Référez ce lien
la source
Swift 3.1, Swift 3.2, Swift 4
Ajoutez-les dans Info.plist:
la source
Lorsque j'ai essayé d'appeler Facebook à partir de ma propre application aujourd'hui, j'ai trouvé qu'il n'y avait pas de
LSApplicationQueriesSchemes
clé que je pouvais ajouter auInfo.plist
(Xcode Version 8.2.1 (8C1002)). J'ai ouvert leInfo.plist
avec Sublime Text et l' ai ajouté manuellement dans le fichier, puis cela a fonctionné. Juste pour vous faire savoir que si vous ne trouvez pas la clé, ajoutez-la simplement vous-même.la source