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


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

Примечание.

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