【问题标题】:Firebase Cross Platform Push Notification Plugin Duplicating MainActivityFirebase跨平台推送通知插件复制MainActivity
【发布时间】:2019-07-25 10:11:02
【问题描述】:

我正在使用以下 plugin 在我的 xamarin 应用程序中实施和处理 FCM 推送通知,但我面临一个未解决的小问题。

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

问题:

虽然我将LaunchMode 设置为SingleTop,但它似乎在复制我的MainActivity

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

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

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

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

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

  • 在他们的 Github 存储库中记录 issue

以上方法均无效

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

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

  2. 用您自己的 Firebase 替换他们的 google-services.json 文件
    控制台。

  3. 将应用程序示例的包名更改为您的 已在 Firebase 上注册

  4. 按照我上面提到的步骤进行

附加信息

  • 插件版本号:1.3.0
  • 设备测试在:Huawei P8 Lite Android 版本 6.0
  • VS 版本:Visual Studio 2019
  • Xamarin 版本:3.4.0.1009999

【问题讨论】:

  • 您的有效负载可能存在问题。尝试仅发送“数据”有效负载。
  • 嗨,感谢您的输入@r15 :),它似乎只使用数据有效负载工作正常,但现在,通知没有标题也没有正文
  • 你需要给 'title' 和 'body' 键加上一些数据。
  • 我不确定我是否理解正确,是否意味着我必须将标题和正文键放在数据负载中?
  • 我认为这些是保留的关键字,如标题、副标题和正文。试试看。

标签: firebase xamarin xamarin.forms firebase-cloud-messaging


【解决方案1】:

更新:

不幸的是,下面的方法在尝试实现后并没有成功,我应该早点想到我仍然需要 iOS 的通知对象。

我自己和团队将实施一种方法来跟踪服务器上的用户平台,并根据他们的平台向他们发送带有或不带有通知的通知,因为 iOS 处理 FCM 通知的方式与 Android 不同。现在我们将使用 Google 的 Instance ID 服务来确定现有用户在哪个平台上。

解决方法:

我希望这对将来的某人有所帮助,如果没有,我希望有人可以为我提供更好的解决方案。

为了让我的蛋糕吃起来,基本上能够将通知对象保留在有效负载中而不是删除它并且必须进一步自定义有效负载以显示仅适用于iOS的通知,我更改了MainActivity的(用户点击通知时启动的活动)启动模式为SingleInstance。这样我就可以将通知对象保留在有效负载中,而不必担心 OnNotificationReceived 事件会被触发两次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多