使用离子电容器的 FCM 推送通知在 IOS 中不起作用

Posted

技术标签:

【中文标题】使用离子电容器的 FCM 推送通知在 IOS 中不起作用【英文标题】:FCM Push Notification are not working in IOS using Ionic Capacitor 【发布时间】:2021-11-02 09:19:45 【问题描述】:

使用 CAPACITORIONICandroid 上一切正常,但在 ios 中出现以下错误:

在检索发件人 ID“mySenderId”的 FCM 令牌之前未设置 APNS 设备令牌。此 FCM 令牌的通知将不会通过 APNS 传递。请确保在设置 APNS 设备令牌后重新检索 FCM 令牌。

????   Capacitor Doctor  ???? 

Latest Dependencies:

  @capacitor/cli: 3.2.2
  @capacitor/core: 3.2.2
  @capacitor/android: 3.2.2
  @capacitor/ios: 3.2.2

Installed Dependencies:

  @capacitor/cli: 3.2.2
  @capacitor/core: 3.2.2
  @capacitor/android: 3.2.2
  @capacitor/ios: 3.2.2

我可以在我的Xcode 日志中看到 FCM 令牌,但通知不起作用。

参考资料:

My Issue

Simmilar Issue

【问题讨论】:

【参考方案1】:

解决办法是在FCM token之前注册APNS token。

 PushNotifications.requestPermissions().then((permission) => 
    if (permission.receive == "granted") 
      // Register with Apple / Google to receive push via APNS/FCM
      if(Capacitor.getPlatform() == 'ios')
        PushNotifications.register().then((res)=>
          console.log('From Regisiter Promise', res)
        )
        PushNotifications.addListener('registration', (token: Token)=>            
          FCM.getToken().then((result) => 
            this.remoteToken = result.token;
          ).catch((err) => console.log('i am Error' , err));
        )
      else
        FCM.getToken().then((result) => 
          this.remoteToken = result.token;
        ).catch((err) => console.log('i am Error' , err));
      
     else 
      // No permission for push granted
      alert('No Permission for Notifications!')
    
  );

对于最新版本的插件:

PushNotifications.requestPermissions().then((permission) => 
        if (permission.receive == "granted") 

          PushNotifications.addListener('registration', async ( value ) => 
            let token = value // Push token for Android
          
            // Get FCM token instead the APN one returned by Capacitor
            if (Capacitor.getPlatform() === 'ios') 
              const  token: fcm_token  = await FCM.getToken()
              token = fcm_token
            
            // Work with FCM_TOKEN
            
            console.log(token);
          )
         else 
          // No permission for push granted
          alert('No Permission for Notifications!')
        
      );

【讨论】:

FCM 类从何而来? github.com/capacitor-community/fcm【参考方案2】:

您似乎缺少 APNS 设置并将其与 FCM 连接。只需按照这个很棒的教程: https://devdactic.com/push-notifications-ionic-capacitor/

【讨论】:

我确实按照相同的教程来集成推送通知。

以上是关于使用离子电容器的 FCM 推送通知在 IOS 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

离子/电容器 - PushNotiifcations - Android - “通知” + “数据” 消息

FCM 推送通知在 android 中不起作用(使用 cordova-plugin-fcm 2.1.1 的 Ionic 项目)

适用于 iOS 的 Google Firebase 推送通知在生产环境中不起作用

FCM(Firebase 云消息传递):Firebase 推送通知在 Firefox 中显示,但在 Chrome 中不显示

如何使用 FCM 在 ios 推送通知中播放自定义通知声音

如何在 Xamarin.iOS 中使用 FCM(Firebase 云消息传递)发送 iOS 推送通知