我遇到了一个问题,我已经尝试调试了几天,失去了希望。我有一个带有Firebase后端的Ionic移动的应用程序。我正在写一篇Twilio的聊天。我现在正试着让它在iOS上运行。这是我目前所做的:
1.我在Apple开发者帐户中创建了一个APN身份验证密钥。(我还使用APN证书对此进行了测试)
1.我已经将APN验证密钥添加到Firebase控制台。(我还使用APN证书对此进行了测试)
1.我测试了从Firebase控制台发送推送通知,我能够成功地获得它。到目前为止没有问题。
1.然后,我将FCM密钥添加到Twilio中。
1.使用Ionic Firebase SDK(https://github.com/dpa99c/cordova-plugin-firebasex)配置我的Ionic应用程序以获取FCM令牌。在获得FCM令牌之后,我将FCM令牌传递给Twilio。
1.已将Ionic应用程序配置为在收到通知时处理通知。
1.已尝试发送聊天消息。未收到通知。当我打开应用程序时,我可以看到Firebase SDK正确地记录了通知。
应用程序未打开时,为什么我没有收到通知?这个逻辑显然是有效的,因为当我打开应用程序时,Firebase SDK确实收到了通知。它似乎也没有任何应用程序设置的问题,因为我能够得到通知时,应用程序在后台时,直接从Firebase发送通知。
下面是生成Twilio访问令牌的后端代码:
// 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令牌并将其传递给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);
});
型
救命啊!谢谢你的好意😊
2条答案
按热度按时间ff29svar1#
我最近发现Twilio只为FCM发送数据推送。这意味着您需要处理后台推送,并决定是否在本地显示它们。
wnrlj8wa2#
在setPushRegistrationId方法中使用“apn”而不是“fcm”在Twilio上注册。参考URL:https://sdk.twilio.com/js/conversations/releases/2.1.0/docs/modules.html#NotificationsChannelType