Schémas de confidentialité et d’URL dans iOS 9

Depuis iOS 9, les applications tierces ne sont plus en mesure d’interroger des schémas d’URL arbitraires. Plusieurs applications tierces, notamment Twitter, ont abusé du canOpenURL(_:) méthode de la UIApplication class pour suivre les applications installées sur un appareil particulier.

Apple a mis en place un certain nombre de restrictions pour protéger la vie privée de ses clients. Dans ce petit conseil, je vous dis ce que vous devez savoir sur ces changements et je vous montre comment mettre à jour vos applications.

1. Interroger des schémas d’URL

Je suppose que vous savez déjà qu’une application iOS peut demander au système d’exploitation de lancer une autre application à l’aide d’un schéma d’URL. Dans sa forme la plus simple, cela fonctionne quelque chose comme ça.

Parfois, il est utile de demander d’abord au système d’exploitation si une URL peut être ouverte avant de l’ouvrir. Ceci est particulièrement utile si vous souhaitez mettre à jour l’interface utilisateur en fonction des applications que l’utilisateur a installées et avec lesquelles votre application peut interagir. Dans l’exemple ci-dessus, openURL(_:) ne réussira pas si Tweetbot n’est pas installé sur l’appareil de l’utilisateur. Pour demander au système d’exploitation si une URL peut être ouverte, vous pouvez utiliser le canOpenURL(_:) méthode de la UIApplication classe.

Malheureusement, certaines applications, notamment Twitter, ont abusé canOpenURL(_:) pour détecter les applications installées sur l’appareil de l’utilisateur. Selon Apple, cela viole la vie privée de l’utilisateur. Du coup, Apple ne tolère plus ce type d’abus dans iOS 9 en imposant deux restrictions.

  • Les applications créées avec le SDK iOS 9 sont obligées de mettre sur liste blanche les schémas d’URL qu’elles souhaitent interroger. En d’autres termes, un appel à canOpenURL(_:) échoue si l’URL n’est pas ajoutée à une liste blanche dans l’application Info.plist.
  • Les applications non construites avec le SDK iOS 9 continuent de fonctionner comme prévu. Il y a cependant une limitation. Une application ne peut interroger que 50 schémas d’URL distincts. Retour des demandes ultérieures false et lancez une erreur. le Documentation souligne que cette limitation est réinitialisée lorsque l’utilisateur réinstalle ou met à niveau l’application.

2. Configuration du projet

Laissez-moi vous montrer ce que cela signifie en pratique en créant une application simple qui ouvre Tweetbot, mon client Twitter préféré. Créez un nouveau projet dans Xcode 7 et choisissez le Application à vue unique modèle. Nommez le projet Schémas Et mettre Langue à Rapide.

En relation :  Les 7 meilleures unités de tête automatique Android
Configuration du projet
Configuration du projet

Avant de jeter un œil aux schémas d’URL, je souhaite configurer l’interface utilisateur. Ouvert ViewController.swift et ajoutez une action, openTweetbot(_:), à la ViewController classe. Vous pouvez laisser son implémentation vide pour le moment.

Ouvert Main.storyboard et ajoutez un bouton au Voir la scène du contrôleur. Définissez le titre du bouton sur Ouvrez Tweetbot et connectez le bouton au contrôleur de vue openTweetbot(_:) action que nous avons créée plus tôt.

Configuration de l'interface utilisateur

Nous n’allons rien faire de trop compliqué. Quand je touche le Ouvrez Tweetbot bouton, le système d’exploitation ouvre Tweetbot, me montrant ma chronologie. Pour en savoir plus sur les schémas d’URL de Tweetbot, consultez le Tapbots site Internet.

3. Avant iOS 9

Avant qu’Apple n’impose les restrictions susmentionnées sur l’interrogation des schémas d’URL, vous pouvez effectuer les opérations suivantes:

Nous demandons au système d’exploitation s’il peut ouvrir l’URL que nous transmettons canOpenURL(_:). Si cette méthode retourne false sur iOS 8 et les versions antérieures, nous savons que l’application qui nous intéresse n’est pas installée sur l’appareil de l’utilisateur, en supposant que le schéma d’URL concerne une autre application. Cela peut être très utile, mais Apple souhaite mettre certaines restrictions sur l’API pour éviter les abus.

4. iOS 9

Si vous créez l’application dans Xcode 7 et appuyez sur le Ouvrez Tweetbot bouton, canOpenURL(_:) Retour false et le système d’exploitation renvoie une erreur qui ressemble à ceci:

Le système d’exploitation nous informe explicitement que l’application n’est pas autorisée à connaître s’il peut ouvrir l’URL à laquelle nous passons canOpenURL(_:). Cela ne signifie pas que l’application n’est pas autorisée à ouvrir l’URL que nous avons transmise openURL(_:), bien que.

Si vous mettez à jour l’implémentation de openTweetbot(_:) comme indiqué ci-dessous et que Tweetbot est installé, l’application est capable d’ouvrir Tweetbot lorsque le bouton est appuyé. Cela souligne qu’Apple souhaite limiter l’utilisation (abusive) de canOpenURL(_:), ne pas openURL(_:).

5. Schémas d’URL de liste blanche

Heureusement, il existe une solution simple à ce problème. À partir d’iOS 9, Apple demande aux développeurs de mettre sur liste blanche les schémas d’URL qu’une application souhaite interroger. C’est aussi simple que d’ajouter une entrée à l’application Info.plist.

En relation :  Vous avez oublié votre mot de passe Android? 5 façons de revenir

Ouvert Info.plist, ajoutez une clé nommée LSApplicationQueriesSchemeset définissez le type de la valeur sur Tableau. Ajouter un élément de type Chaîne au tableau et définissez sa valeur sur tweetbot.

Si nous revenons openTweetbot(_:) à son implémentation d’origine, nous sommes en mesure d’invoquer canOpenURL(_:) sans que le système d’exploitation ne nous lance des erreurs. Vous pouvez ajouter autant de schémas d’URL à votre application Info.plist.

Conclusion

La plupart des applications n’auront pas de problème avec la nouvelle politique d’Apple. Il est clair qu’Apple vise à protéger la vie privée de ses clients en limitant les informations que les applications peuvent extraire du système d’exploitation. Les applications sont mises en bac à sable sur iOS et Apple souhaite contrôler la quantité d’informations qu’une application peut extraire de l’environnement dans lequel vit le bac à sable.

Les schémas d’URL de liste blanche ne sont pas un gros problème pour la plupart des applications, mais cela peut devenir fastidieux si vous envisagez de créer un lanceur d’applications, tel que Centre de lancement Pro. Il est toujours possible de créer un lanceur tant que vous mettez en liste blanche chaque schéma d’URL que l’application souhaite interroger. Cela peut cependant être assez fastidieux.

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.