Из-за возрастающей сложности новых мобильных приложений разработчики заинтересованы в следующем этапе развития сервисов извещающих уведомлений (push notification services): анализ уведомлений в реальном времени (push analytics), сегментация рынка, отчетность и охват аудиторий (reach) через извещающие уведомления, доступные на всех основных платформах. Microsoft недавно приобрела платформу Capptain, которая обеспечивает все эти сервисы и кое-что сверх того.
Хотя Capptain пока не является частью Microsoft Azure, она уже доступна для разработчиков на capptain.com. Azure предоставляет надежный набор сервисов извещающих уведомлений для разработчиков на платформах Windows 8, Android и iOS. В этой статье рассматриваются некоторые сложные вопросы в области извещающих уведомлений для разработчиков мобильных приложений.
Capptain предоставляет богатые средства анализа, способные сообщить вам большую часть того, что вам нужно знать о вашем приложении, включая то, какие устройства используются и наблюдаемые тенденции использования. Она может определять сегменты, создавать маркетинговые кампании и монетизировать ваши приложения. Это мощная технология, и она может начать работать на вас, как только вы сделаете всего несколько начальных шагов.
Будучи сам разработчиком мобильных приложений, я быстро осознал преимущества Capptain в комбинации с Azure Mobile Services. Мое приложение Active Fitness (activefitness.co) имеет весомый контингент пользователей. Это исследование дало мне возможность поэкспериментировать с Capptain и использовать ее в производственной версии своего приложения.
Концепции Capptain
В этой статье я буду использовать следующие основные концепции Capptain: действия (activities), задания (jobs), информация приложения (appinfo) и дополнительные данные (extras). В табл. 1 перечислено большинство концепций и терминов Capptain, и она должна стать хорошей отправной точкой, которая поможет вам понять, как работает Capptain.
Табл. 1. Концепции и термины Capptain
Устройство | Каждое устройство получает уникальный идентификатор. Если у вас есть несколько приложений на одном устройстве, идентификатор устройства (deviceid) будет одним и тем же. (В Windows Phone этот идентификатор уникален для каждого устройства и каждого издателя.) |
Пользователь | Capptain неявно назначает одного пользователя одному устройству, поэтому устройства и пользователи являются эквивалентными понятиями в Capptain |
Сеанс | Сеанс (session) — одно применение приложения пользователем. Сеансы автоматически вычисляются по последовательности действий, выполняемых пользователем. Необходимости запускать/останавливать сеанс нет. Вместо этого вы можете запускать/останавливать действия. Если ни о каких действиях не сообщается, то не сообщается и ни о каких сеансах |
Действие | Действие (activity) — одно использование данной части приложения одним пользователем. Пользователь может выполнить только одно действие единовременно. Действие имеет длительность: от момент начала до момента окончания |
Событие | Событие является мгновенным действием; в отличие от действия оно не имеет длительности |
Задание | Задание подобно действию. Вы можете запускать/останавливать его, и у него есть длительность. Задание предназначено для фоновой задачи, у которой может отсутствовать UI |
Ошибка | Ошибка — проблема, корректно сообщаемая приложением |
Крах | Capptain SDK автоматически сообщает о крахе (crash) и сбое приложения |
Информация приложения (appinfo) | Используется для того, чтобы помечать пользователей (аналог cookie). Для одного конкретного ключа Capptain отслеживает только самый последний набор значений (хронологии не поддерживается). Присваивание или изменение значения appinfo заставляет Capptain заново оценивать набор критериев аудитории в этом appinfo (если таковой есть), т. е. appinfo можно использовать для инициации извещений реального времени |
Дополнительные данные (extras) | Дополнительные данные (extras) — некие произвольные данные, которые можно назначать событию, ошибке, действию или заданию. Вы можете использовать эти данные, чтобы создавать способы идентификации сегментов ваших действий, заданий и т. д. |
Действие — фундаментальная концепция Capptain. Например, действием может быть страница в вашем приложении, на которую заходит пользователь. Или любое действие, имеющее длительность. Задание является еще одной концепцией, которое имеет длительность, но задания сопоставляются с фоновыми задачами, не обязательно связанными с UI.
Capptain предоставляет обширный набор API и «родных» SDK для всех основных платформ: iOS, Android и Windows 8 (табл. 2).
Табл. 2. Capptain предоставляет обширный набор API
Analytics API | HTTP API, который позволяет получать аналитические данные (отображаемые на вкладке Analytics веб-сайта Capptain) |
Monitor API | XMPP API, который позволяет получать данные мониторинга реального времени (отображаемые на вкладке Monitor веб-сайта Capptain) |
Segments API | HTTP API, который позволяет управлять сегментами Capptain (все, что находится на вкладке Segments веб-сайта Capptain) |
Reach API | HTTP API, который позволяет управлять кампаниями Reach без использования вручную веб-интерфейса Capptain. Reach API является высокоуровневым API, поэтому вы можете использовать веб-интерфейс диспетчера кампаний Capptain Reach |
Device API | HTTP/REST API, который позволяет получать и расширять информацию, собираемую платформой Capptain обо всех устройствах (и пользователях), использующих ваше приложение |
Push API | HTTP API, который позволяет посылать ваши собственные данные на устройства, выполняющие приложение со встроенным Capptain SDK |
SDK API | HTTP API, который позволяет получать журналы так, как это делалось бы в «родном» SDK, но с использованием простого HTTP API |
Account API | Набор HTTP API, предназначенный для получения или обновления информации, связанный с учетной записью |
Помимо этих API, Capptain предоставляет несколько SDK для всех основных платформ (табл. 3).
Табл. 3. Capptain предоставляет SDK для всех основных платформ
Android | Native Android SDK |
iOS | Native iOS SDK |
Web | Web SDK |
Windows Phone | Windows Phone SDK |
Windows 8 | Windows Store SDK |
Приступаем к работе с Capptain
Сначала зайдите на capptain.com и создайте учетную запись. Затем установите выбранное вами приложение в Android, iOS, Windows Phone, Windows Store (Windows 8.x) или Web. С каждым приложением сопоставляется SDK. Как им пользоваться, я покажу после того, как объясню некоторые концепции Capptain. Capptain также предоставляет набор демонстрационных приложений, которые вы найдете в нижней части страницы вашей учетной записи. Кроме того, вы можете проверить, какой вид аналитической информации оно предоставляет, поскольку необходимые данные уже есть во всех этих приложениях.
Реализация отслеживания действий
Чтобы использовать Capptain, начните с выбора правильного SDK для вашей платформы. Я поместил в GitHub пример, где показывается, как применять SDK for Windows 8.1. SDK на других платформах работают похожим образом и используют те же базовые концепции.
В Package.appxmanifest нужно убедиться, что включена поддержка Интернета. Перейдите в панель Declarations вашего файла Package.appxmanifest. В Available Declarations выберите и добавьте File Type Associations. На правом экране в поле Name введите capptain_log_file, а в поле File type — .set. Затем в Available Declarations выберите и добавьте Cached File Updater.
Далее с помощью NuGet получите новейшую версию Capptain for Windows 8.1. В обработчик события OnLaunched приложения добавьте код инициализации для Capptain. Скопируйте идентификатор своего приложения и ключ SDK с портала Capptain:
/* Конфигурация Capptain */
CapptainConfiguration capptainConfiguration = new CapptainConfiguration();
capptainConfiguration.Agent.ApplicationId = "YOUR_APPID";
capptainConfiguration.Agent.SDKKey = "YOUR_SDK_KEY";
/* Инициализируем агент Capptain,
используя указанную выше конфигурацию */
CapptainAgent.Instance.Init(e, capptainConfiguration);
В своем приложении я хочу, чтобы Capptain отслеживал страницы и то, сколько времени пользователь проводит на каждой странице. Следующий фрагмент после включения в метод OnNavigatedTo страницы начнет отслеживать HubPage как новое действие в Capptain:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
CapptainAgent.Instance.StartActivity("HubPage");
}
Помните, что в Capptain допускается только одно действие единовременно для каждого пользователя каждого приложения. Вам не нужно вызывать EndActivity. Новая страница вызывает StartActivity, а старое действие автоматически завершается. Если у вас много страниц, вы можете упростить этот подход, наследуя от особого класса — CapptainPage. Тогда ваши страницы будут автоматически сопоставляться с новыми действиями.
Другой способ отслеживания действий с помощью Capptain — наследование страницы от CapptainPage. Преимущество этого метода в том, что вам не потребуется вызывать StartActivity вручную с обработчике OnNavigatedTo. CapptainPage сделает это за вас. Для этого просто вставьте следующий код в свой XAML:
<capptain:CapptainPage
xmlns:capptain="using:Capptain.Agent">
<!-- разметка -->
...
</capptain:CapptainPage >
С помощью этого кода я вызвал метод StartActivity с передачей HubPage. Используя CapptainPage, вам не нужно вызывать StartActivity. Он будет отслеживать имя вашей страницы по умолчанию. Вы всегда можете переопределить GetCapptainPageName, чтобы сообщать другое значение:
// В файле .xaml.cs
protected override string GetCapptainPageName()
{
/* Ваш код */
return "new name";
}
Применение Reach с извещающими уведомлениями
Capptain особенно интересна для мобильных приложений, так как позволяет отправлять уведомления пользовательским устройствам через Capptain Reach. Вы можете подготавливать кампании, а затем отслеживать, какие результаты они дают. Для отправляемых вами объявлений можно определить имя кампании, контент (включая изображения), аудиторию, временной интервал и т. д.
Capptain Reach — мощное средство, поскольку оно дает возможность адресно запускать рекламные кампании, промо-акции и другие типы маркетинговых кампаний. Ключ к успешному маркетингу — соответствие аудитории. Благодаря способности Capptain точно узнавать, на какой странице находится пользователь или какое действие он выполняет, каждая кампания может быть более релевантной и эффективной.
В случае приложений Windows Store технология Capptain использует Windows Notifications Service (WNS). Вам нужно обновить манифест своего пакета и портал Capptain ключом WNS. Существует два сценария, в которых вы можете интегрировать эти уведомления в приложение: через интеграцию Overlay или WebView. Создав учетную запись Capptain, вы можете обратиться к документации Capptain за более подробными рекомендациями и инструкциями по интеграции в «How to Integrate Capptain Reach on Windows» (bit.ly/12b3bub) и «Initialize the Capptain Reach SDK» (bit.ly/1w90J3M).
Capptain особенно интересна для мобильных приложений, так как позволяет отправлять уведомления пользовательским устройствам.
Интеграция Overlay
В этом случае вы наследуете от CapptainPageOverlay. Уведомления будут доставляться автоматически, используя ресурсы, включенные в NuGet-пакет в каталоге Resources/Overlay. Когда уведомление поступает от Reach API, страница вашего приложения будет вводить объявление, встроенное в представление CapptainOverlayAnnouncement или CapptainOverlayNotification. В каждом из этих представлений содержится WebView, который отображает объявление. Вы можете детально настроить эти представления, если хотите реализовать свое представление уведомления Reach.
Сначала включите следующее объявление в какую-либо XAML-страницу в вашем проекте (я реализовал этот метод в ItemPage.xaml проекта-примера, сопутствующего этой статье):
xmlns:capptain="using:Capptain.Overlay"
В XAML наследуйте свою страницу не от <Page>, а от CapptainPageOverlay:
public sealed partial class ItemPage :
CapptainPageOverlay
Capptain Reach встроит свои представления уведомления в первую сетку, которую он обнаружит на вашей странице. Если вам нужно, чтобы такое представление получала конкретная сетка, используйте сетку с именем CapptainGrid:
<Grid x:Name="CapptainGrid"></Grid>
Интеграция WebView
В этом случае вам нужно включить WebView с именем capptain_notification_content или capptain_announcement_content в зависимости от типа контента, который вы хотите принимать. Используйте следующий код для этого:
<capptain:CapptainPage
xmlns:capptain="using:Capptain.Page">
<Grid>
<WebView x:Name="capptain_notification_content"
Visibility="Collapsed"
ScriptNotify="scriptEvent" Height="64"
HorizontalAlignment="Right"
VerticalAlignment="Top"/>
<WebView x:Name="capptain_announcement_content"
Visibility="Collapsed"
ScriptNotify="scriptEvent" HorizontalAlignment="Right"
VerticalAlignment="Top"/>
<!-- Разметка -->
</Grid>
</capptain:CapptainPage>
Данные извещающих уведомлений
Помимо получения визуального контента приложением с помощью интеграции Overlay или WebView, приложение может принимать непосредственно данные извещающих уведомлений. Для этого надо реализовать два обработчика. Лучшее место для их размещения — конструктор объекта App в App.cs (рис. 1).
Рис. 1. Реализация обработчиков в конструкторе объекта App
CapptainReach.Instance.DataPushStringReceived += (body) =>
{
Debug.WriteLine("String data push message received: " + body);
return true;
};
CapptainReach.Instance.DataPushBase64Received
+= (decodedBody, encodedBody) =>
{
Debug.WriteLine("Base64 data push message received: "
+ encodedBody);
// Что-то делаем с decodedBody, например обновляем
// представление изображения
return true;
};
CapptainReach.Instance.PushMessageReceived
+= (id, replyTo, payload) =>
{
// Ваш код
};
Анализ результатов
Capptain предоставляет богатое представление ваших данных. Вы можете просматривать техническую информацию, связанную с вашими устройствами, например название производителя, версию ОС, прошивку, разрешение экрана и версию SDK. Теперь, когда ваше приложение отправляет информацию о действиях в Capptain, вы можете отслеживать любые нужные вам технические детали.
Заключение
Извещающие уведомления — мощный механизм. Большинство платформ в настоящее время предоставляют механизмы сервисов уведомлений, такие как WNS, ANS и Google Cloud Messaging. Azure также обеспечивает масштабируемую инфраструктуру Notification Hubs. По мере развития мобильных приложений возникает необходимость в анализе, охвате аудитории, рекламе и координации маркетинговых кампаний через извещающие уведомления. Capptain предоставляет аналитическое звено для таких извещающих уведомлений нового уровня, которое понадобится многим разработчикам мобильных приложений.