С помощью 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-уведомления, когда приложение находится в фоновом режиме, и блокировать их, когда приложение не запущено (поскольку ни один пользователь еще не вошел в систему)?