【问题标题】:Is there any way to send FCM notification inside from flutter App?有没有办法从flutter App内部发送FCM通知?
【发布时间】:2022-01-05 16:02:58
【问题描述】:

嘿,我正在尝试将通知从我的颤振应用程序发送到另一个应用程序。但找不到任何东西。我该如何实施?请帮我。 谢谢。

【问题讨论】:

  • firebaser here 调用 FCM REST API 要求您在代码中指定 FCM server* 键。顾名思义,此密钥应仅用于服务器端代码或其他受信任的环境中。这样做的原因是任何拥有 FCM 服务器密钥的人都可以向您的所有用户发送他们想要的任何消息。通过在您的 Android/iOS 应用程序中包含此密钥,恶意用户可以找到它,并且您将用户置于危险之中。请参阅stackoverflow.com/a/37993724 以获得更好的解决方案。

标签: firebase flutter dart firebase-cloud-messaging flutter-web


【解决方案1】:

使用云函数(推荐)

您可以创建一个可调用的云函数来发送 FCM 通知。

exports.sendNotif = functions.https.onCall(async (data, context) => {
  // Your notification sending code here, something like
  // await admin.messaging().sendMulticast({data: ..., tokens: ...});
});

使用 cloud_function package from pub.dev 从您的 Flutter 应用中调用此函数。

final callable = FirebaseFunctions.instance.httpsCallable('sendNotif');
await callable();

使用服务帐号(不推荐)

  1. 在 Firebase 控制台中转到项目设置(齿轮图标)-> 服务帐户。
  2. 点击“管理服务帐户权限”。
  3. 添加新的服务帐户并填写所需信息。
  4. 在角色部分,为其授予对 FCM 的所需访问权限,例如选择“Firebase Cloud Messaging Admin”。
  5. 现在您可以看到新创建的服务帐户,按下操作(三点),然后选择管理键。
  6. 创建新的 JSON 密钥并下载文件。此文件包含敏感信息,例如私钥。
  7. 现在,您可以通过使用 JSON 文件进行身份验证,从 Flutter 代码中充当服务帐户。 More info here.

您可以看到为什么这不是一个可行的选择,您需要在 Flutter 应用程序中附带服务帐户 JSON 密钥,因此理论上任何用户都可以通过获取密钥轻松发送任何通知。

使用云功能(或服务器)方法可以让您指定应该发送的内容以及可以发送它们的人。

【讨论】:

  • 我想在本地做,不使用任何服务器或云功能。
  • 我不建议您这样做,但您也可以创建一个服务帐户并直接从应用程序创建 FCM 通知。我将更新我的答案以包含更多详细信息。
  • @SunnyRahi 更新了我的答案
  • 感谢您的回复。我看起来很忙。我是菜鸟。嘿,您知道使用其他 api 的任何其他方式吗?我找到了这个文档,但不知道如何调用? firebase.flutter.dev/docs/messaging/notifications#via-rest
  • @SunnyRahi 您绝对可以通过 rest 发送通知,但您仍然需要通过传入 Authorization 标头(如示例中所示)来获得授权,否则任何人都可以发送通知,对吧?为了获得令牌,您应该执行类似于我编写的方法的操作。
【解决方案2】:

您应该有一个连接到您想要的 firebase 帐户的服务器,然后从第一个应用获取您的请求并向您想要的应用和令牌发送通知。

【讨论】:

  • 我想在本地做。使用应用程序。
猜你喜欢
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2021-01-07
  • 1970-01-01
  • 2016-08-02
相关资源
最近更新 更多