Статьи

Обновите ваше приложение до iOS 10

В этой статье я хотел бы поговорить об iOS 10 и о том, что вам нужно сделать, чтобы подготовить свои приложения для iOS 10.

Как и во всех основных выпусках, iOS 10 представляет множество изменений и улучшений. Некоторые из них обязательны, другие рекомендуются, и есть также несколько изменений, которые могут улучшить пользовательское взаимодействие вашего приложения. Давайте начнем с обзора того, что требуется, если вы создаете свое приложение на основе iOS 10 SDK.

Самое важное изменение не связано строго с iOS 10, но достаточно важно, чтобы я сначала хотел его обсудить. Несмотря на то, что App Transport Security (ATS) существует с iOS 9, всегда было легко отказаться от ATS, добавив следующий фрагмент в Info.plist вашей цели.

1
2
3
4
5
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

Но это скоро изменится. 1 января 2017 года все приложения, представленные в App Store, включая обновления существующих приложений, должны будут соответствовать рекомендациям ATS. Это означает, что ваше приложение должно безопасно взаимодействовать с веб-службами по протоколу HTTPS.

Если вы прочитаете мое подробное обсуждение App Transport Security , то, возможно, помните, что App Transport Security определяет набор правил. Серверы, с которыми взаимодействует ваше приложение, должны соответствовать этим правилам. Другими словами, выполнение сетевых запросов через HTTPS недостаточно. Каждый сервер, к которому обращается ваше приложение, должен быть защищен и соответствовать современным стандартам безопасности.

Вы по-прежнему можете определять домены исключений в целевом Info.plist , но больше не разрешается вообще отказываться от App Transport Security.

Недавно я столкнулся с проблемой, связанной с App Transport Security. Приложение клиента должно было общаться с другими устройствами в той же сети. Он общается с другими устройствами, используя их IP-адрес, который не поддерживается доменами исключений App Transport Security. И, чтобы сделать вещи еще сложнее, IP-адрес устройства не является фиксированным. Это может и будет меняться со временем.

К счастью, NSAppTransportSecurity с iOS 10, можно решить эту проблему, добавив дополнительную пару ключ-значение в словарь NSAppTransportSecurity в целевом Info.plist . Установив значение NSAllowsLocalNetworking в YES , можно отключить App Transport Security для трафика локальной сети.

Если в прошлом вам приходилось бороться с App Transport Security, я рекомендую взглянуть на обновленную документацию App Transport Security . Apple добавила несколько дополнительных клавиш, которые облегчают работу с ATS.

Например, многие приложения загружают контент из Интернета в веб-представлении. Ваше приложение часто не знает, какие веб-сайты посетит пользователь, что делает невозможным определение исключительных доменов для App Transport Security в целевом Info.plist . Начиная с iOS 10, вы можете отключить App Transport Security для веб-представлений, установив NSAllowsArbitraryLoadsInWebContent в значение YES в Info.plist цели.

Следует помнить, что App Transport Security требуется для каждого приложения, представленного в App Store после 31 декабря. Отказ от App Transport Security больше невозможен. Обратите внимание, что группа проверки App Store требует от вас объяснения, если вы частично отказываетесь от App Transport Security с помощью исключения, такого как NSAllowsLocalNetworking или NSAllowsArbitraryLoadsInWebContent . Вы можете прочитать больше об этом в документации Apple.

Apple продолжает вкладывать средства в защиту конфиденциальности своих клиентов, и это обязательство также имеет последствия для разработчиков. Что это значит для вас?

Если ваше приложение получает доступ к системной службе или устройству, для которого требуется явное разрешение пользователя, пользователь видит системное предупреждение, в котором приложение запрашивает разрешение пользователя. Содержимое этого предупреждения раньше предоставлялось операционной системой, если ваше приложение не указывало его. Это изменилось в iOS 10.

Apple продолжает инвестировать в конфиденциальность и безопасность

Начиная с iOS 10, ваше приложение должно сообщать пользователю, зачем ему нужен доступ к определенной системной службе или возможностям устройства. Вы делаете это, добавляя ключ в Info.plist цели. Если ваше приложение локализовано, вы также должны предоставить перевод описания в файле InfoPlist.strings .

Вот полный список ключей конфиденциальности, доступных в iOS 10. Большинство из них должны выглядеть знакомыми, но некоторые из них являются новыми в iOS 10, такие как NSSiriUsageDescription и NSAppleMusicUsageDescription .

  • HealthKit
    • NSHealthShareUsageDescription
    • NSHealthUpdateUsageDescription
  • Место расположения
    • NSLocationUsageDescription
    • NSLocationAlwaysUsageDescription
    • NSLocationWhenInUseUsageDescription
  • NSBluetoothPeripheralUsageDescription
  • NSCalendarsUsageDescription
  • NSVoIPUsageDescription
  • NSCameraUsageDescription
  • NSContactsUsageDescription
  • NSHomeKitUsageDescription
  • NSAppleMusicUsageDescription
  • NSMicrophoneUsageDescription
  • NSMotionUsageDescription
  • NSPhotoLibraryUsageDescription
  • NSRemindersUsageDescription
  • NSSpeechRecognitionUsageDescription
  • NSSiriUsageDescription
  • NSVideoSubscriberAccountUsageDescription

Если вы не добавите описание использования системных служб и возможностей устройства, которое использует ваше приложение, в консоли отобразится предупреждение, а системное предупреждение, запрашивающее у пользователя разрешения, не будет показано пользователю. В результате вашему приложению отказано в доступе к этой конкретной услуге или возможности.

1
«This app has attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationAlwaysUsageDescription key with a string value explaining to the user how the app uses this data.»

Само собой разумеется, что команда проверки App Store отклоняет любые приложения, которые нарушают эту политику. Фактически, сборки, загруженные в App Store, которые не соответствуют этой политике, автоматически отклоняются.

Если вы используете стороннюю библиотеку или инфраструктуру в своем приложении, убедитесь, что в Info.plist цели добавлены правильные описания использования. Библиотеки и рамки для рекламы часто требуют нескольких разрешений, о которых вы можете не знать или не знать.

Если вы впервые открываете существующий проект в Xcode 8, и он содержит Swift, вас попросят перейти на Swift 3. Если вы еще не готовы, Xcode попросит вас перейти на Swift 2.3. Вы должны выбрать один или другой, так как Xcode 8 поддерживает только эти версии языка Swift. Swift 2.2.1 и Swift 2.3 очень похожи. Самое важное отличие заключается в том, что Swift 2.3 совместим с iOS 10, tvOS 10, watchOS 3 и macOS 10.12.

Должны ли вы перейти на Swift 3 сегодня? Возможно нет. Но не ждите слишком долго. В какой-то момент Apple потребует от разработчиков представить приложения с Xcode 8, который не поддерживает Swift 2.2.1. Вы могли бы придерживаться Swift 2.3, но почему бы вам просто не сделать прыжок?

Это правда, что миграция проекта в Swift 3 оказывает существенное влияние на кодовую базу вашего проекта. Почти каждая строка кода изменяется каким-то образом. Изменения API являются существенными. Но плюс в том, что вы можете использовать Swift 3. Я пользуюсь Swift 3 уже несколько месяцев, и мне это нравится. Это значительное улучшение по сравнению со Swift 2.2.1 и Swift 2.3.

Если вы работаете над большим проектом для клиента, тщательно спланируйте миграцию на Swift 3. Для сложных проектов миграция может занять несколько дней. Преимущества заключаются в том, что вы можете начать использовать Swift 3 API, а также воспользоваться улучшенным компилятором Swift 3 на основе LLVM и Clang.

С каждым основным выпуском iOS Apple улучшает платформу, добавляя и удаляя API. Несколько фреймворков получили значительное обновление, и компания также представила несколько новых фреймворков.

Почему это важно? Если вы хотите выделиться в App Store, вам будет полезно поддерживать ваши приложения в актуальном состоянии и добавлять поддержку новых функций платформы. Вот о чем этот раздел.

UILocalNotification с iOS 10, класс UILocalNotification устарел. Что это значит для вас? Вы по-прежнему можете использовать UILocalNotification для планирования и управления локальными уведомлениями, но, возможно, в какой-то момент они исчезнут. Но почему Apple решила UILocalNotification ? Работало нормально, да?

В iOS 10 Apple представила инфраструктуру пользовательских уведомлений . Как следует из названия, платформа отвечает за планирование, управление и обработку уведомлений, локальных и удаленных . Это то, что делает каркас великолепным. Вашему приложению больше не нужно различать локальные и удаленные уведомления. Инфраструктура пользовательских уведомлений предлагает унифицированный API для обработки локальных и удаленных уведомлений.

API выглядит и чувствует себя очень хорошо. Платформа обрабатывает локальные и удаленные уведомления одинаково с точки зрения разработчика, что делает добавление уведомлений легким и прозрачным. Обработка действий по уведомлению централизована в кратком протоколе делегата.

У нас есть несколько руководств по структуре пользовательских уведомлений прямо здесь, на Envato Tuts +!

  • Введение в среду пользовательских уведомлений

  • iOS 10: создание пользовательских интерфейсов уведомлений

Вас также могут заинтересовать мои последние сообщения в блоге о планировании локальных уведомлений и действиях по уведомлению с помощью инфраструктуры пользовательских уведомлений .

Одним из главных анонсов во время WWDC этого года была возможность интеграции вашего приложения с Siri через SiriKit . Несмотря на то, что на данный момент параметры ограничены, если ваше приложение попадает в одну из поддерживаемых категорий , это отличный способ отличить ваше приложение от конкурентов. В настоящее время Siri поддерживает ограниченное количество доменов, включая VoIP-вызовы, обмен сообщениями и тренировки.

Вы интегрируетесь с Siri, добавляя расширение к своему приложению. Каждое приложение, интегрирующееся с Siri, должно добавить расширение намерений . Это позволяет вашему приложению выполнять задачу в ответ на информацию, которую Siri отправляет вашему приложению. При желании вы можете создать расширение пользовательского интерфейса намерений, чтобы настроить внешний вид конечного пользовательского интерфейса, который будет представлен пользователю после выполнения задачи.

Совершенно новый тактильный движок iPhone 7 и iPhone 7 Plus открыл много новых возможностей для разработчиков. В iOS 10 можно использовать тактильный механизм устройства, чтобы предоставить пользователю тактильную обратную связь, когда он выполняет определенное действие или происходит конкретное событие.

Ваше приложение может управлять тактильным механизмом через класс UIFeedbackGenerator и его три конкретных подкласса:

  • UIImpactFeedbackGenerator
  • UINotificationFeedbackGenerator
  • UISelectionFeedbackGenerator

Каждый подкласс UIFeedbackGenerator предназначен для определенного сценария. Если вы добавите поддержку тактильного движка, вы наверняка удивите пользователей своего приложения. Попробуйте.

Core Data, вероятно, мой любимый фреймворк Cocoa, и Apple сделала его еще более потрясающим на iOS 10 и с выпуском Swift 3. Это самое большое обновление, которое фреймворк видел за последние несколько лет.

Swift 3 и Xcode 8 объединяют усилия, чтобы сделать Core Data проще в использовании, чем когда-либо прежде. Apple также представила класс NSPersistentContainer , который упрощает настройку и управление стеком основных данных .

Компания даже обновила основы фреймворка, переосмыслив взаимодействие фреймворка с SQLite. Результаты действительно фантастические. Приятно видеть, что Apple продолжает инвестировать в Core Data, спустя более десяти лет после своего появления на MacOS Tiger.

Чтобы узнать больше о базовых данных, ознакомьтесь с некоторыми другими нашими курсами и руководствами здесь, на Envato Tuts +.

  • IOS
    Начните с основных данных
    Маркус Мюльбергер
  • Основные данные
    Базовые данные и Swift: базовый стек данных
  • IOS
    Проверка данных с помощью основных данных: общие ограничения

Если вы создаете свое приложение на основе iOS 10 SDK, а это значит, что вы используете Xcode 8, то вам необходимо убедиться, что вы соблюдаете требования App Transport Security и рекомендации по конфиденциальности, введенные Apple. Убедитесь, что вы отметили эти поля в первую очередь.

Несмотря на то, что другие улучшения не являются обязательными, я советую вам взглянуть на них. Например, не ждите слишком долго, чтобы перейти на Swift 3. Вы можете удивить своих пользователей, добавив поддержку тактильного движка. Это необязательно, но это возможность выделиться в современном многолюдном App Store.

Чтобы узнать больше о Swift 3 или iOS 10, ознакомьтесь с некоторыми другими нашими курсами и учебными пособиями.

  • Apple Watch
    Что нового в watchOS 3?
    Дэвис Элли
  • iOS SDK
    Создайте приложение iMessage в iOS 10
    Дэвис Элли
  • стриж
    Чего ожидать от Swift 3