Путеводитель по WWDC’16 для мобильных разработчиков

в 9:41, , рубрики: apple, iOS, redmadrobot, siri, tvos, watchos, wwdc, WWDC 2016, xcode, Блог компании REDMADROBOT, разработка мобильных приложений, разработка под iOS

Вид из Moscone West

После WWDC на сайте Apple размещается очень много сессий. Чтобы разобраться, что смотреть, а что нет, требуется куча времени. Так как я провел всю неделю на конференции и просмотрел множество топиков, захотелось собрать в одном месте краткий список новинок и видео, которые нужно посмотреть по каждой теме.

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

В каждой категории сессии упорядочены в рекомендуемом порядке просмотра там, где это возможно.

Начать стоит с
101 — Keynote и
102 — Platforms State of the Union,
в этих сессиях представлен обзор всех новостей с картинками и примерами работы.

Содержание:

  • iOS
    — SiriKit
    — Search APIs
    — Notifications
    — iMessage
    — CocoaTouch
    — iOS Frameworks
    — Security
    — Enterprise, Medical, Education
  • watchOS
  • Design
  • Swift 3
  • Xcode 8
  • iTunesConnect


Облако тегов внутри конференц-центра

iOS

SiriKit

Пожалуй, самая приятная новость конференции: в iOS 10 сторонние приложения получат доступ к SiriKit. Точнее говоря, это Siri получит доступ к тому, что творится в приложениях, и сможет активировать функции и даже отображать интерфейс вашего приложения прямо в системной панели.

Настроить Siri под конкретное приложение можно довольно ограниченным способом:

  1. Нужно задать лексику, специфичную для приложения (название, функциональность, возможности),
  2. Указать термины, важные для конкретного пользователя (например, имена контактов),
  3. Написать обработчики интентов (их доступно ограниченное количество),
  4. При желании предоставить интерфейс в виде App Extension для отображения в диалоге с пользователем.

Siri ведет себя по-разному на часах, в машине, на iPhone или при голосовой активации. Это поведение полностью переносится на сторонние приложения. Диалоговый движок умеет распознавать как одинарные, так и многошаговые запросы.

Самое обидное — предопределенный набор доменов (Domains) для распознавания: голосовые вызовы, заказ такси, отправка сообщений и некоторые другие. Конечно же, инженеры эппл обещают дополнять домены в будущем. Но зато реализованные домены работают здорово: можно выбирать разные формулировки, слэнг, последовательность разговора. Это не идет ни в какое сравнение с тем, что сейчас происходит на рынке чат-ботов, которые по сути решают ту же проблему.

217 — Introducing SiriKit
225 — Extending Your Apps with SiriKit

Search APIs

SiriKit — не единственная точка входа в приложение. Контент можно искать через Spotlight, он может рекламироваться на основе Handoff, в iMessage могут появляться сообщения из приложений, а Geofencing и маяки iBeacon позволяют предлагать приложения на основе местоположения. О том, как работать с таким количеством точек входа — в следующих сессиях:

240 — Increase Usage of Your App With Proactive Suggestions
223 — Making the Most of Search APIs

Notifications

В iOS 10 пользователь получит новый дизайн оповещений. Помимо того, что они будут отображаться в виде одинаковых баннеров во всей системе, добавится поле Title. Если сделать Force Touch на уведомлении, то есть возможность отобразить часть интерфейса приложения через App Extensions, но эта View будет не интерактивной. Также к нотификациям можно прикладывать медиа-файлы (картинки, гифки, аудио, видео) в формате ссылки в полях payload.

708 — Advanced Notifications
724 — What's New in the Apple Push Notification Service
707 — Introduction to Notifications

iMessage

В iMessage добавилась куча новых функций, но для нас, разработчиков, важны две: стикеры и App Extensions.
Стикеры можно создавать прямо в Xcode, поддерживаются как статичные, так и анимированные варианты. Стикеры можно размещать в отдельном iMessage AppStore, то есть создавать родительское приложение не требуется.

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

Конечно же, приложения смогут вставлять изображения и ссылки в чат. Все это работает через App Extensions, то есть интерфейс отображается прямо внутри iMessage. Отправленные сообщения будут видны на маке и часах.

204 — iMessage Apps and Stickers, Part 1
224 — iMessage Apps and Stickers, Part 2

iMessage Apps & Stickers

Cocoa Touch

В инструментах разработчика много нового. Помимо переименования кучи системных API (см. раздел Swift) добавлены и новые плюшки.

  1. Интерфейс работы с GCD переработали под свифт, добавили приватные очереди,
  2. В классах Foundation избавились от префиксов NS-,
  3. Появились дополнительные методы для работы с Remote Clipboard в сторонних приложениях,
  4. Для системной клавиатуры QuickType можно задавать свои словари — например, имена контактов или пунктов меню, специфичных для приложения,
  5. RefreshControl теперь доступен для ScrollView и всех его сабклассов,
  6. Переработана система анимаций UIView, теперь проще создавать реверсивные и управляемые анимации,
  7. Конечно, добавлены возможности интеграции в системные звонки с помощью CallKit.

205 — What's New in Cocoa Touch
213 — Improving Existing Apps with Modern Best Practices
216 — Advances in UIKit Animations and Transitions
230 — Enhancing VoIP Apps with CallKit
220 — Leveraging Touch Input on iOS
236 — What's New in Auto Layout
228 — A Peek at 3D Touch
219 — What's New in UICollectionView in iOS 10

Стоит также обратить внимание на сессии про работу с AutoLayout и Size Classes в разделе Xcode.

Фрагментация на iOS-устройствах

iOS Frameworks

В системных фреймворках всегда много изменений, сказывается конкуренция с Android и необходимость предоставлять разработчикам самые актуальные средства. Для пользователя это все не очень заметно на первый взгляд (разве что поддержка расширенного RGB на новых айпадах и айфонах), но возможности разработчиков расширяются.

720 — Concurrent Programming With GCD in Swift 3
716 — Core Location Best Practices
711 — NSURLSession: New Features and Best Practices
714 — Networking for the Modern Internet
719 — Optimizing I/O for Performance and Battery Life
712 — Working with Wide Color
242 — What's New in Core Data

Несколько сессий про оптимизацию скорости запуска и полировку iOS-приложений:
406 — Optimizing App Startup Time
420 — Optimizing Web Content in Your App
221 — Optimizing On-Demand Resources

В прошлом году был представлен механизм работы с XLIFF. В этот раз сессии скорее про лучшие практики, чем про новые механизмы:
238 — Measurements and Units
201 — Internationalization Best Practices
232 — What's New in International User Interfaces

Security

В Купертино нереально заморачиваются по приватности и безопасности. Большинство экспертов, в том числе и российских, признают, что модель безопасности iOS намного более продуманная и защищенная, чем реализация в Android. Полный контроль над ПО и железом позволяет организовать многослойную защиту, и именно поэтому за почти 10 лет существования платформы не были ни одного массового случая кражи пользовательских данных или средств.

705 — How iOS Security Really Works
706 — What's New in Security

How iOS Security Really Works

Enterprise, Medical, Education

В iOS 9.3 был представлен режим shared iPad, когда одним устройством могут пользоваться несколько appleID-аккаунтов. Это актуально для школ или предприятий.
По сути весь механизм заключается в сохранении и загрузке контента через iCloud: между сессиями все блокируется и данные остаются индивидуальными. Есть оптимизации, благодаря которым iPad не будет перекачивать все данные заново, если хоть когда-то их уже скачал. Это относится и к on-demand resources, и к keychain, и к загруженным UserPreferences.
Представленные ранее фреймворки HealthKit, ResearchKit и CareKit не получили пока широкого распространения на российском рынке, но истории успеха на западе говорят сами за себя.

304 — Best Practices for Building Apps Used in Business and Education
237 — Getting Started with CareKit
209 — Getting the Most Out of HealthKit
234 — What's New in ResearchKit
713 — Health and Fitness with Core Motion


watchOS

В watchOS 3 большинство нововведений касаются исправления тех дефектов, которые делали предыдущие версии платформы неюзабельными. Появился AppDock, который не только содержит ссылки на запуск избранных приложений, но и заставляет систему постоянно держать их в запущенном состоянии и запускать за доли секунды. Для этого же предусмотрен механизм обновления в бэкграунде всех компонентов приложения: скриншота в доке, Complication на главном экране и приложения на iPhone.

Также сторонним приложениям теперь доступны все события digital crown, полный контроль над обработкой touch input (жесты swipe, drag, pan, long press) и постоянный доступ к данным акселерометра. Есть надежда, что со всем этим можно делать такие же быстрые и отзывчивые приложения, как на iOS.
Нотификации в watchOS теперь могут быть локальными — то есть показываться только на часах и не попадать на телефон.

235 — Building Great Workout Apps
208 — What's New in watchOS 3
Скажу честно, на сессии 208 можно остановиться. Все остальное — это то же самое, но под другим соусом:
211 — Quick Interaction Techniques for watchOS
227 — Architecting for Performance on watchOS 3
218 — Keeping Your Watch App Up to Date


Design

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

Как известно, в системах Apple с прошлого года используется новое семейство шрифтов San Francisco. В этом году добавляются моноширинные разновидности во всех начертаниях: SFMono. В Xcode 8 все они будут включены по умолчанию, из особенностей: ширина символов одного кегля одинаковая во всех начертаниях, цифры и символы специально настроены для разработки, в шрифтах есть кириллические символы.

803 — Typography and Fonts

Для watchOS у дизайнеров Apple есть несколько рекомендаций. Приложения должны в первую очередь быть "glanceable", то есть доставлять контент за минимальное количество шагов. Типичное время взаимодействия с часами должно оставаться в пределах 2 секунд.
804 — Designing Great Apple Watch Experiences

Также в этом году вышло традиционное продолжение сессий про дизайн в Keynote. В деталях рассмотрен процесс прототипирования и отсмотра вариантов.
805 — Iterative UI Design
801 — Inclusive App Design
802 — Designing for tvOS

Каждый год проходит Design Awards. Вдохновиться можно здесь:
103 — Apple Design Awards

Отсмотр вариантов дизайна


Swift 3

Для Swift 3, помимо изменений синтаксиса, были переименованы тысячи методов в системных фреймворках. Эппл называет это “Grand Renaming”, и системные API наконец-то избавляются от старого наследия.

402 — What's New in Swift
403 — Swift API Design Guidelines
419 — Protocol and Value Oriented Programming in UIKit Apps
207 — What's New in Foundation for Swift
404 — Getting Started with Swift
416 — Understanding Swift Performance

Так как Swift был год назад выложен в опенсорс, Apple продвигает его в том числе и как язык для серверной разработки.
415 — Going Server-side with Swift Open Source

На iPad скоро выйдет приложение Swift Playgrounds — редактор кода для обучения детей программированию на языке Swift.
408 — Introducing Swift Playgrounds

Presidio


Xcode 8

Xcode становится лучше каждый год, хотя все еще остаются противные косяки и проблемы.

Система подписи приложений для тестирования на устройствах серьезно переделана. Если раньше кнопкой Fix Issue пользовались только любители острых ощущений, то теперь логика подписи позволит системе самостоятельно разрешать большинство проблем. Теперь в настройках проекта рекомендуется включить настройку Automatic Signing, и все сертификаты и провижн-профили будут сгенерированы и настроены по AppleID аккаунта разработчика. Это значит, что можно спокойно работать на нескольких рабочих машинах и смело коммитить настройки проекта для коллег. Также автоматически будут работать настройки Capabilities.
Конечно, все еще есть возможность делать все самостоятельно, чтобы четко отправить сборку в аппстор.

401 — What's New in Xcode App Signing
213 — Improving Existing Apps with Modern Best Practices
409 — Advanced Testing and Continuous Integration
417 — Debugging Tips and Tricks
414 — Using and Extending the Xcode Source Editor
410 — Visual Debugging with Xcode
413 — Introduction to Xcode

222 — Making Apps Adaptive, Part 1
233 — Making Apps Adaptive, Part 2

В инструментах тоже есть обновления и новые фичи.
411 — System Trace in Depth
412 — Thread Sanitizer and Static Analysis
418 — Using Time Profiler in Instruments


iTunesConnect

Изменения в iTunesConnect небольшие, но важные:

  1. В Apple продолжают работать над сокращением времени ревью, и результаты были видны последние полтора месяца
  2. Механизм подписок теперь доступен для всех категорий в AppStore
  3. Если подписка пользователя длится дольше года, разработчик получает 85% ее стоимости на руки, и этот механизм заработает уже сейчас
  4. Осенью добавятся промо-коды на In-app Purchase
  5. В AppStore Analytics добавлено новое измерение — Impressions. Это просмотр иконки приложения в любом месте: в баннере, в Featured, в результатах поиска
  6. Теперь в iTunesConnect скриншоты могут автоматически ресайзиться в меньшую сторону. То есть можно залить их для iPhone 6s Plus, а все остальные сгенерируются автоматически
  7. Добавлена новая категория приложений для iMessage и стикеров
  8. Серьезно переформатированы требования App Review Guidelines. Они стали более человеко-читаемыми и понятными. К тому же, их перевели на новые языки.

305 — What's New in iTunes Connect
301 — Introducing Expanded Subscriptions in iTunes Connect
302 — Introducing Search Ads

AppReview Guidelines Comics

Все остальные сессии (а там еще много про разработку игр, macOS и tvOS) можно посмотреть на developer.apple.com

Автор: REDMADROBOT

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js