我遇到了一个问题,几天来我一直在尝试调试,但最后还是失去了希望。我有一个带有 Firebase 后端的 Ionic 移动应用程序。我正在尝试编写 Twilio 聊天。我现在正试图让它在 iOS 上工作。这是我到目前为止所做的:
- 我在 Apple 开发者帐户中创建了一个 APN 授权 key 。 (我还使用 APN 证书对此进行了测试)
- 我已将 APN 授权 key 添加到 Firebase 控制台。 (我还使用 APN 证书对此进行了测试)
- 我测试了从 Firebase 控制台发送推送通知,我能够成功获得它。到目前为止没有问题。
- 然后我将 FCM key 添加到 Twilio。
- 将我的 Ionic 应用配置为使用 Ionic Firebase SDK ( https://github.com/dpa99c/cordova-plugin-firebasex ) 获取 FCM token 。获得 FCM token 后,我将 FCM token 传递给 Twilio。
- 将 Ionic 应用配置为在收到通知时处理通知。
- 尝试发送聊天消息。未收到通知。当我打开应用程序时,我可以看到 Firebase SDK 正确记录了通知。
为什么我在应用程序未打开时收不到通知?逻辑显然是有效的,因为 Firebase SDK 在我打开应用程序时确实收到了通知。它似乎也不是任何应用程序设置的问题,因为当应用程序在后台直接从 Firebase 发送通知时,我能够收到通知。
这是我生成 Twilio 访问 token 的后端代码:
// Twilio credentials and ids are defined here...
const chatGrant = new ChatGrant({
serviceSid: twilioServiceSid,
pushCredentialSid: credentialSid
});
const token = new AccessToken(twilioAccountSid, twilioApiKey, twilioApiSecret, {
identity: uid
});
token.addGrant(chatGrant);
return token.toJwt();
这是我的 Ionic 代码片段,它从设备获取 FCM token 并将其传递给 Twilio
async getToken(): Promise<string> {
let token: string;
if (this.platform.is('ios')) {
const hasPermission = await this.firebaseNative.hasPermission();
if (!hasPermission) {
try {
await this.firebaseNative.grantPermission();
} catch (e) {
console.error('Error granting permission', e);
throw e;
}
}
try {
token = await this.firebaseNative.getToken();
} catch (e) {
console.error('Error getting FCM token', e);
throw e;
}
}
return token;
}
setPushRegistrationId(token: string) {
return this.twilioClient.setPushRegistrationId('fcm', token);
}
getToken().then(async (token) => {
console.log('fcm token: ' + token);
setPushRegistrationId(token)
.then(() => console.log('Added registration token'))
.catch(e => console.error('Error registering fcm token', e));
}).catch(e => {
console.error('Error getting FCM token', e);
console.error(e);
});
求助!谢谢😊
最佳答案
我最近发现 Twilio 只发送 FCM 的数据推送。这意味着您需要处理后台推送并决定是否在本地显示它们。
关于ios - 未收到 Twilio 聊天推送通知(Ionic 和 Firebase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59998509/