【发布时间】:2021-04-10 16:00:49
【问题描述】:
我正在开发一个世博会应用程序,我已经添加了世博会推送通知,这适用于 iOS,但不适用于 Android。问题是由 getExpoPushTokenAsync() 引起的,因为它没有解决。
我正在使用 Expo 版本 40.0.0 并使用以下代码获取通知令牌:
export async function registerForPushNotificationsAsync(t) {
if (Constants.isDevice) {
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') {
alert(t('no_access_push_notifications'));
return;
}
const token = await Notifications.getExpoPushTokenAsync();
return token;
// this.setState({ expoPushToken: token });
} else {
console.log("No physical device");
}
if (Platform.OS === 'android') {
Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
vibrationPattern: [0, 250, 250, 250],
lightColor: '#FF231F7C',
});
}
};
我根据 Expo docs for Android 在 Firebase 中创建了一个新项目,并将 google-services.json 复制到我的应用程序的根目录,并将其链接到我的 app.json 中
{
"project_info": {
"project_number": "xxxxxxxxx",
"project_id": "xxxxxxxxx",
"storage_bucket": "xxxxxxxxx"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "xxxxxxxxx",
"android_client_info": {
"package_name": "xxxxxxxxx"
}
},
"oauth_client": [
{
"client_id": "xxxxxxxxx",
"client_type": 3
}
],
"api_key": [
{
"current_key": "xxxxxxxxx"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "xxxxxxxxx",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}
我的 app.json 包含以下代码:
"android": {
"package": "xxxxx",
"versionCode": 4050,
"googleServicesFile": "./google-services.json",
"config": {
"googleSignIn": {
"apiKey": "xxxxx"
}
},
"useNextNotificationsApi": true
},
对此有什么想法吗?
【问题讨论】:
-
您是在设备上还是在 Android 模拟器上进行测试?
-
在安卓设备上
-
你找到解决这个问题的方法了吗?
-
你上传你的服务器密钥了吗? docs.expo.io/push-notifications/using-fcm
-
@Timo 是的,我也上传了密钥,但仍然无法使用
标签: javascript firebase react-native ecmascript-6 expo