工作原理
我已经按照以下Xamarin指南,在我们的Xamarin Forms应用程序的Android端实现了推送通知:
这个方法非常有效,当应用程序在后台运行时,正确地调用OnNewIntent。然后,我们调用我们的方法来处理推送通知的意图,一切都很好。
protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
GoogleListenerService.ReceivedRemoteNotification(intent);
}
问题是什么
如果我们关闭应用程序,触发推送通知,然后单击推送通知,则似乎应用程序不会调用OnNewIntent,并且似乎会像单击应用程序图标一样启动应用程序(调用OnCreate)。
尝试了哪些方法
我尝试实现的主要解决方法如下:
Xamarin只有一个需要字符串URL输入的GetIntent方法,使用以下内容会导致空数据。
Intent intent = new Intent(this, typeof(MainActivity));
Bundle data = intent.Extras;
在第二篇帖子中,我们在意图服务、MainActivity.cs文件和清单文件中将LaunchMode更改为SingleTop,但行为没有任何变化。
编辑
推送通知总是被接收到,并且无论应用程序处于后台还是完全关闭时OnMessageReceived始终会被调用。此外,当应用程序处于后台时,OnNewIntent会接收到挂起的意图,但当应用程序关闭时则不会。
this.Intent.Extras;
始终似乎评估为null(目前位于OnResume方法中)。