我正在使用以下插件在我的 xamarin 应用程序中实现和处理FCM推送通知,我遇到了一个未解决的小问题。
我希望其他人已经弄清楚了,可以帮助我。
问题:
它似乎在复制我的MainActivity
尽管我LaunchMode
设置为SingleTop
.
图书馆提供了一个名为OnNotificationReceived
的事件。 当应用程序位于前台时,此事件仅按预期触发一次。
当我最小化应用程序(让它在后台运行)时,向设备发送通知并点击通知,它会按预期打开应用程序,但是如果我在此之后发送另一个通知,而应用程序位于前台,OnNotificationReceived
事件将触发两次。
-
我尝试将
NotificationActivityFlags
属性更改为 SingleTop。 -
我尝试将
MainActivity
的启动模式更改为SingleTop
我 尝试运行他们提供的示例应用程序来检查我是否做错了什么,但仍然发生了同样的事情。
将问题记录在其 Github 存储库中
以上这些都不起作用。
此问题可以通过以下方式重现:
-
从存储库下载示例,上面提供的链接
-
从 Firebase
console 将他们的 google-services.json 文件替换为您自己的文件。 -
将应用程序示例的包名称更改为 已在火力基地注册
-
按照我提到的上述步骤进行操作
附加信息
- 插件版本号:1.3.0
- 设备测试:华为P8 Lite安卓版本 6.0
- VS版本:Visual Studio 2019
- Xamarin 的版本:3.4.0.1009999
更新:
不幸的是,下面的方法在尝试实现它后并没有被证明是成功的,我应该早点想到我仍然需要 iOS 的通知对象。
我和团队将实现一种方法来跟踪服务器上的用户平台,并根据他们的平台向他们发送通知,无论是否通知,因为iOS处理FCM通知的方式与Android不同。现在,我们将使用 Google 的实例 ID 服务来确定现有用户所在的平台。
解决方法:
我希望这对将来的某人有所帮助,如果没有,我希望有人可以为我提供更好的解决方案。
为了吃我的蛋糕并吃掉它,基本上能够将通知对象保留在有效负载中而不是将其删除,并且必须进一步自定义有效负载以仅针对iOS显示通知,我将MainActivity
(用户点击通知时启动的活动)启动模式更改为SingleInstance
。这样,我可以将通知对象保留在有效负载中,而不必担心OnNotificationReceived
事件被触发两次。