不接收 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)的主要内容,如果未能解决你的问题,请参考以下文章

Twilio 可编程聊天 - 推送通知未到达

在接收推送通知时获取数据 - ionic3

Ionic 可以在没有推送服务的情况下接收推送通知吗?

IONIC FCM推送通知ios,无法接收

为啥我无法通过 ionic 框架在 Android 上接收推送通知

移动应用程序 - Twilio 视频/呼叫不一致的推送通知