如何解决Expo推送通知错误:“无法获取设备的GCM令牌”?

时间:2018-12-27 13:53:15

标签: react-native expo

我创建了一个新的Expo项目,并尝试获取推送通知令牌,但失败。我收到一个错误:“ [未处理的承诺被拒绝:错误:无法获取设备的GCM令牌]”。我该如何解决?谢谢! 我的设备:三星Galaxy A5(2017),Android 8.0.0

我阅读了有关此内容的信息,它应该与“ expo start”一起使用,但对我而言这无效。 package.json中默认为“ expo start”。

package.json:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "eject": "expo eject"
  },
  "dependencies": {
    "expo": "^31.0.2",
    "react": "16.5.0",
    "react-native": "https://github.com/expo/react-native/archive/sdk-31.0.0.tar.gz"
  },
  "devDependencies": {
    "babel-preset-expo": "^5.0.0"
  },
  "private": true
}

App.js:

componentDidMount() {
    this.registerForPushNotifications();
}

registerForPushNotifications = async () => {
    const { status: existingStatus } = await Permissions.getAsync(
        Permissions.NOTIFICATIONS
    );
    let finalStatus = existingStatus;
    if (existingStatus !== 'granted'){
        const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
        finalStatus = status;
    }
    if (finalStatus !== 'granted') {return;}
    let token = await Notifications.getExpoPushTokenAsync();
    console.log("token: ",token);
};

2 个答案:

答案 0 :(得分:1)

对于其他遇到此问题的人,请尝试以下操作(不按顺序进行):

  • 使用“ expo start”运行您的应用。如果尚未安装expo-cli,则请安装它。
  • 清除您的应用缓存
  • 使用“博览会登录”登录您的cli博览会

这些步骤对我有用。干杯

答案 1 :(得分:0)

您需要在Expo.io上拥有一个帐户。

然后,您将必须在要与Expo交互的终端上输入以下命令。

expo login 

它将要求您输入世博帐户的用户名,密码。您可以查看下面的图像,以查看其在Visual Studio代码中的外观。

enter image description here

有关详细信息,请检查Github answer