Firebase 跨平台推送通知插件复制主活动



我正在使用以下插件在我的 xamarin 应用程序中实现和处理FCM推送通知,我遇到了一个未解决的小问题。

我希望其他人已经弄清楚了,可以帮助我。

问题:

它似乎在复制我的MainActivity尽管我LaunchMode设置为SingleTop.

图书馆提供了一个名为OnNotificationReceived的事件。 当应用程序位于前台时,此事件仅按预期触发一次

当我最小化应用程序(让它在后台运行)时,向设备发送通知并点击通知,它会按预期打开应用程序,但是如果我在此之后发送另一个通知,而应用程序位于前台,OnNotificationReceived事件将触发两次

  • 我尝试将NotificationActivityFlags属性更改为 SingleTop。

  • 我尝试将MainActivity的启动模式更改为SingleTop

  • 尝试运行他们提供的示例应用程序来检查我是否做错了什么,但仍然发生了同样的事情。

  • 问题记录在其 Github 存储库中

以上这些都不起作用

此问题可以通过以下方式重现:

  1. 从存储库下载示例,上面提供的链接

  2. 从 Firebase
    console 将他们的 google-services.json 文件替换为您自己的文件。

  3. 将应用程序示例的包名称更改为 已在火力基地注册

  4. 按照我提到的上述步骤进行操作

附加信息

  • 插件版本号: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事件被触发两次。

最新更新