Настройка приложения для получения целевых push-уведомлений
Вы можете использовать страницу push-уведомлений в Центре партнеров для непосредственного взаимодействия с клиентами, отправив целевые push-уведомления на устройства, на которых установлено приложение универсальная платформа Windows (UWP). Например, вы можете использовать целевые push-уведомления для поощрения клиентов к принятию действий, таких как оценка приложения или попытка новой функции. Вы можете отправлять несколько различных типов push-уведомлений, включая всплывающие уведомления, уведомления плиток и необработанные XML-уведомления. Вы также можете отслеживать частоту запусков приложений, полученных из push-уведомлений. Дополнительные сведения об этой функции см. в статье "Отправка push-уведомлений клиентам приложения".
Прежде чем отправлять целевые push-уведомления клиентам из Центра партнеров, необходимо использовать метод класса StoreServicesEngagementManager в пакете SDK служб Microsoft Store, чтобы зарегистрировать приложение для получения уведомлений. Вы можете использовать дополнительные методы этого класса, чтобы уведомить Центр партнеров о том, что приложение было запущено в ответ на целевое push-уведомление (если вы хотите отслеживать частоту запусков приложений, полученных из ваших уведомлений) и прекратить получение уведомлений.
Настройка проекта
Прежде чем писать любой код, выполните следующие действия, чтобы добавить ссылку на пакет SDK служб Microsoft Store в проекте:
- Если это еще не сделано, установите пакет SDK служб Microsoft Store на компьютере разработки.
- Откройте проект в Visual Studio.
- В Обозреватель решений щелкните правой кнопкой мыши узел "Ссылки" для проекта и нажмите кнопку "Добавить ссылку".
- В диспетчере ссылок разверните универсальные окна и щелкните "Расширения".
- В списке пакетов SDK установите флажок рядом с Microsoft Engagement Framework и нажмите кнопку "ОК".
Регистрация для получения push-уведомлений
Чтобы зарегистрировать приложение для получения целевых push-уведомлений из Центра партнеров:
В проекте найдите раздел кода, который выполняется во время запуска, в котором можно зарегистрировать приложение для получения уведомлений.
Добавьте следующую инструкцию в начало файла кода.
using Microsoft.Services.Store.Engagement;
Получите объект StoreServicesEngagementManager и вызовите одну из перегрузок RegisterNotificationChannelAsync в коде запуска, который вы определили ранее. Этот метод следует вызывать при каждом запуске приложения.
Если вы хотите, чтобы Центр партнеров создавал собственный URI канала для уведомлений, вызовите перегрузку RegisterNotificationChannelAsync().
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync();
Внимание
Если приложение также вызывает CreatePushNotificationChannelForApplicationAsync для создания канала уведомлений для WNS, убедитесь, что код не вызывает одновременно перегрузку CreatePushNotificationChannelForApplicationAsync и перегрузку RegisterNotificationChannelAsync(). Если необходимо вызвать оба этих метода, убедитесь, что они вызываются последовательно и ожидают возврата одного метода перед вызовом другого.
Если вы хотите указать URI канала для использования для целевых push-уведомлений из Центра партнеров, вызовите перегрузку RegisterNotificationChannelAsync(StoreServicesNotificationChannelParameters). Например, может потребоваться сделать это, если приложение уже использует службы push-уведомлений Windows (WNS) и вы хотите использовать тот же URI канала. Сначала необходимо создать объект StoreServicesNotificationChannelParameters и назначить свойство CustomNotificationChannelUri URI канала.
StoreServicesNotificationChannelParameters parameters = new StoreServicesNotificationChannelParameters(); parameters.CustomNotificationChannelUri = "Assign your channel URI here"; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); await engagementManager.RegisterNotificationChannelAsync(parameters);
Примечание.
При вызове метода RegisterNotificationChannelAsync файл с именем MicrosoftStoreEngagementSDKId.txt создается в локальном хранилище данных приложения (папка, возвращаемая свойством ApplicationData.LocalFolder ). Этот файл содержит идентификатор, используемый целевой инфраструктурой push-уведомлений. Убедитесь, что приложение не изменяет или не удаляет этот файл. В противном случае пользователи могут получать несколько экземпляров уведомлений, или уведомления могут работать неправильно.
Как целевые push-уведомления направляются клиентам
Когда приложение вызывает RegisterNotificationChannelAsync, этот метод собирает учетную запись Майкрософт клиента, вошедшего в систему на устройстве. Позже при отправке целевого push-уведомления в сегмент, включающий этого клиента, Центр партнеров отправляет уведомление на устройства, связанные с учетной записью Майкрософт этого клиента.
Если клиент, который начал работу с приложением, предоставляет своему устройству другого пользователя для использования, пока они все еще вошли на устройство с учетной записью Майкрософт, помните, что другой пользователь может увидеть уведомление, которое было предназначено для исходного клиента. Это может иметь непредвиденные последствия, особенно для приложений, предлагающих службы, которые клиенты могут входить в систему. Чтобы запретить другим пользователям видеть целевые уведомления в этом сценарии, вызовите метод UnregisterNotificationChannelAsync при выходе клиентов из вашего приложения. Дополнительные сведения см. в разделе "Отмена регистрации push-уведомлений " далее в этой статье.
Как приложение реагирует, когда пользователь запускает приложение
После регистрации приложения для получения уведомлений и отправки push-уведомления клиентам вашего приложения из Центра партнеров будет вызвана одна из следующих точек входа в приложении, когда пользователь запускает приложение в ответ на push-уведомление. Если у вас есть код, который требуется запустить при запуске приложения, можно добавить код в одну из этих точек входа в приложение.
Если push-уведомление имеет тип активации переднего плана, переопределите метод OnActivated класса App в проекте и добавьте код в этот метод.
Если push-уведомление имеет тип фоновой активации, добавьте код в метод Run для фоновой задачи.
Например, вы можете вознаграждать пользователей приложения, которые приобрели все платные надстройки в приложении, предоставив им бесплатную надстройку. В этом случае вы можете отправить push-уведомление в сегмент клиента, предназначенный для этих пользователей. Затем вы можете добавить код, чтобы предоставить им бесплатную покупку в приложении в одной из точек входа, перечисленных выше.
Уведомление Центра партнеров о запуске приложения
Если выбрать параметр частоты запуска приложения Track для целевого push-уведомления в Центре партнеров, вызовите метод ParseArgumentsAndTrackAppLaunch из соответствующей точки входа в приложении, чтобы уведомить Центр партнеров о том, что приложение было запущено в ответ на push-уведомление.
Этот метод также возвращает исходные аргументы запуска для приложения. При выборе отслеживания скорости запуска приложения для push-уведомлений в аргументы запуска добавляется непрозрачный идентификатор отслеживания, помогающий отслеживать запуск приложения в Центре партнеров. Аргументы запуска приложения необходимо передать в метод ParseArgumentsAndTrackAppLaunch , а этот метод отправляет идентификатор отслеживания в Центр партнеров, удаляет идентификатор отслеживания из аргументов запуска и возвращает исходные аргументы запуска в код.
Способ вызова этого метода зависит от типа активации push-уведомления:
Если push-уведомление имеет тип активации переднего плана, вызовите этот метод из переопределения метода OnActivated в приложении и передайте аргументы, доступные в объекте ToastNotificationActivatedEventArgs , передаваемом этому методу. В следующем примере кода предполагается, что в файле кода используются инструкции для пространств имен Microsoft.Services.Store.Engagement и Windows.ApplicationModel.Activation.
protected override void OnActivated(IActivatedEventArgs args) { base.OnActivated(args); if (args is ToastNotificationActivatedEventArgs) { var toastActivationArgs = args as ToastNotificationActivatedEventArgs; StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch( toastActivationArgs.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
Если push-уведомление имеет тип фоновой активации, вызовите этот метод из метода Run для фоновой задачи и передайте аргументы, доступные в объекте ToastNotificationActionTriggerDetail , передаваемом этому методу. В следующем примере кода предполагается, что в файле кода используются инструкции для пространств имен Microsoft.Services.Store.Engagement, Windows.ApplicationModel.Background и Windows.UI.Notifications.
public void Run(IBackgroundTaskInstance taskInstance) { var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; if (details != null) { StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault(); string originalArgs = engagementManager.ParseArgumentsAndTrackAppLaunch(details.Argument); // Use the originalArgs variable to access the original arguments // that were passed to the app. } }
Отмена регистрации для push-уведомлений
Если вы хотите, чтобы приложение перестало получать целевые push-уведомления из Центра партнеров, вызовите метод UnregisterNotificationChannelAsync .
StoreServicesEngagementManager engagementManager = StoreServicesEngagementManager.GetDefault();
await engagementManager.UnregisterNotificationChannelAsync();
Обратите внимание, что этот метод запрещает канал, используемый для уведомлений, чтобы приложение больше не получало push-уведомлений от любых служб. После закрытия канал нельзя использовать повторно для любых служб, включая целевые push-уведомления из Центра партнеров и других уведомлений с помощью WNS. Чтобы возобновить отправку push-уведомлений в это приложение, приложение должно запросить новый канал.