На WWDC 2016 Apple представила обновление iMessagе. По презентации Keynote могло показаться, что не произошло ничего интересного: добавлены стикеры, большие эмоджи и анимированные фейерверки. Но на самом деле Apple представила целую новую платформу и открыла Messages для разработчиков. Подробно об этом было рассказано на лекциях iMessage Apps and Stickers, Part 1 и Part2. Для тех же, кто пока не успел их посмотреть, но хоть немного заинтересован, ниже будут рассмотрены новые возможности для разработчиков.
Нам доступны два новых типа приложений:
- наборы стикеров (Sticker Packs)
- приложения iMessage (iMessage Apps)
Оба эти типа могут создаваться как вместе с iOS-приложением в виде extension, так и существовать самостоятельно. В обоих случаях приложение будет доступно пользователю в Message Store.
Приложения iMessage, в свою очередь, могут предоставлять три вида контента:
- Интерактивные сообщения. Кажется, самое полезное нововведение;
- Стикеры;
- Фотографии, текст, видео, звук — всё, что было доступно раньше.
Доступные платформы
Приложения будут доступны только на платформе iOS 10. Там можно будет создавать и отправлять стикеры. Получать и корректно отображать сообщения можно будет на macOS Sierra и watchOS 3.0. Но на watсhOS 3.0 будут доступны последние использованные стикеры, и их можно будет отправлять. Кроме того обещают механизм обратной совместимости, так на iOS 9 вместо интерактивного сообщения будет приходить 2 сообщения, одно из которых будет содержать ссылку на контент в вебе.
Развития проекта для Android не предвидится, что делает iMessage несколько ограниченным.
Симулятор и Message Store
Для тестирования в симуляторе доступны два пользователя. Можно вести диалог между ними. После каждого нового запуска история сообщений очищается.
Использовать приложения можно будет из Application Drawer (в нем будут находиться приложения, созданные как extension и скачанные из Message App Store) и из самого Message App Store. Кроме этого будет представлен механизм Inline App Attribution. Если пользователю придет сообщение, созданное в приложении, которого у него не стоит, то под сообщением пользователь увидит соответствующую подпись. При клике на нее пользователь перейдет в магазин, где сможет скачать нужное приложение.
Увидеть, что из себя представляет Store пока невозможно ни на симуляторе, ни на девайсе с iOS 10 beta, потому что он еще не запущен.
Стикеры
Если вы решили создать набор стикеров, то у меня есть для вас хорошая (или нет) новость. Для этого не нужно писать ни строчки кода. Выбираете Sticker Pack Application и добавляете туда свои ресурсы. Важно понимать, что это статический набор, и изменить его можно будет только перезалив приложение.
Можно создавать статичные и анимированные стикеры.
- Форматы PNG, APNG, GIF или JPEG. Но из этого многообразия Apple рекомендует форматы PNG и APNG, во избежание возникновения артефактов изображений.
- Файл не более 500 Кбайт.
- Изображение должно быть больше 100 x 100 точек, и меньше 206 x 206.
Кроме этого, Apple рекомендует, чтобы размер стикеров соответствовал одному из трех вариантов, потому что стикеры могут быть размещены в любой части сообщения, но делается все это в соответствии с размерной сеткой. Соответственно, если размер вашего стикера не соответствует этой сетке, то что-нибудь может пойти не так. Размеры следующие:
- Small. 100 x 100 точек.
- Medium. 136 x 136 точек.
- Large. 206 x 206 точек.
Ресурсы требуются в разрешении 3x, а система сможет уменьшить их, если возникнет необходимость.
После того, как все готово, можно запускать приложение, выбрав Messages как целевое приложение. Наши стикеры уже в списке приложений, и их можно использовать.
Мы получили простой результат с минимальными временными затратами.
iMessage Apps
Для создания приложения iMessage потребуется гораздо больше времени, но и результат можно получить более интересный и полезный. Здесь нужно писать код, но в разработке можно использовать весь привычный iOS SDK.
В презентации Apple как пример было показано приложение, которое делает стикеры с мороженым. Если превратить мороженое в пиццу, то даже стикеры станут полезными с точки зрения бизнеса.
Помимо стикеров приложения iMessage могут создавать интерактивные сообщения, и это может быть все, что угодно. Карты, платежные формы, музыка.
Что же такое интерактивное сообщение?
Так Apple называет сообщения, которые создаются внутри расширений, выглядят они следующим образом:
Теперь расмотрим структуру сообщения. Оно состоит из MSSession, который отвечает за то, как сообщение будет послано, и MSMessageTemplateLayout, который отвечает за отображение сообщения в беседе. В стандартном layout можно задать image или mediaFileURL (если вы, например, хотите использовать видео, контент будет располагаться на месте image), и еще множество caption, которые можно увидеть внизу на слайде. Еще у сообщения можно задать url. Это позволит пользователю с macOS или более ранней версией iOS взаимодействовать с контентом сообщения в веб-браузере.
Давайте расмотрим, из каких частей состоит приложение.
Во-первых, это MSMessagesAppViewController. Это тот контроллер, с которым пользователь взаимодействует, когда выбирает ваше приложение. Он является наследником UIViewController. На экране может находиться в двух состояниях: compact и expanded. На него можно добавить любой ViewController в качестве ChildViewController.
Во-вторых, это MSConversation. Это беседа, где хранятся идентификаторы пользователей, и куда можно добавлять свои сообщения.
В-третьих, MSMessage. Это интерактивное сообщение.
В простейшем варианте расширения вам достаточно будет создать свой MSMessagesAppViewController, на котором будут отображаться элементы коллекции. При выборе элемента генерировать сообщение и после этого добавлять его в беседу. В общем-то в этом и заключается основной функционал расширений. А уже опционально при выборе сообщения можно добавлять действия, открывать приложение, проигрывать музыку, показывать новый контроллер.
Итого
Мы выяснили, что создать приложение просто, а набор стикеров еще проще. Все это дает разработчикам возможность решать проблемы пользователя, даже если у него запущен только iMessage.
Ссылки
Все рассмотренные выше компоненты находятся в фреймворке Messages
Код приложения из презентации Apple
Автор: REDMADROBOT