iPhone 和 Android 应用的推送通知

:information_source: 摘要 通过您自己的应用程序将 Discourse 推送通知发送到 iOS 或 Android
:hammer_and_wrench: 代码库链接 GitHub - Sprachprofi/discourse-fcm-notifications: Send Discourse push notifications through FCM to any custom app
:open_book: 安装指南 如何在 Discourse 中安装插件

功能

如果您有一个可供用户浏览 Discourse 论坛的应用程序,此插件将允许您的论坛通过该应用程序发送推送通知。(如果您还没有应用程序但可能想要一个,请查看这个极简解决方案。)

方便用户: 当用户收到有关私人消息的推送通知时,点击该通知将打开您的应用程序并直接显示该私人消息。这比使用Discourse Pushover Notifications 具有重大优势,因为后者会将推送通知打开到 Pushover 应用程序,并且不清楚如何找到消息。另一方面,如果您想要无需应用程序的推送通知,Pushover Notifications 是个不错的选择。

通用: 使用 Google Firebase 作为消息层,因此所有 iOS 和 Android 设备都可以接收这些推送通知,只要该国家/地区没有禁止 Google。

配置

  1. 安装并激活插件。
  2. 为您的应用程序创建一个免费的 Google Firebase 项目。将 Firebase 项目 ID、令牌和 json(包含 OAuth 数据)添加到 Discourse 中的插件设置。
  3. 调整您的应用程序代码:
  • 通过将设备令牌发送到 YOUR_FORUM.com/fcm_notifications/automatic_subscribe?token=… 来订阅活动用户接收推送通知。请务必在设备令牌更改时每次都调用此函数。

  • 通过调用 YOUR_FORUM.com/fcm_notifications/automatic_subscribe?token=REMOVE 来取消订阅活动用户。

  • 推送通知将具有以下形式:

    'data': {
      "linked_obj_type" => 'link',
      "linked_obj_data" => <指向消息中引用的帖子/消息的 URL>,
    },
    'notification': {
      title: <“用户名在主题中给您发了私人消息”之类的标题>,
      body: <消息的开头>,
    }
    

因此,您需要使用标题/正文显示推送通知,并且点击它应该会在应用内浏览器中打开 linked_obj_data 中的 URL。这就是您需要在应用程序代码中定义的。

示例实现

您可以在此处获取一个适用于此插件的极简但功能齐全的应用程序的代码。(这是我们创建的生产应用程序的白标版本,该应用程序需要此插件。)如果您只想要一个显示您的论坛、发送推送通知并记住用户登录/上次阅读主题的应用程序,您只需更改品牌并将其提交到应用商店即可完成。否则,它可以作为基础。

此应用程序的收入将用于资助插件的维护和进一步开发。

4 个赞

推送通知是否适用于 Discourse Hub 应用?

Discourse Hub 应用已内置推送通知。

即使是自托管网站也一样?

1 个赞

嗯……不完全确定,但我不这么认为。那样的话,这个插件将非常有用。

目前不行——无论你用的是哪个应用,都需要修改代码。

我认为你无法将此插件用于任何非你所有的应用,因为推送通知依赖于在论坛和应用之间共享 Google 身份验证(或者如果未使用 Google Firebase,则为其他身份验证)。这样,Google 才能知道谁负责发送潜在的恶意或垃圾通知,并可以关闭其账户。此外,根据设置方式,Google 身份验证还可以用于处理该用户的 Google 账户的其他事务。因此,我认为 Discourse Hub 应用的创建者(或任何应用创建者)都不愿意与拥有自托管 Discourse 论坛的每个人共享其 Google 身份验证,当然,他们也不能在应用代码中添加每个人的 Google 身份验证(也不要求最终用户在下载后进行此操作)。对于 Google Firebase 推送通知,论坛和应用必须由同一组织拥有,我看不出有什么办法可以绕过这一点。

有可供测试的实时应用吗?

请参见上文——您无法在论坛上安装此插件并将其连接到任何现有应用,因为这意味着应用所有者必须与您共享其 Google 身份验证。

如果您想查看示例实现,请参阅 https://youtube.com/shorts/iGmTBmhpD4A?feature=share (所示应用是 此代码 ,未经任何修改)。但您的应用可以完全不同——该插件仅使您的论坛能够向您的应用发送推送通知,如何显示由您决定。