Flutter、Swift、および MoEngage-iOS-SDK(バージョン 7.x.x、8.x.x、9.x.x)を使用して、iOS デバイスでの一般的なプッシュ通知の問題を回避する方法

問題

iOSデバイスでFlutter、Swift、MoEngage-iOS-SDK(バージョン7.x.x、8.x.x、9.x.x)を使用して、プッシュ通知の配信失敗、画面ナビゲーション、ディープリンク、リッチランディングを含む一般的な問題が発生しています。

解決策

次の手順を実行します。

  1. Firebase プロキシ :
    • Firebase プッシュ通知を使用していない場合は、info.plist に FirebaseAppDelegateProxyEnabled キーを追加し、値を Boolean = False/NO に設定して Firebase プロキシを無効にします。
    • プッシュ通知をテストします。成功した場合は、これ以上の操作は必要ありません。そうでない場合は、以下の手順に従ってください。
    • Firebase プッシュ通知を使用している場合は、このステップをスキップして次のステップに進んでください。
  2. MoEngageプロキシを無効化する :
    • info.plistにMoEngageAppDelegateProxyEnabledキーを追加し、値をBoolean = false/NOに設定します boolean.png
  3. didRegisterForRemoteNotificationsWithDeviceToken 関数のオーバーライド :
    • AppDelegate ファイルの didRegisterForRemoteNotificationsWithDeviceToken 関数をオーバーライドします。
      Swift
      override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
        //7.xx version
        MoEngage.sharedInstance().setPushToken(deviceToken)
      
        //8.xx version
        MOMessaging.sharedInstance.setPushToken(deviceToken)
      
        //9.xx version
        MoEngageSDKMessaging.sharedInstance.setPushToken(deviceToken)
      }
          
  4. UNUserNotificationCenterDelegate関数のオーバーライド :
    • AppDelegateファイルでUNUserNotificationCenterDelegate関数をオーバーライドします。
      Swift
      //Try without willPresent if it works good to go! else override it
      override func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) - Void) {
        if #available(iOS 14.0, *) {
          completionHandler([.sound,.alert, .banner, .list])
        } else {
          completionHandler([.sound,.alert])
        }
      }
          
      override func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () - Void) {
        super.userNotificationCenter(center, didReceive: response, withCompletionHandler: completionHandler)
        //7.xx version
        MoEngage.sharedInstance().userNotificationCenter(center, didReceive: response)
        
        //8.xx version
        MOMessaging.sharedInstance.userNotificationCenter(center, didReceive: response)
        
        //9.xx version
        MoEngageSDKMessaging.sharedInstance.userNotificationCenter(center, didReceive: response)        
      }

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

How can we improve this article?