如何在 Flutter 中获取“应用程序实例 ID”

anu*_*der 9 dart firebase flutter firebase-in-app-messaging

我想设置firebase inapp 消息传递在我的颤振应用程序上。

首先,它需要FirebaseInstanceId如解释here,以便我可以测试向我的设备发送消息。

但是该文档没有详细说明如何在 Android 上获取它,尤其是在 flutter 上。

任何的想法 ?

注意:有人声称他可以在 flutter 中使用inapp-messaging,请看这里

先感谢您...

Dav*_*yan 11

可以在 iOS上使用-instanceIDWithHandler或在 Android上使用getInstanceId获取 Firebase 实例 ID 。

在撰写本文时,我不知道有一个独立的插件可以做到这一点,这意味着您有两个选择:

  • 编写您自己的插件来包装这些方法的本机实现
  • 使用firebase_messaging Flutter 插件,该插件碰巧通过其 getToken() 方法公开实例 ID

如果您使用 firebase_messaging 路线(请注意,这意味着您正在添加另一个依赖项),您可以执行以下操作:

final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
Run Code Online (Sandbox Code Playgroud)

然后,在您的代码中的某处:

var token = await _firebaseMessaging.getToken();
print("Instance ID: $token");
Run Code Online (Sandbox Code Playgroud)

更新

当您调用 get token 时,您会得到以下格式的内容:NNNNNNN:MMMMMMMMMMMMMMMMMM。只取冒号前的第一部分 ( NNNNNNNN ) - 这是测试应用内消息活动所需的实例 ID。

  • 我尝试输入从 `_firebaseMessaging.getToken()` 获得的 `instance_id` / `token`,但我在 firebase 控制台中收到错误:`格式无效。请检查文档以检索实例 ID。`有什么想法吗? (2认同)

pri*_*sar 5

您可以在终端中运行它。

adb logcat | grep 'InAppMessaging'
Run Code Online (Sandbox Code Playgroud)

02-26 23:47:44.835 28379 28379 I FIAM.Headless:使用安装 ID dTEmOkEwRzC_xiO8YNPXs0 启动 InAppMessaging 运行时


Mau*_*kom 1

要检索,FirebaseInstanceId您需要实施 Firebase 应用内消息传递 SDK 并确保您的应用连接到 Firebase。

应用程序连接到 Firebase 后,FirebaseInstanceId一旦应用程序运行,它就会将其添加到 Android 日志中。

在您链接的文章中,Google 解释说您可以FirebaseInstanceId通过在日志中查找字符串来找到I/FIAM.Headless: Starting InAppMessaging runtime with Instance ID <YOUR_APP_ID>

如果您使用 Android Studio,您应该能够使用该logcat窗口浏览设备的日志(在调试应用程序时)。该logcat窗口还允许您搜索和过滤日志,因此找到提到的字符串应该相对容易。

简而言之(在 Android Studio 中):

  1. 在您的应用程序中实施 Firebase 应用内消息传递 SDK;
  2. 开始调试App(最好在真实的Android设备上);
  3. 调试时打开Logcat窗口;
  4. 在日志中搜索字符串I/FIAM.Headless: Starting InAppMessaging runtime with Instance ID
  5. FirebaseInstanceId 应直接列在字符串后面。