无法获取博览会推送令牌

时间:2020-07-02 22:15:27

标签: android reactjs react-native expo

我正在构建一个基于Expo的React本机应用程序,我使用Expo的push通知。当我使用expo cli测试应用程序时,我得到了expo令牌。在生成.aab并将其发布到Play商店后。我无法从任何设备获得expo令牌。我不知道为什么。

registerForPushNotification = async() => {
    // Check for existing permissions
    const {status} = await Permissions.getAsync(Permissions.NOTIFICATIONS);
    let finalStatus = status;

    // if no existing permission, ask user for permission
    if (status !== 'granted') {
        const {status} = await Permissions.askAsync(Permissions.NOTIFICATIONS);
        finalStatus = status;
    }

    // if no permission, exit the function.
    if (finalStatus !== 'granted') {
      alert('Failed to get push token for push notification!')
      return;}

    // get push notification token.
    let token = await Notifications.getExpoPushTokenAsync();
    alert(token)
    firebase.database().ref('/users/usersInfo/'+user).update({
      expoToken:token
    })

    if (Platform.OS === 'android') {
      Notifications.createChannelAndroidAsync('default', {
        name: 'default',
        sound: true ,
        priority: 'max',
        vibrate: [0, 250, 250, 250],
      });
    }
  }

1 个答案:

答案 0 :(得分:2)

为了对您的应用程序使用推送通知,您应该为Firebase注册该应用程序。

如果您尚未为您的应用创建Firebase项目,请点击Firebase Console中的添加项目

在新项目控制台中,点击将Firebase添加到Android应用,然后按照设置步骤进行操作。 确保您输入的Android软件包名称与您的 android.package中的 app.json 的值相同。

下载google-services.json文件并将其放置在Expo应用程序的根目录中。

在您的app.json中,添加一个android.googleServicesFile字段,其相对路径为您刚刚下载的google-services.json文件。如果将其放在根目录中,则可能类似于:

{
  ...
  "android": {
    "googleServicesFile": "./google-services.json",
    ...
  }
}

现在,您可以使用expo build:android -t apk或应用包expo build:android -t app-bundle

来构建独立的应用程序

来自documentation