我正在构建一个基于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],
});
}
}
答案 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