【问题标题】:Flutter FCM getToken() returns nullFlutter FCM getToken() 返回 null
【发布时间】:2021-01-17 00:58:05
【问题描述】:

FCM getToken() 在真实设备上总是返回 null,但在模拟器上工作得很好,我不知道是什么原因造成的。这是我如何使用getToken()

FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
String fcmToken = "";
await _firebaseMessaging.getToken().then((value) async {
  fcmToken = value;
  if (fcmToken != "") {
    await _userCollection.doc(user.id).set({
      'email': user.email,
      'name': user.name,
      'noHp': user.noHp,
      'alamat': user.alamat,
      "email_verification": user.emailVerification,
      "phone_verification": user.phoneVerification,
      "device_token": fcmToken,
    });
  }
  return;
});

我使用的真实设备是 Android Marshmallow。

【问题讨论】:

  • 你在哪里返回令牌?上面的sn-p只获取和设置数据,没有返回,但最后一个return是空的
  • 我用它来立即设置 device_token,它在模拟器上工作得很好。
  • 我应该这样使用它吗:String fcmToken = await _firebaseMessaging.getToken().then((value) async { return value; });
  • 有点,但是当您立即设置它时,这不会有太大变化,但是按照您提到的添加.catch(err) 尝试它,这样您就可以检测是否发生了一些错误
  • 好主意,我试试

标签: firebase flutter firebase-cloud-messaging


【解决方案1】:

et Token的方法如下:

final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

_firebaseMessaging.getToken().then((String token) {
   assert(token != null);
   saveToken(token);
});

我将令牌保存在 pref 中以供进一步使用。您可以根据需要修改它。

void saveToken(String token) async {
    var prefs = await SharedPreferences.getInstance();
    await prefs.setString(Constants.DeviceToken, token);
}

如有任何问题,请随时发表评论。我正在我当前的应用程序中使用。

对于 iOS,您需要获得许可。

    _firebaseMessaging.requestNotificationPermissions(
        const IosNotificationSettings(
            sound: true, badge: true, alert: true, provisional: true));
    _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings) {
      print("Settings registered: $settings");
    });

【讨论】:

    【解决方案2】:

    对于具有更新版本的用户,有一种访问令牌的新方法:

    String token = await FirebaseMessaging.instance.getToken();
    

    只有在初始化 Firebase 并请求权限后,您才能访问令牌。

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 2021-09-28
      • 2020-11-10
      • 2020-07-12
      • 2021-06-14
      相关资源
      最近更新 更多