gpt4 book ai didi

android - 电容器推送通知和 FCM 生成不同的 token ,导致 android 崩溃

转载 作者:行者123 更新时间:2023-12-05 00:00:42 25 4
gpt4 key购买 nike

带有 Capacitor 推送通知和 FCM 插件的 Ionic 5 应用。

import { FCM } from '@capacitor-community/fcm';

import {
ActionPerformed,
PushNotificationSchema,
PushNotifications,
Token,
} from '@capacitor/push-notifications';

为什么它们都生成不同的 token ??

对于Capacitor/PushNotifications,下面生成一个token

PushNotifications.addListener('registration',
async (token: Token) => {
console.log('token: ' + token.value);
}
).catch(e=>{alert('reqPerm'+e)});

而对于 FCM,以下生成不同的 token

FCM.getToken()
.then(async (r) => {
console.log(`token saved ${r.token}`)
})
.catch((err) => console.warn('error saving token', err));

FCM token 在 iOS 上有效(iPhone 接收通知),但在 Android 上注册它时,它会说一些关于无效 token 注册的信息。所以我不得不为 Android 使用 PushNotifications.addListener 的 token ,但是当它收到通知时,应用程序崩溃了。

我确保 google-services.json 文件位于 android/apps 文件夹中。

什么给了??有什么建议吗?

最佳答案

是的,在新的更新中,FCM 正在返回 JWT token 。有一个与 iOS 相同的解决方法。您需要先注册才能获得 token 。

getToken() {
PushNotifications.requestPermissions().then(async (permission) => {
if (permission.receive == "granted") {
// Register with Apple / Google to receive push via APNS/FCM
if (Capacitor.getPlatform() == 'ios') {
await PushNotifications.register();
PushNotifications.addListener('registration', (token: Token) => {
FCM.getToken().then((result) => {
console.log(result.token); // This is token for IOS
}).catch((err) => console.log('i am Error', err));
})
} else if (Capacitor.getPlatform() == 'android') {
await PushNotifications.register()
PushNotifications.addListener('registration', async ({ value }) => {
let androidToken = value; // this is token for Android use this token
});
}
} else {
// No permission for push granted
alert('No Permission for Notifications!')
}
});

}

关于android - 电容器推送通知和 FCM 生成不同的 token ,导致 android 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70570848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com