Mettre à niveau votre application vers iOS 10

Dans cet article, je voudrais parler d’iOS 10 et de ce que vous devez faire pour préparer vos applications pour iOS 10.. 

Comme avec toutes les versions majeures, iOS 10 introduit une multitude de modifications et d'améliorations. Certaines sont requises, d'autres sont recommandées et quelques modifications peuvent également améliorer l'expérience utilisateur de votre application. Commençons par un aperçu de ce qui est requis si vous construisez votre application avec le SDK iOS 10..

1. La sécurité du transport d'applications arrive

Le changement le plus important n'est pas strictement lié à iOS 10, mais il est suffisamment important pour que je veuille en discuter en premier. Même si App Transport Security (ATS) existe depuis iOS 9, il a toujours été facile de désactiver ATS en ajoutant l'extrait de code suivant à celui de votre cible. Info.plist.

NSAppTransportSecurity  NSAllowsArbitraryLoads  

Mais c'est sur le point de changer. Le 1er janvier 2017, chaque application soumise sur l'App Store, y compris les mises à jour d'applications existantes, devra être conforme aux directives de l'ATS. Cela signifie que votre application doit communiquer en toute sécurité avec les services Web via HTTPS..

Si vous lisez ma discussion détaillée sur App Transport Security, vous vous souviendrez peut-être qu'App Transport Security définit un ensemble de règles. Les serveurs avec lesquels votre application communique doivent respecter ces règles. En d'autres termes, les requêtes réseau via HTTPS ne suffisent pas. Chaque serveur auquel votre application communique doit être sécurisé et conforme aux normes de sécurité modernes..

Vous pouvez toujours définir des domaines d’exception dans la cible. Info.plist, mais il n'est plus autorisé à se retirer de App Transport Security.

Connexions au réseau local

J'ai récemment rencontré un problème lié à App Transport Security. L'application d'un client devait communiquer avec d'autres périphériques du même réseau. Il communique avec d'autres périphériques à l'aide de leur adresse IP, qui n'est pas prise en charge par les domaines d'exception App Transport Security. Et pour compliquer encore les choses, l'adresse IP d'un périphérique n'est pas corrigée. Cela peut et va changer avec le temps.

Heureusement, avec iOS 10, il est possible de résoudre ce problème en ajoutant une paire clé-valeur supplémentaire à la NSAppTransportSecurity dictionnaire dans la cible Info.plist. En fixant la valeur de NSAllowsLocalNetworking à OUI, il est possible de désactiver App Transport Security pour le trafic réseau local.

Autres options

Si vous avez déjà eu des problèmes avec App Transport Security dans le passé, nous vous recommandons de consulter la documentation mise à jour de App Transport Security. Apple a ajouté quelques clés supplémentaires qui facilitent le travail avec ATS.

Par exemple, de nombreuses applications chargent du contenu à partir du Web dans un affichage Web. Votre application ne sait souvent pas quels sites Web l'utilisateur va visiter, ce qui rend impossible la définition de domaines d'exception pour App Transport Security dans la cible. Info.plist. À partir de iOS 10, vous pouvez désactiver App Transport Security pour les vues Web en définissant NSAllowsArbitraryLoadsInWebContent à OUI dans la cible Info.plist.

La sécurité du transport d'application est requise

Ce qu'il ne faut pas oublier, c'est qu'App Transport Security est requis pour toute application soumise à l'App Store après le 31 décembre. Désactiver App Transport Security n'est plus possible. Notez que l'équipe de révision de l'App Store a besoin d'une explication de votre part si vous vous désengagez partiellement d'App Transport Security à l'aide d'une exception, telle que NSAllowsLocalNetworking ou NSAllowsArbitraryLoadsInWebContent. Vous pouvez en savoir plus à ce sujet dans la documentation Apple.

2. Confidentialité

Apple continue d'investir dans la protection de la vie privée de ses clients. Cet engagement a également des conséquences pour les développeurs. Qu'est-ce que cela signifie pour vous?

Si votre application accède à un service système ou à une fonctionnalité de périphérique nécessitant l'autorisation explicite de l'utilisateur, celui-ci voit une alerte système dans laquelle l'application demande l'autorisation de l'utilisateur. Auparavant, le contenu de cette alerte était fourni par le système d'exploitation si votre application n'en spécifiait aucune. Cela a changé dans iOS 10.

À partir de iOS 10, votre application doit indiquer à l'utilisateur pourquoi elle a besoin d'accéder à un service système ou à une fonctionnalité de périphérique spécifique. Vous faites cela en ajoutant une clé à la cible Info.plist. Si votre application est localisée, vous devez également fournir une traduction de la description dans le InfoPlist.strings fichier.

Voici une liste complète des clés de confidentialité disponibles dans iOS 10. La plupart d'entre elles doivent vous paraître familières, mais certaines sont nouvelles dans iOS 10, telles que NSSiriUsageDescription et NSAppleMusicUsageDescription.

  • HealthKit
    • NSHealthShareUsageDescription
    • NSHealthUpdateUsageDescription
  • Emplacement
    • NSLocationUsageDescription
    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseUsageDescription
  • NSBluetoothPeripheralUsageDescription
  • NSCalendarsUsageDescription
  • NSVoIPUsageDescription
  • NSCameraUsageDescription
  • NSContactsUsageDescription
  • NSHomeKitUsageDescription
  • NSAppleMusicUsageDescription
  • NSMicrophoneUsageDescription
  • NSMotionUsageDescription
  • NSPhotoLibraryUsageDescription
  • NSRemindersUsageDescription
  • NSSpeechRecognitionUsageDescription
  • NSSiriUsageDescription
  • NSVideoSubscriberAccountUsageDescription

Si vous n'ajoutez pas de description d'utilisation pour les services système et les fonctionnalités de périphérique utilisés par votre application, un avertissement s'affiche dans la console et l'alerte système qui demande à l'utilisateur une autorisation ne lui est pas affichée. Par conséquent, votre application se voit refuser l'accès à ce service ou à cette capacité.

"Cette application a tenté d'accéder à des données confidentielles sans description d'utilisation. L'info.plist de l'application doit contenir une clé NSLocationAlwaysUsageDescription avec une valeur de chaîne expliquant à l'utilisateur comment l'application utilise ces données."

Il va sans dire que l'équipe de révision de l'App Store rejette toute application qui enfreint cette règle. En fait, les versions téléchargées sur l'App Store qui ne respectent pas cette stratégie sont automatiquement rejetées..

Si vous utilisez une bibliothèque ou une structure tierce dans votre application, assurez-vous que les descriptions d'utilisation correctes sont ajoutées à la cible. Info.plist. Les bibliothèques et les frameworks pour les annonces nécessitent souvent plusieurs autorisations que vous ne pouvez pas espérer ou connaître..

3. Swift 3

Si vous ouvrez un projet existant pour la première fois dans Xcode 8 et qu'il contient Swift, il vous est demandé de migrer vers Swift 3. Si vous ne vous sentez pas encore prêt, Xcode vous demande de migrer vers Swift 2.3 à la place. Vous devez choisir l’une ou l’autre, car Xcode 8 ne prend en charge que ces versions de la langue Swift. Swift 2.2.1 et Swift 2.3 sont très similaires. La différence la plus importante est que Swift 2.3 est compatible avec iOS 10, tvOS 10, watchOS 3 et macOS 10.12..

Devriez-vous migrer aujourd'hui??

Devez-vous migrer vers Swift 3 aujourd'hui? Probablement pas. Mais n'attendez pas trop longtemps. À un moment donné, Apple demandera aux développeurs de soumettre leurs applications avec Xcode 8, qui ne prend pas en charge Swift 2.2.1. Vous pouvez vous en tenir à Swift 2.3, mais pourquoi ne feriez-vous pas ce saut??

Il est vrai que la migration d'un projet vers Swift 3 a un impact considérable sur la base de code de votre projet. Presque toutes les lignes de code changent d’une manière ou d’une autre. Les modifications de l'API sont substantielles. Mais l’avantage, c’est que vous utilisiez Swift 3. J'utilise Swift 3 depuis plusieurs mois et j’adore ça. C'est une amélioration majeure par rapport à Swift 2.2.1 et Swift 2.3..

Planifier à l'avance

Si vous travaillez sur un projet volumineux pour un client, veillez à bien planifier la migration vers Swift 3. La migration peut prendre plusieurs jours pour les projets complexes. Les avantages sont que vous pouvez commencer à utiliser l'API Swift 3 et que vous bénéficiez également du compilateur Swift 3 amélioré optimisé par LLVM et Clang..

4. Améliorations et obsolètes

Avec chaque version majeure d'iOS, Apple améliore la plate-forme en ajoutant et en supprimant des API. Plusieurs cadres ont fait l’objet d’une mise à jour importante et la société a également introduit plusieurs nouveaux cadres..

Pourquoi est-ce important? Si vous souhaitez vous démarquer dans l'App Store, il est rentable de garder vos applications à jour et d'ajouter une prise en charge des nouvelles fonctionnalités de la plate-forme. C'est ce que cette section est à propos.

Notifications utilisateur

le UILocalNotification class est obsolète à partir de iOS 10. Qu'est-ce que cela signifie pour vous? Vous pouvez toujours utiliser UILocalNotification pour planifier et gérer les notifications locales, mais cela disparaîtra probablement à un moment donné. Mais pourquoi Apple a-t-il décidé de déconseiller UILocalNotification? Cela a bien fonctionné?

Dans iOS 10, Apple a présenté le Notifications utilisateur cadre. Comme son nom l'indique, le cadre est chargé de la planification, de la gestion et du traitement des notifications., local et distant. C'est ce qui rend le cadre génial. Votre application n'a plus besoin de faire la distinction entre les notifications locales et distantes. La structure de notifications utilisateur offre une API unifiée pour la gestion des notifications locales et distantes..

L'API a l'air et se sent très bien. La structure traite les notifications locales et distantes de la même manière du point de vue du développeur, ce qui facilite l’ajout et la transparence des actions de notification. La gestion des actions de notification est centralisée dans un protocole de délégué concis. 

Nous avons quelques tutoriels sur le framework User Notifications ici sur Envato Tuts+!

  • Une introduction au framework UserNotifications

    Dans ce didacticiel, vous découvrirez le nouveau cadre UserNotifications sous iOS 10, tvOS 10 et watchOS 3. Ce nouveau cadre fournit un ensemble moderne de…
    Davis Allie
    iOS
  • iOS 10: Création d'interfaces de notification personnalisées

    Dans ce didacticiel, vous apprendrez à utiliser le nouveau framework UserNotificationsUI dans iOS 10 pour créer des interfaces personnalisées pour les applications locales et…
    Davis Allie
    SDK iOS

Vous pouvez également être intéressé par mes récents articles de blog sur la planification des notifications locales et des actions de notification avec la structure de notifications d'utilisateurs.. 

SiriKit

L'une des annonces les plus importantes de la WWDC de cette année était la possibilité d'intégrer votre application à Siri via SiriKit. Même si les options sont limitées pour le moment, si votre application correspond à l’une des catégories prises en charge, c’est un excellent moyen de la distinguer de la concurrence. Siri prend actuellement en charge un nombre limité de domaines, notamment les appels VoIP, la messagerie et les entraînements..

Vous intégrez Siri en ajoutant une extension à votre application. Chaque application intégrant Siri doit ajouter un extension des intentions. Il permet à votre application d’effectuer une tâche en réponse aux informations que Siri envoie à votre application. Vous pouvez éventuellement créer un extension de l'interface utilisateur personnaliser l'apparence de l'interface utilisateur résultante qui est présentée à l'utilisateur une fois la tâche terminée.

Retour haptique

Le tout nouveau moteur haptique de l'iPhone 7 et de l'iPhone 7 Plus a ouvert de nombreuses nouvelles possibilités aux développeurs. Dans iOS 10, il est possible d’utiliser le moteur haptique de l’appareil pour fournir à l’utilisateur un retour tactile lorsqu’il exécute une action spécifique ou lorsqu'un événement particulier se produit..

Votre application peut piloter le moteur haptique via le UIFeedbackGenerator classe et ses trois sous-classes concrètes:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Chaque UIFeedbackGenerator La sous-classe est conçue pour un scénario spécifique. Si vous ajoutez le support pour le moteur haptique, vous allez certainement épater les utilisateurs de votre application. Essaie.

Données de base

Core Data est probablement mon framework Cocoa préféré, et Apple l'a rendu encore plus impressionnant sur iOS 10 et avec la sortie de Swift 3. Il s'agit de la plus grande mise à jour que le framework ait connue ces dernières années..

Swift 3 et Xcode 8 unissent leurs efforts pour rendre Core Data plus facile à utiliser que jamais. Apple a également présenté le NSPersistentContainer classe, ce qui rend la configuration et la gestion d'une pile de données centrale un jeu d'enfant.

La société a même revu les bases du framework en repensant l’interaction du framework avec SQLite. Les résultats sont vraiment fantastiques. Il est bon de voir qu'Apple continue d'investir dans Core Data, plus de dix ans après son introduction sur macOS Tiger..

Pour en savoir plus sur les données de base, consultez certains de nos autres cours et tutoriels ici sur Envato Tuts.+.

Que devrais tu faire?

Si vous construisez votre application avec iOS 10 SDK, ce qui signifie que vous utilisez Xcode 8, vous devez vous assurer que vous vous conformez à App Transport Security et aux consignes de confidentialité mises en place par Apple. Assurez-vous de cocher ces cases en premier.

Bien que les autres améliorations et améliorations soient facultatives, je vous encourage à les consulter. Par exemple, n'attendez pas trop longtemps pour migrer vers Swift 3. Vous pourriez surprendre vos utilisateurs en ajoutant la prise en charge du moteur haptique. C'est facultatif, mais c'est une opportunité de se démarquer dans l'App Store aujourd'hui très peuplé..

Pour en savoir plus sur Swift 3 ou iOS 10, consultez certains de nos autres cours et tutoriels..