Как мы делаем App Clips?

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
App Clips — это облегченные версии приложения для iOS 14, которые позволяют людям быстро выполнять определенную задачу, не скачивая и не устанавливая его полную версию из App Store. Компания Apple анонсировала такие мини-приложения на всемирной конференции для разработчиков WWDC 2020. Мы в Rambler Group одними из первых попробовали App Clips для приложений «Рамблер/кассы».




Как работают App Clips

App Clip — это часть полного приложения (по правилам Apple App Clips не могут превышать 10 МБ), заточенная на выполнение определенной задачи. Например, заказ еды, покупка билета, бронирование гостиницы и т.д. При этом App Clips не надо устанавливать — достаточно просто запустить по ссылке.

Мини-приложения не сохраняются на домашних экранах смартфона или планшета iOS, а размещаются в «Библиотеке приложений». Через 30 дней с момента последнего запуска они автоматически удаляются с устройства. Для удобства пользователей в App Clips есть возможность добавить поддержку Apple Pay и вход через Apple ID для быстрой авторизации и оплаты услуг и товаров — без регистрации, ввода дополнительной информации и номера банковской карты.



Также Apple сделала множество вариантов запуска App Clips как в офлайне, так и в онлайне:

  • фирменная метка App Clips
  • NFC-метка
  • QR-код
  • URL-ссылка
  • баннер
  • Apple Maps
  • Siri.




При этом App Clips используют такую же кодовую базу, что и основное приложение, а по своему формату больше похожи на плагин или контейнер.

Краткое руководство по добавлению App Clips в «Рамблер/кассу»

В этой статье мы хотим рассказать о некоторых нюансах создания App Clips для приложений «Рамблер/кассы».

Для интеграции мини-приложения на данный момент у нас выработан алгоритм:

1. Необходимо добавить target AppClip в проект, при этом указав целевой проект родительским (в нашем случае target Kassa).
2. Добавить при необходимости нужные pod'ы, указав их для конкретного target в Podfile (выполнить pod install).
3. В настройках таргета App Clips нужно перейти на вкладку Signing & Capabilities и в секции Associated Domains добавить домен вида appclips:{домен ссылки, которая будет открывать App Clips}. В случае «Рамблер/кассы» это appclips:kassa.rambler.ru и appclips:m.kassa.rambler.ru.
4. Указать версию и билд для target с App Clips, которые идентичны версии и билду родительского таргета.
5. Обработать входящие url для App Clips и реализовать навигацию для App Clips в методе, согласно документации Apple
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void -> Bool.
6. Собрать архив с приложением (оно должно автоматически включать App Clips) и отправить его в AppStore.
7. Вы великолепны!

Ссылки и открытие экранов

После того как пользователь нажимает «Открыть AppClip/Приложение» на всплывающем экране с App Clips, срабатывает метод:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool

В userActivity.webpageURL лежит URL-ссылка, которую мы зашивали в качестве ссылки для App Clips.

После этого на основе параметров из этой ссылки откроется нужный экран приложения.

Виды ссылок

В данный момент App Clips «Рамблер/кассы» поддерживает три сценария покупки билетов:
  • открытие экрана деталей конкретного мероприятия;
  • открытие экрана деталей конкретного места;
  • открытие экрана конкретного сеанса для конкретного мероприятия.

Для тестирования мы взяли рабочие ссылки на ивенты, доступные на «Рамблер/кассе» с различными параметрами.

1. Мероприятие. В качестве вводных параметров взяли creationid, cityid, creationtype:
m.kassa.rambler.ru/msk/movie/100547?creationid=100547&cityid=2&creationtype=movie

Ссылка открывает экран деталей мероприятия, окружение идентично покупке билета в полноценном приложении, за исключением следующих вещей:
  • на экране с деталями мероприятия отсутствует кнопка добавления в избранное;
  • отсутствует отображение видео на деталях мероприятия.


2. Место. В качестве вводных параметров взяли placeid, cityid, creationtype:
m.kassa.rambler.ru/msk/cinema/formula-kino-cdm-54351?placeid=97417&cityid=2&creationtype=movie

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


3. Ссылка на конкретный сеанс. В качестве вводных параметров взяли sessionid:
m.kassa.rambler.ru/msk/concert/717293?cityid=2&sessionid=54293235

Ссылка открывает экран с конкретным сеансом (в виде таблицы или схемы зала), окружение идентично покупке билета в полноценном приложении.







Проблемы и решения

1. App Сlip запускается и падает

Проблема наблюдается при использовании сторонних pod'ов. При сборке продукта не копируются библиотеки в конечную директорию. Причина — отсутствие скрипта в Build Phases.

Для решения этой проблемы необходимо добавить скрипт (назовем его [CP] Embed Pods Frameworks):

${PODS_ROOT}/Target Support Files/Pods-{здесь имя таргета с апклипсом}/Pods-{здесь имя таргета с апклипсом}-frameworks.sh

В случае «Рамблер/кассы» скрипт выглядит так:
${PODS_ROOT}/Target Support Files/Pods-KassaAppClip/Pods-KassaAppClip-frameworks.sh

2. Сборка с App Clips собирается, архивируется и отправляется в AppStore, но приходит reject из-за веса приложения

В основном причиной этой проблемы являются какие-то большие ресурсы и сторонние библиотеки.

Одним из решений, позволяющим уменьшить размер библиотеки в целевом архиве, является включение Bitcode (Build Settings/Build Options/Enable Bitcode).

3. В App Clips метод UIDevice.current.identifierForVendor возвращает 000000-0000-000000.....

Это связано с особенностью App Clips: Apple ограничила доступ к идентификатору из соображений безопасности. В App Clips «Рамблер/кассы» мы используем рандомно сгенерированную 32-значную соль.

Что в итоге?

App Clips — хороший способ повышения конверсии для таких e-com-приложений, как «Рамблер/касса». В плюсе остаются все:

  • пользователи могут быстро купить билет, не скачивая и не устанавливая основное приложение;
  • разработчикам приятно быстро реализовать возможность, которая позволит быть зафичеренными или засветиться на лендинге с презентацией новой iOS 14:

Источник: https://habr.com/ru/company/rambler_group/blog/533840/


Интересные статьи

Интересные статьи

Однажды мне срочно понадобилось попасть в один бизнес-центр с пропускной системой в виде турникетов, открывающихся при помощи карт-пропусков. Человек, у которого находился в этот моме...
Аварийный режим (также упоминается как KVM), позволяющий подключаться к VPS без RDP прямо с уровня гипервизора, экономит 15–20 минут в неделю. Первое и главное — не бесить людей. В...
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...
Начав изучать ROS (Robotic operation system), сначала поражаешься, как тут «все сложно», от количества информации про топики, ноды,actions голова идет кругом. И, первое желание — вернуться в упра...
Сегодня трудно кого-то удивить возможностью свайпать элементы списка в мобильных приложениях. В одном нашем react-native приложении тоже была такая функциональность, но недавно возникла необходим...