Фильтруйте push-уведомления AppCenter в зависимости от текущего вошедшего в систему пользователя - PullRequest
0 голосов
/ 24 июня 2019

С помощью AppCenter я могу отправлять push-уведомления на все мои устройства с помощью приложения Xamarin Forms (только для Android).

Поскольку мои устройства будут использоваться совместно, я не могу выполнить фильтр уведомлений на стороне AppCenter на основе идентификаторов устройств.

Мне нужно сделать фильтр на основе текущего пользователя, вошедшего в мое приложение. Для этого с помощью push-уведомления я также отправляю WorkerID, который служит фильтром.

Хотя я могу сделать этот фильтр, когда приложение находится на переднем плане, он не работает, когда приложение работает в фоновом режиме или не работает (нормальное поведение, поскольку событие push находится в запуске приложения)

protected override void OnStart()
{
   // This should come before AppCenter.Start() is called
   // Avoid duplicate event registration:
   if (!AppCenter.Configured)
   {
       Push.PushNotificationReceived += (sender, e) =>
       {
           var title = e.Title;
           var message = e.Message;

           // If app is in background title and message are null
           // App in foreground
           if (!string.IsNullOrEmpty(title))
           {
               foreach (string key in e.CustomData.Keys)
               {
                   if (e.CustomData[key] == Settings.WorkerID)
                   {
                      Current.MainPage.DisplayAlert(title, message, "OK");                                
                   }
               }
           }
        };
   }

   // Handle when your app starts
   AppCenter.Start("android=xxxxxxxxxxxxxxxxxx", typeof(Push));
}

Есть ли способ перехватывать и фильтровать push-уведомления, когда приложение находится в фоновом режиме, и блокировать их, когда приложение не запущено (поскольку ни один пользователь еще не вошел в систему)?

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Через документ вы можете включить-или-отключить-push-at-runtime , поэтому можете включить или отключить push-уведомление при использовании перехода в фоновый режим или возврата на передний план, например:

protected override void OnSleep()
{
    // Handle when your app sleeps
    Push.SetEnabledAsync(false);
}

protected override void OnResume()
{
    // Handle when your app resumes
    Push.SetEnabledAsync(true);           
}

Вы также можете включить или отключить push, когда пользователь входит или выходит из системы:

public void userLogin() {
    Push.SetEnabledAsync(true);
}

public void userLoginOut() {
    Push.SetEnabledAsync(false);
}

Установите его в нужном месте, чтобы удовлетворить ваши требования.

1 голос
/ 24 июня 2019

Чтобы отфильтровать пользователей при отправке push-уведомлений, предпочтительно установить идентификатор пользователя :

AppCenter.SetUserId("your-user-id");

Затем на appcenter.ms перейти к Push>Send notificaiton.Заполните обязательные поля.А затем на втором шаге выберите User list вместо All registered devices.Затем введите идентификаторы пользователей, разделенные запятыми.

...