首页 > 解决方案 > 反应本机firebase getToken()不起作用

问题描述

刚刚升级到 react native 0.61.5 和 react native firebase (v5.5.7)getToken()功能似乎没有运行,或者它似乎只是挂在await.

我有这个功能:

async function updatePushNotificationsEnabled(isEnabled: boolean) {
  return updateUser({ pushNotificationsEnabled: isEnabled, firebaseId: await getToken() })
}

反过来又调用:

async function getToken() {
  try {
    return FCM().getToken();
  } catch (error) {
    return undefined;
  }
}

如果我关注https://rnfirebase.io/docs/v5.xx/messaging/device-token我似乎无法从服务器取回令牌。如果我尝试console.log(await getToken()),我不会在控制台中得到任何东西。如果我console.log(FCM().getToken())在控制台中得到一个承诺。我究竟做错了什么?还是我需要升级到最新版本的 react native firebase?

我还检查了权限,并且设备上的权限已打开,因此返回 true。

我确实有一个检查权限的功能,但这是在应用程序的早期完成的,而不是我正在做的事情。

async function requestPermissionIfNeeded() {
  try {
    if (await FCM().hasPermission()) {
      return true;
    }
    await FCM().requestPermission();
    return await FCM().hasPermission();
  } catch (error) {
    return false;
  }
}

标签: javascriptreact-nativereact-native-firebase

解决方案


最终在 iOS 上为我们工作的是将 react native firebase 库更新到v5.6.0(因为我们还不能更新到 v6)。

这要求我们按照~6.13.0指南更新底层 Podfile Firebase 版本。做了一个pod install,看起来该getToken功能再次起作用。


推荐阅读