В настоящее время я использую Xamarin.Forms с AppCenter Push, чтобы получать уведомления.Моя конечная цель - иметь эту функциональность:
Если приложение закрыто ИЛИ открыто, я могу получить уведомление (указано в списке уведомлений) и по щелчку перенаправить пользователя на определенную страницу.На основании предоставленных пользовательских данных я собираюсь перенаправить его на другую страницу.В документах AppCenter Push для Xamarin.Forms я обнаружил, что если приложение открыто, мой метод должен иметь новое событие уведомления, но не будет - отображать уведомление.
Вот мой очень простойкод: App.xaml.cs
protected override async void OnStart()
{
await Push.SetEnabledAsync(true);
if (!AppCenter.Configured)
{
Push.PushNotificationReceived += (sender, e) =>
{
DependencyService.Resolve<IMessageService>().LongAlert("TESTT");
// Add the notification message and title to the message
string summary = $"Push notification received:" +
$"\n\tNotification title: {e.Title}" +
$"\n\tMessage: {e.Message}";
// If there is custom data associated with the notification,
// print the entries
if (e.CustomData != null)
{
summary += "\n\tCustom data:\n";
foreach (string key in e.CustomData.Keys)
{
summary += $"\t\t{key} : {e.CustomData[key]}\n";
}
}
// Send the notification summary to debug output
Debug.WriteLine(summary);
};
}
AppCenter.Start("", typeof(Push));
}
Тогда у меня есть: MainActivity.cs
protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
Push.CheckLaunchedFromNotification(this, intent);
}
Изо всех сил пытается реализовать этот простой сценарийЯ столкнулся с разными проблемами:
- Когда я впервые запускаю приложение и отправляю уведомление (пока приложение открыто), обработчик «PushNotificationReceived» не срабатывает.Затем я оставляю приложение в фоновом режиме и снова отправляю уведомление.Теперь на этот раз я получаю уведомление внутри своего «Списка уведомлений» на Android, и когда я нажимаю на него, приложение открывается, затем проходит через «OnNewIntent» и затем нажимает «PushNotificationReceived».Каждое уведомление после этого делает одно и то же (поэтому оно работает правильно), независимо от того, запущено ли приложение на переднем или заднем плане.Подводя итог, проблема в том, что в первый раз, когда я запускаю приложение, я не получаю уведомления и получаю их только в том случае, если я минимизирую их и открываю новое уведомление, поэтому я использую метод "OnNewIntent".
- Второй сценарий - как узнать, был ли запущен «PushNotificationReceived», когда приложение работает в фоновом или переднем плане, исходя из того, что я хочу запустить другую логику.Поскольку очевидно, что AppCenter не будет отображать уведомление, если приложение открыто, я хочу создать свое собственное, но в этом случае я не знаю, было ли приложение открыто, когда пришло уведомление или нет.
Если вам нужна дополнительная информация, пожалуйста, дайте мне знать!Заранее спасибо!