ios - 未收到 Twilio 聊天推送通知(Ionic 和 Firebase)

标签 ios firebase ionic-framework twilio ionic4

我遇到了一个问题,几天来我一直在尝试调试,但最后还是失去了希望。我有一个带有 Firebase 后端的 Ionic 移动应用程序。我正在尝试编写 Twilio 聊天。我现在正试图让它在 iOS 上工作。这是我到目前为止所做的:

  1. 我在 Apple 开发者帐户中创建了一个 APN 授权 key 。 (我还使用 APN 证书对此进行了测试)
  2. 我已将 APN 授权 key 添加到 Firebase 控制台。 (我还使用 APN 证书对此进行了测试)
  3. 我测试了从 Firebase 控制台发送推送通知,我能够成功获得它。到目前为止没有问题。
  4. 然后我将 FCM key 添加到 Twilio。
  5. 将我的 Ionic 应用配置为使用 Ionic Firebase SDK ( https://github.com/dpa99c/cordova-plugin-firebasex ) 获取 FCM token 。获得 FCM token 后,我将 FCM token 传递给 Twilio。
  6. 将 Ionic 应用配置为在收到通知时处理通知。
  7. 尝试发送聊天消息。未收到通知。当我打开应用程序时,我可以看到 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/

相关文章:

ios - CF_EXTERN_C_BEGIN、CF_EXTERN_C_END 和 CF_EXPORT 有什么作用?

angularjs - Firebase auth.$createUserWithEmailAndPassword 不起作用

ios - Firebase 通知(仅数据)未在前台接收

android - 测试 - 在此过程中未初始化 FirebaseApp

html - CSS 不适用于页脚 angularjs

ios - 降低 CCSprite 速度时的奇怪行为

ios - 使用 Facebook 应用程序时 Facebook 登录回调不起作用 - Swift

angular - ionic native http get 返回类型错误 - 无法读取未定义的属性 'match'

javascript - ionic 设置后退按钮以路由/查看

ios - 在 iOS 中详细说明宏?