Actualizați aplicația la iOS 10

În acest articol, aș dori să vorbesc despre iOS 10 și ce trebuie să faceți pentru a vă pregăti aplicațiile pentru iOS 10. 

La fel ca în cazul fiecărei versiuni majore, iOS 10 introduce o serie de schimbări și îmbunătățiri. Unele sunt necesare, altele sunt recomandate și există și câteva modificări care pot îmbunătăți experiența utilizatorilor din aplicație. Să începem cu o prezentare generală a ceea ce este necesar dacă construiți aplicația dvs. împotriva kitului iOS 10 SDK.

1. Securitatea transportului de aplicații apare

Cea mai importantă modificare nu este strict legată de iOS 10, dar este destul de important să vreau să o discut mai întâi. Chiar dacă App Transport Security (ATS) a fost în jur de la iOS 9, a fost întotdeauna ușor să renunțați la ATS prin adăugarea următorului fragment la obiectivul dvs. Info.plist.

NSAppTransportSecurity  NSAllowsArbitraryLoads  

Dar este pe cale să se schimbe. La 1 ianuarie 2017, fiecare aplicație depusă la App Store, inclusiv actualizările aplicațiilor existente, va trebui să respecte regulamentul ATS. Aceasta înseamnă că aplicația dvs. este necesară pentru a comunica în siguranță cu serviciile web prin HTTPS.

Dacă ați citit discuția detaliată despre App Transport Security, atunci este posibil să rețineți că App Transport Security definește un set de reguli. Serverele pe care aplicația dvs. le comunică trebuie să respecte aceste reguli. Cu alte cuvinte, solicitarea de rețea prin HTTPS nu este suficientă. Fiecare server cu care vorbește aplicația dvs. trebuie să fie asigurat de standardele de securitate moderne și să respecte standardele de securitate moderne.

Totuși, puteți defini domenii de excepție în țintă Info.plist, dar nu mai este permisă excluderea în totalitate a securității transportului de aplicații.

Rețele locale de rețea

Recent am intrat într-o problemă legată de securitatea transportului de aplicații. Aplicația unui client este necesară pentru a comunica cu alte dispozitive din aceeași rețea. Vorbește cu alte dispozitive care utilizează adresa lor IP, care nu este acceptată de domeniile de excepție ale App Transport Security. Și pentru a face lucrurile și mai complicate, adresa IP a unui dispozitiv nu este fixată. Se poate și se va schimba în timp.

Din fericire, din iOS 10, este posibil să rezolvați această problemă adăugând o pereche suplimentară cheie-valoare către NSAppTransportSecurity dicționar în țintă Info.plist. Prin setarea valorii NSAllowsLocalNetworking la DA, este posibil să dezactivați Securitatea transportului de aplicații pentru traficul de rețea local.

Alte optiuni

Dacă v-ați confruntat în trecut cu App Transport Security, vă recomandăm să aruncați o privire la documentația actualizată a App Transport Security. Apple a adăugat câteva chei suplimentare care fac lucrul cu ATS mai puțin de o durere de cap.

De exemplu, multe aplicații încarcă conținut de pe web într-o vizualizare web. Aplicația dvs. adesea nu știe ce site-uri web va vizita utilizatorul, ceea ce face imposibilă definirea domeniilor de excepție pentru App Transport Security în țintă Info.plist. De la versiunea iOS 10, puteți dezactiva aplicația Security Transport App pentru vizualizările web prin setare NSAllowsArbitraryLoadsInWebContent la DA în țintă Info.plist.

Este necesară securitatea transportului aplicațiilor

Ceea ce trebuie să vă amintiți este că App Transport Security este necesar pentru fiecare aplicație depusă la App Store după data de 31 decembrie. Îndepărtarea securității transportului de aplicații nu mai este posibilă. Rețineți că echipa de examinare App Store solicită o explicație din partea dvs. dacă renunțați parțial la Securitatea transportului de aplicații utilizând o excepție, cum ar fi NSAllowsLocalNetworking sau NSAllowsArbitraryLoadsInWebContent. Puteți citi mai multe despre acest lucru în documentația Apple.

2. Confidențialitate

Apple continuă să investească în protejarea intimității clienților săi, iar angajamentul respectiv are și consecințe pentru dezvoltatori. Ce înseamnă asta pentru tine?

Dacă aplicația dvs. accesează un serviciu de sistem sau o capacitate a dispozitivului care necesită permisiunea explicită a utilizatorului, utilizatorul vede o alertă de sistem în care cererea solicită permisiunea utilizatorului. Conținutul respectivei alerte a fost furnizat de sistemul de operare dacă aplicația dvs. nu a specificat una. Acest lucru sa schimbat în iOS 10.

Începând cu versiunea iOS 10, aplicația dvs. trebuie să informeze utilizatorul de ce are nevoie de acces la un anumit serviciu de sistem sau la capacitatea dispozitivului. Faceți acest lucru adăugând o cheie în țintă Info.plist. Dacă aplicația dvs. este localizată, atunci trebuie să furnizați și o traducere pentru descrierea din InfoPlist.strings fişier.

Iată o listă completă a cheilor de confidențialitate disponibile în iOS 10. Cele mai multe dintre ele ar trebui să pară familiare, dar unele sunt noi în iOS 10, cum ar fi NSSiriUsageDescription și NSAppleMusicUsageDescription.

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

Dacă nu adăugați o descriere a utilizării pentru serviciile de sistem și capabilitățile dispozitivului pe care le utilizează aplicația dvs., în consola se afișează un avertisment, iar alerta de sistem care solicită permisiunea utilizatorului nu este afișată utilizatorului. Drept urmare, cererii dvs. i se refuză accesul la acel serviciu sau capacitate.

"Această aplicație a încercat să acceseze date sensibile la confidențialitate fără o descriere a utilizării. Info.plist-ul aplicației trebuie să conțină o cheie NSLocationAlwaysUsageDescription cu o valoare de șir care să explice utilizatorului cum utilizează aceste date aceste aplicații".

Este de la sine înțeles că echipa de examinare App Store respinge orice aplicații care încalcă această politică. De fapt, construcțiile încărcate în App Store care nu respectă această politică sunt respinse automat.

Dacă utilizați o bibliotecă sau un cadru terță parte în aplicația dvs., asigurați-vă că descrierile corecte de utilizare sunt adăugate la obiectivele țintă Info.plist. Bibliotecile și cadrele pentru anunțuri necesită adesea mai multe permisiuni pe care să nu le așteptați sau să le cunoașteți.

3. Swift 3

Dacă deschideți un proiect existent pentru prima dată în Xcode 8 și conține Swift, vi se cere să migrați la Swift 3. Dacă nu vă simțiți încă gata, Xcode vă cere să migrați în schimb la Swift 2.3. Trebuie să alegeți unul sau altul, deoarece Xcode 8 acceptă numai aceste versiuni ale limbajului Swift. Swift 2.2.1 și Swift 2.3 sunt foarte asemănătoare. Cea mai importantă diferență este că Swift 2.3 este compatibil cu iOS 10, tvOS 10, watchOS 3 și macOS 10.12.

Ar trebui să migrați azi?

Ar trebui să vă mutați astăzi la Swift 3? Probabil ca nu. Dar nu așteptați prea mult. La un moment dat, Apple va cere dezvoltatorilor să trimită aplicații cu Xcode 8, care nu acceptă Swift 2.2.1. Ai putea să rămâi cu Swift 2.3, dar de ce n-ai face decât să faci saltul?

Este adevărat că migrarea unui proiect la Swift 3 are un impact dramatic asupra codului bazei dvs. de proiect. Aproape fiecare linie de cod se schimbă într-un fel. Modificările API sunt substanțiale. Dar partea de sus este că poți folosi Swift 3. Am folosit Swift 3 de câteva luni și îmi place. Este o îmbunătățire majoră față de Swift 2.2.1 și Swift 2.3.

Planifica

Dacă lucrați la un proiect mare pentru un client, asigurați-vă că planificați cu atenție migrarea către Swift 3. Pentru proiecte complexe, migrarea poate dura mai multe zile. Avantajele sunt că puteți începe să utilizați API-ul Swift 3 și de asemenea beneficiați de compilatorul îmbunătățit Swift 3 alimentat de LLVM și Clang.

4. Îmbunătățiri și amortizări

Cu fiecare lansare majoră a iOS, Apple îmbunătățește platforma prin adăugarea și eliminarea API-urilor. Mai multe cadre au primit o actualizare semnificativă, iar compania a introdus, de asemenea, mai multe cadre noi.

De ce este important acest lucru? Dacă doriți să ieșiți în App Store, se plătește pentru a vă menține aplicațiile actualizate și pentru a adăuga suport pentru funcțiile noi ale platformei. Despre asta este vorba despre această secțiune.

Notificări utilizator

 UILocalNotification clasa este depreciată de la iOS 10. Ce înseamnă asta pentru tine? Puteți utiliza în continuare UILocalNotification pentru a programa și a gestiona notificările locale, dar va dispărea, probabil, la un moment dat. Dar de ce a decis Apple să se abată UILocalNotification? A funcționat bine, corect?

În iOS 10, Apple a introdus Notificări utilizator cadru. După cum sugerează și numele, cadrul este responsabil de programarea, gestionarea și gestionarea notificărilor, local și la distanță. Asta face ca cadrul să fie mare. Aplicația dvs. nu mai trebuie să facă o distincție între notificările locale și cele de la distanță. Cadrul Notificărilor utilizator oferă un API unificat pentru gestionarea notificărilor locale și la distanță.

API arată și se simte foarte bine. Acest cadru tratează notificările locale și la distanță la fel din perspectiva dezvoltatorului, ceea ce face ca acțiunile de notificare să fie simple și transparente. Efectuarea acțiunilor de notificare este centralizată într-un protocol delegat concis. 

Avem câteva tutoriale despre cadrul Notificărilor utilizatorilor chiar aici pe Envato Tuts+!

  • O introducere în cadrul UserNotifications Framework

    În acest tutorial, veți afla despre noul cadru UserNotifications în iOS 10, tvOS 10 și watchOS 3. Acest nou cadru oferă un set modern de ...
    Davis Allie
    iOS
  • iOS 10: Crearea de interfețe personalizate de notificare

    În acest tutorial, veți învăța cum să utilizați noul cadru UserNotificationsUI din iOS 10 pentru a crea interfețe personalizate pentru aplicațiile locale și pentru a le împinge ...
    Davis Allie
    iOS SDK

De asemenea, s-ar putea să fiți interesat de postările mele recente din blog cu privire la programarea notificărilor locale și a acțiunilor de notificare cu cadrul Notificări utilizator. 

Sirikit

Unul dintre cele mai mari anunțuri din timpul acestui an WWDC a fost posibilitatea de a integra aplicația dvs. cu Siri prin SiriKit. Chiar dacă opțiunile sunt limitate pentru moment, dacă aplicația dvs. se încadrează într-una din categoriile acceptate, este o modalitate excelentă de a vă stabili cererea în afara competiției. Siri susține în prezent un număr limitat de domenii, inclusiv apeluri VoIP, mesagerie și antrenamente.

Integrați-vă cu Siri prin adăugarea unei extensii la aplicația dvs. Fiecare aplicație care se integrează cu Siri trebuie să adauge un intents extension. Acesta permite aplicației dvs. să efectueze o sarcină ca răspuns la informațiile pe care Siri le trimite la cererea dumneavoastră. Puteți să creați o imagine opțională intenționează să extindă UI pentru a particulariza aspectul și interfața utilizator rezultată care este prezentată utilizatorului după încheierea sarcinii.

Feedback-ul haptic

Motorul simplu haptic al iPhone 7 și al iPhone 7 Plus a deschis numeroase posibilități pentru dezvoltatori. În iOS 10, este posibil să se folosească motorul haptic al dispozitivului pentru a oferi utilizatorului feedback tactil atunci când efectuează o acțiune specifică sau apare un anumit eveniment.

Aplicația dvs. poate conduce motorul haptic prin UIFeedbackGenerator clasa și cele trei subclase ale sale concrete:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Fiecare UIFeedbackGenerator subclasa este concepută pentru un anumit scenariu. Dacă adăugați asistență pentru motorul haptic, cu siguranță veți uimi utilizatorii aplicației. Incearca.

Datele principale

Datele de bază sunt probabil cadrele mele preferate de cacao, iar Apple a făcut-o chiar mai minunată pe iOS 10 și cu lansarea Swift 3. Aceasta este cea mai mare actualizare pe care cadrul de lucru le-a văzut în ultimii ani.

Swift 3 și Xcode 8 se alătură forțelor pentru a face datele de bază mai utile decât oricând. Apple a introdus de asemenea NSPersistentContainer clasă, ceea ce face ca configurarea și gestionarea unei stive de date de bază să fie o briză.

Compania a revigorat chiar fundamentele cadrului prin regândirea interacțiunii cadrului cu SQLite. Rezultatele sunt cu adevărat fantastice. Este minunat să vedem că Apple continuă să investească în Core Data, mai mult de zece ani după introducerea pe MacOS Tiger.

Pentru a afla mai multe despre datele de bază, consultați câteva dintre celelalte cursuri și tutoriale de aici despre Envato Tuts+.

Ceea ce ar trebui să faci?

Dacă vă construiți aplicația împotriva kitului iOS 10 SDK, ceea ce înseamnă că utilizați Xcode 8, atunci trebuie să vă asigurați că respectați securitatea aplicațiilor de transport și orientările privind confidențialitatea pe care le-a introdus Apple. Asigurați-vă că bifați aceste casete mai întâi.

Chiar dacă celelalte îmbunătățiri și îmbunătățiri sunt opționale, vă încurajez să le aruncați o privire. De exemplu, nu așteptați prea mult pentru a migra la Swift 3. Aveți posibilitatea să surprindeți utilizatorii prin adăugarea de asistență pentru motorul haptic. Este opțional, dar este o oportunitate de a iesi în evidență în App Store de astăzi aglomerat.

Pentru a afla mai multe despre Swift 3 sau iOS 10, consultați câteva dintre celelalte cursuri și tutoriale ale noastre.

Cod