不接收 Twilio 聊天推送通知(Ionic 和 Firebase)
Posted
技术标签:
【中文标题】不接收 Twilio 聊天推送通知(Ionic 和 Firebase)【英文标题】:Not Receiving Twilio Chat Push Notifications (Ionic & Firebase) 【发布时间】:2020-01-31 05:47:12 【问题描述】:我遇到了一个问题,我已经尝试调试了几天但失去了希望。我有一个带有 Firebase 后端的 Ionic 移动应用程序。我正在尝试编写 Twilio 聊天。我现在正试图让它在 ios 上工作。这是我到目前为止所做的:
-
我在 Apple 开发者帐户中创建了一个 APN 身份验证密钥。 (我也使用 APN 证书对此进行了测试)
我已将 APN 身份验证密钥添加到 Firebase 控制台。 (我也使用 APN 证书对此进行了测试)
我测试了从 Firebase 控制台发送推送通知,我能够成功获取它。到目前为止没有问题。
然后我将 FCM 密钥添加到 Twilio。
配置我的 Ionic 应用程序以使用 Ionic Firebase sdk (https://github.com/dpa99c/cordova-plugin-firebasex) 获取 FCM 令牌。获得 FCM 令牌后,我将 FCM 令牌传递给 Twilio。
配置 Ionic 应用程序以在收到通知时处理通知。
尝试发送聊天消息。未收到通知。当我打开应用程序时,我可以看到 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 代码的 sn-p,它从设备获取 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);
);
请帮忙!谢谢 ????
【问题讨论】:
【参考方案1】:我最近发现 Twilio 只为 FCM 发送数据推送。这意味着您需要处理后台推送并决定是否在本地显示它们。
【讨论】:
没错。我还将它们显示为本地通知,但问题是 iOS 将限制应用于远程通知。所以每小时只允许 2-3 个远程通知。请参阅:developer.apple.com/documentation/usernotifications/… 因此,使用 Twilio Chat 每小时无法向用户呈现“真实”通知超过 2-3 次。不知道为什么 Twilio 确实将它们作为数据通知而不是推送通知发送。还有其他解决方案可以正确处理吗?以上是关于不接收 Twilio 聊天推送通知(Ionic 和 Firebase)的主要内容,如果未能解决你的问题,请参考以下文章