Upgrade uw app naar iOS 10

In dit artikel wil ik het hebben over iOS 10 en wat u moet doen om uw apps voor iOS 10 voor te bereiden. 

Zoals met elke belangrijke release introduceert iOS 10 een hele reeks wijzigingen en verbeteringen. Sommige zijn vereist, andere worden aanbevolen en er zijn ook enkele wijzigingen die de gebruikservaring van uw toepassing kunnen verbeteren. Laten we beginnen met een overzicht van wat er nodig is als u uw toepassing bouwt tegen de iOS 10 SDK.

1. App Transport Security komt eraan

De belangrijkste verandering is niet strikt gerelateerd aan iOS 10, maar het is belangrijk dat ik het eerst wil bespreken. Hoewel App Transport Security (ATS) al bestaat sinds iOS 9, was het altijd gemakkelijk om je af te melden voor ATS door het volgende fragment toe te voegen aan je doelwitten. Info.plist.

NSAppTransportSecurity  NSAllowsArbitraryLoads  

Maar dat staat op het punt te veranderen. Op 1 januari 2017 moet elke applicatie die wordt ingediend bij de App Store, inclusief updates van bestaande applicaties, voldoen aan de ATS-richtlijnen. Dit betekent dat uw applicatie verplicht is om veilig te communiceren met webservices via HTTPS.

Als je mijn gedetailleerde bespreking van App Transport Security hebt gelezen, weet je misschien nog dat App Transport Security een reeks regels definieert. De servers waarmee uw toepassing communiceert, moeten aan die regels voldoen. Met andere woorden, het maken van netwerkverzoeken via HTTPS is niet voldoende. Elke server waarmee uw toepassing spreekt, moet worden beveiligd door en voldoen aan de moderne beveiligingsnormen.

U kunt nog steeds uitzonderingsdomeinen in de doelwitten definiëren Info.plist, maar het is niet langer toegestaan ​​om helemaal niet te kiezen voor App Transport Security.

Lokale netwerkverbindingen

Ik kwam onlangs een probleem tegen met betrekking tot App Transport Security. De toepassing van een client die nodig is om te communiceren met andere apparaten op hetzelfde netwerk. Het spreekt met andere apparaten met behulp van hun IP-adres, dat niet wordt ondersteund door uitzonderingsdomeinen van App Transport Security. En om het nog ingewikkelder te maken, is het IP-adres van een apparaat niet vast. Het kan en zal na verloop van tijd veranderen.

Gelukkig is het vanaf iOS 10 mogelijk om dit probleem op te lossen door een extra sleutel / waarde-paar toe te voegen aan de NSAppTransportSecurity woordenboek in de doelwitten Info.plist. Door de waarde in te stellen van NSAllowsLocalNetworking naar JA, het is mogelijk om App Transport Security uit te schakelen voor lokaal netwerkverkeer.

Andere opties

Als u in het verleden al eens met App Transport Security worstelde, raad ik u aan de bijgewerkte App Transport Security-documentatie te bekijken. Apple heeft een paar extra toetsen toegevoegd die het werken met ATS minder hoofdpijn bezorgen.

Veel toepassingen laden bijvoorbeeld inhoud van internet in een webweergave. Uw applicatie weet vaak niet welke websites de gebruiker gaat bezoeken, wat het onmogelijk maakt om uitzonderingsdomeinen voor App Transport Security in de doelwitten te definiëren Info.plist. Vanaf iOS 10 kun je App Transport Security uitschakelen voor webweergaven door in te stellen NSAllowsArbitraryLoadsInWebContent naar JA in de doelwitten Info.plist.

App Transport Security is vereist

Wat u moet onthouden, is dat App Transport Security vereist is voor elke toepassing die na 31 december bij de App Store wordt ingediend. Afmelden voor App Transport Security is niet langer mogelijk. Houd er rekening mee dat het App Store-beoordelingsteam een ​​uitleg van u nodig heeft als u zich gedeeltelijk afmeldt voor App Transport Security door een uitzondering te gebruiken, zoals NSAllowsLocalNetworking of NSAllowsArbitraryLoadsInWebContent. U kunt hierover meer lezen in de documentatie van Apple.

2. Privacy

Apple blijft investeren in de bescherming van de privacy van zijn klanten, en die betrokkenheid heeft ook consequenties voor ontwikkelaars. Wat betekent dat voor jou??

Als uw toepassing toegang heeft tot een systeemservice of apparaatmogelijkheid waarvoor de gebruiker expliciete toestemming nodig heeft, ziet de gebruiker een systeemwaarschuwing waarin de toepassing om de toestemming van de gebruiker vraagt. De inhoud van die waarschuwing werd vroeger door het besturingssysteem geleverd als uw toepassing er geen specificeerde. Dit is veranderd in iOS 10.

Vanaf iOS 10 moet uw toepassing de gebruiker vertellen waarom hij toegang tot een bepaalde systeemdienst of apparaatmogelijkheid nodig heeft. U doet dit door een sleutel toe te voegen aan de doelwitten Info.plist. Als uw toepassing gelokaliseerd is, moet u ook een vertaling voor de beschrijving in de InfoPlist.strings het dossier.

Hier is een volledige lijst van de privacysleutels die beschikbaar zijn in iOS 10. De meeste moeten bekend voorkomen, maar sommige zijn nieuw in iOS 10, zoals NSSiriUsageDescription en NSAppleMusicUsageDescription.

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

Als u geen gebruiksbeschrijving toevoegt voor de systeemservices en apparaatfuncties die uw toepassing gebruikt, wordt een waarschuwing weergegeven in de console en wordt de systeemwaarschuwing die de gebruiker om toestemming vraagt ​​niet getoond aan de gebruiker. Als gevolg hiervan is uw toepassing de toegang tot die specifieke service of mogelijkheid ontzegd.

"Deze app heeft geprobeerd toegang te krijgen tot privacygevoelige gegevens zonder een gebruikersbeschrijving.De Info.plist van de app moet een NSLocationAlwaysUsageDescription-sleutel bevatten met een tekenreekswaarde die de gebruiker uitlegt hoe de app deze gegevens gebruikt."

Het spreekt vanzelf dat het App Store-beoordelingsteam toepassingen die in strijd zijn met dit beleid, afkeurt. In feite worden builds die naar de App Store zijn geüpload en die niet aan dit beleid voldoen, automatisch geweigerd.

Als u een bibliotheek of raamwerk van derden in uw toepassing gebruikt, zorg er dan voor dat de juiste gebruiksomschrijvingen aan de doelwitten worden toegevoegd Info.plist. Bibliotheken en frameworks voor advertenties vereisen vaak verschillende rechten die u mogelijk niet verwacht of waarvan u weet.

3. Snel 3

Als u een bestaand project voor het eerst opent in Xcode 8 en Swift bevat, wordt u gevraagd om te migreren naar Swift 3. Als u zich nog niet helemaal klaar voelt, vraagt ​​Xcode u om naar Swift 2.3 te migreren. Je moet een van de twee kiezen, omdat Xcode 8 alleen deze versies van de Swift-taal ondersteunt. Swift 2.2.1 en Swift 2.3 lijken erg op elkaar. Het belangrijkste verschil is dat Swift 2.3 compatibel is met iOS 10, tvOS 10, watchOS 3 en macOS 10.12.

Moet je vandaag migreren?

Moet u vandaag migreren naar Swift 3? Waarschijnlijk niet. Maar wacht niet te lang. Op een gegeven moment zal Apple van ontwikkelaars eisen dat ze applicaties indienen met Xcode 8, die Swift 2.2.1 niet ondersteunt. Je zou bij Swift 2.3 kunnen blijven, maar waarom zou je niet gewoon de sprong maken?

Het is waar dat het migreren van een project naar Swift 3 een dramatische impact heeft op de codebase van uw project. Bijna elke regel code verandert op de een of andere manier. De API-wijzigingen zijn aanzienlijk. Maar het voordeel is dat je Swift 3 kunt gebruiken. Ik gebruik Swift 3 al enkele maanden en ik ben er dol op. Het is een grote verbetering ten opzichte van Swift 2.2.1 en Swift 2.3.

Vooruit plannen

Als u aan een groot project voor een klant werkt, zorg dan dat u de migratie naar Swift 3 zorgvuldig plant. Voor complexe projecten kan de migratie enkele dagen duren. De voordelen hiervan zijn dat u de Swift 3 API kunt gebruiken en dat u ook profiteert van de verbeterde Swift 3-compiler van LLVM en Clang.

4. Verbeteringen en afschrijvingen

Met elke grote release van iOS verbetert Apple het platform door API's toe te voegen en te verwijderen. Verschillende frameworks hebben een belangrijke update gekregen en het bedrijf heeft ook verschillende nieuwe frameworks geïntroduceerd.

Waarom is dat belangrijk? Als je wilt opvallen in de App Store, loont het om je applicaties up-to-date te houden en ondersteuning toe te voegen voor nieuwe functies van het platform. Dat is waar deze sectie over gaat.

Gebruikersmeldingen

De UILocalNotification klasse is verouderd vanaf iOS 10. Wat betekent dit voor jou? Je kunt nog steeds gebruiken UILocalNotification om lokale meldingen in te plannen en te beheren, maar deze zal waarschijnlijk op een gegeven moment verdwijnen. Maar waarom heeft Apple besloten te walgen? UILocalNotification? Het werkte prima, goed?

In iOS 10 introduceerde Apple de Gebruikersmeldingen kader. Zoals de naam al aangeeft, is het framework verantwoordelijk voor het plannen, beheren en verwerken van meldingen, lokaal en op afstand. Dat is wat het framework geweldig maakt. Uw toepassing hoeft niet langer een onderscheid te maken tussen lokale en externe meldingen. Het kader voor gebruikersmeldingen biedt een uniforme API voor het afhandelen van lokale en externe meldingen.

De API ziet er en voelt erg prettig aan. Het framework behandelt lokale en externe meldingen op dezelfde manier vanuit het perspectief van een ontwikkelaar, waardoor het toevoegen van meldingsacties eenvoudig en transparant is. Het afhandelen van kennisgevingsacties wordt gecentraliseerd in een beknopt gedelegeerde protocol. 

We hebben een aantal tutorials over het gebruikerskennisgeving-kader hier op Envato Tuts+!

  • Een inleiding tot het UserNotifications Framework

    In deze tutorial leer je over het nieuwe UserNotifications-framework in iOS 10, tvOS 10 en watchOS 3. Dit nieuwe framework biedt een moderne set van ...
    Davis Allie
    iOS
  • iOS 10: aangepaste meldingsinterfaces maken

    In deze zelfstudie leert u hoe u het nieuwe UserNotificationsUI-framework in iOS 10 kunt gebruiken om aangepaste interfaces voor de lokale en push-instellingen van uw app te maken ...
    Davis Allie
    iOS SDK

Mogelijk bent u ook geïnteresseerd in mijn recente blogberichten over het plannen van lokale meldingen en meldingsacties met het kader voor gebruikersmeldingen. 

Sirikit

Een van de grotere aankondigingen tijdens de WWDC van dit jaar was de mogelijkheid om je applicatie te integreren met Siri via SiriKit. Hoewel de opties voorlopig beperkt zijn, als uw toepassing in een van de ondersteunde categorieën past, is dit een geweldige manier om uw toepassing te onderscheiden van de concurrentie. Siri ondersteunt momenteel een beperkt aantal domeinen, waaronder VoIP-oproepen, berichtenuitwisseling en workouts.

U integreert met Siri door een extensie toe te voegen aan uw applicatie. Elke applicatie die met Siri wordt geïntegreerd, moet een intenties extensie. Hiermee kan uw toepassing een taak uitvoeren in reactie op informatie die Siri naar uw toepassing stuurt. U kunt optioneel een maken intenties UI-extensie om het uiterlijk van de resulterende gebruikersinterface aan te passen die aan de gebruiker wordt gepresenteerd nadat de taak is voltooid.

Haptische feedback

De gloednieuwe haptische engine van iPhone 7 en iPhone 7 Plus heeft veel nieuwe mogelijkheden voor ontwikkelaars geopend. In iOS 10 is het mogelijk om de haptische engine van het apparaat te gebruiken om de gebruiker voelbare feedback te geven wanneer ze een specifieke actie uitvoeren of een bepaalde gebeurtenis plaatsvindt.

Uw applicatie kan de haptische engine via de UIFeedbackGenerator klasse en zijn drie concrete subklassen:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Elk UIFeedbackGenerator subklasse is ontworpen voor een specifiek scenario. Als u ondersteuning voor de haptische engine toevoegt, zult u de gebruikers van uw toepassing zeker verbazen. Probeer het eens.

Kerngegevens

Core Data is waarschijnlijk mijn favoriete cacaoraamwerk en Apple heeft het nog indrukwekkender gemaakt op iOS 10 en met de release van Swift 3. Dit is de grootste update die het framework de afgelopen jaren heeft gezien.

Swift 3 en Xcode 8 bundelen hun krachten om Core Data gemakkelijker te gebruiken dan ooit tevoren. Apple introduceerde ook de NSPersistentContainer klasse, waardoor het instellen en beheren van een Core Data-stack een koud kunstje is.

Het bedrijf heeft zelfs de onderbouwing van het framework vernieuwd door de interactie van het framework met SQLite opnieuw te bekijken. De resultaten zijn echt fantastisch. Het is geweldig om te zien dat Apple blijft investeren in Core Data, meer dan tien jaar na de introductie ervan op macOS Tiger.

Bekijk enkele van onze andere cursussen en zelfstudies hier op Envato Tuts voor meer informatie over basisgegevens+.

Wat zou je moeten doen?

Als je je applicatie bouwt tegen de iOS 10 SDK, wat betekent dat je Xcode 8 gebruikt, dan moet je ervoor zorgen dat je voldoet aan App Transport Security en de privacyrichtlijnen die Apple heeft opgesteld. Zorg ervoor dat u eerst deze vakjes aanvinkt.

Hoewel de andere verbeteringen en verbeteringen optioneel zijn, raad ik u aan deze te bekijken. Wacht bijvoorbeeld niet te lang om te migreren naar Swift 3. U kunt uw gebruikers verrassen door ondersteuning voor de haptische engine toe te voegen. Het is optioneel, maar het is een kans om op te vallen in de overvolle App Store van vandaag.

Raadpleeg enkele van onze andere cursussen en zelfstudies voor meer informatie over Swift 3 of iOS 10.