Поделиться через


Настройка приложения для целевых push-уведомлений

Вы можете использовать страницу push-уведомлений в Центре партнеров для прямого взаимодействия с клиентами, отправляя целевые push-уведомления на устройства, на которых установлено приложение универсальной платформы Windows (UWP). Например, вы можете использовать целевые push-уведомления для поощрения клиентов к принятию действий, таких как оценка приложения или попытка новой функции. Вы можете отправлять несколько различных типов push-уведомлений, включая всплывающие уведомления, уведомления плиток и необработанные XML-уведомления. Вы также можете отслеживать частоту запусков приложений, полученных из push-уведомлений. Для получения дополнительной информации об этой функции см. отправку push-уведомлений клиентам вашего приложения.

Прежде чем отправлять целевые push-уведомления клиентам из Центра партнеров, необходимо использовать метод класса StoreServicesEngagementManager в пакете SDK служб Microsoft Store, чтобы зарегистрировать приложение для получения уведомлений. Вы можете использовать дополнительные методы этого класса, чтобы уведомить Центр партнеров о том, что приложение было запущено в ответ на целевое push-уведомление (если вы хотите отслеживать частоту запусков приложений, полученных из ваших уведомлений) и прекратить получение уведомлений.

Настройка проекта

Прежде чем писать любой код, выполните следующие действия, чтобы добавить ссылку на пакет SDK служб Microsoft Store в проекте:

  1. Если это еще не сделано, установите пакет SDK служб Microsoft Store на компьютере разработки.
  2. Откройте проект в Visual Studio.
  3. В обозревателе решений щелкните правой кнопк ой мыши узел ссылки проекта и щелкните Добавить ссылку.
  4. В диспетчере ссылок разверните универсальные окна и щелкните "Расширения".
  5. В списке пакетов SDK установите флажок рядом с Microsoft Engagement Framework и нажмите кнопку "ОК".

Регистрация для получения push-уведомлений

Чтобы зарегистрировать приложение для получения целевых push-уведомлений из Центра партнеров:

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

  2. Добавьте следующую инструкцию в начало файла кода.

    using Microsoft.Services.Store.Engagement;
    
  3. Получите объект 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, этот метод собирает учетную запись клиента Microsoft, вошедшего в систему на устройстве. Позже при отправке целевого push-уведомления в сегмент, включающий этого клиента, Центр партнеров отправляет уведомление на устройства, связанные с учетной записью Майкрософт этого клиента.

Если клиент, который запустил ваше приложение, передает свое устройство другому пользователю, оставаясь при этом вошедшим в учетную запись Майкрософт, помните, что этот другой пользователь может увидеть уведомление, предназначенное исходному клиенту. Это может иметь непредвиденные последствия, особенно для приложений, предлагающих услуги, к которым клиенты могут войти для использования. Чтобы запретить другим пользователям видеть целевые уведомления в этом сценарии, вызовите метод UnregisterNotificationChannelAsync при выходе клиентов из вашего приложения. Дополнительные сведения см. в разделе "Отмена регистрации push-уведомлений " далее в этой статье.

Как приложение реагирует, когда пользователь запускает приложение

После регистрации вашего приложения для получения уведомлений, и когда вы отправляете push-уведомление клиентам вашего приложения из Центра партнеров, один из следующих входных точек в вашем приложении будет вызываться, когда пользователь запускает приложение в ответ на push-уведомление. Если у вас есть код, который требуется запустить при запуске приложения, можно добавить код в одну из этих точек входа в приложение.

  • Если push-уведомление имеет тип активации переднего плана, переопределите метод OnActivated класса App в вашем проекте и добавьте в этот метод ваш код.

  • Если push-уведомление имеет тип фоновой активации, добавьте ваш код в метод Run для фоновой задачи .

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

Уведомление Центра партнеров о запуске приложения

Если вы выбрали параметр отслеживание запуска приложения для целевого 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-уведомлений в это приложение, приложение должно запросить новый канал.