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

問題

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

指示

次の手順を実行します。

  1. Firebaseプロキシ :
    • Firebaseプッシュ通知を使用していない場合は、info.plistにFirebaseAppDelegateProxyEnabledキーを追加し、値をBoolean = False/NOに設定してFirebaseプロキシを無効にします。
    • プッシュ通知をテストします。成功した場合、これ以上の操作は必要ありません。それ以外の場合は、以下の手順に従ってください。
    • Firebaseプッシュ通知を使用している場合は、この手順をスキップし、以下の手順に進んでください。
  2. UNUserNotificationCenterDelegate を設定する :
    • AppDelegate.swift で、didFinishLaunch メソッド内で UNUserNotificationCenterDelegate を設定します。
    • didFinishLaunch で Firebase を初期化している場合は、MoEngage SDK を初期化する前に行ってください。
    • このメソッドの開始時に UNUserNotificationCenterDelegate が設定されていることを確認します。

      React-Native
      //7.xx
      import MoEngage
      
      //8.xx
      import MoEngageSDK
      import ReactNativeMoEngage
      
      //9.xx
      import MoEngageSDK
      import ReactNativeMoEngage
      
      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) - Bool {
        
        UNUserNotificationCenter.current().delegate = self
        
        FIRApp.configure() //Firebase configuration - syntax could differ according to versions
      
        //MoEngage Initializatoin - use specific version code only
        
        //7.xx version //Set MoEngage Properties in Info.plist
        MoEngage.setDataCenter(DATA_CENTER_0X)
        MoEngage.enableSDKLogs(true)
        MoEngage.setAppGroupID("group.com.XXXXXXXXXXXXXXXX")
        MOReactInitializer.sharedInstance().intializeSDK(withLaunchOptions: launchOptions)
        
        //7.xx version with sdkConfig
        var sdkConfig = MOSDKConfig.init(appID: "XXXXXXXXXXXXXXXX")
        sdkConfig.moeDataCenter = DATA_CENTER_0X
        sdkConfig.appGroupID = "group.com.XXXXXXXXXXXXXXXX"
        MOReactInitializer.sharedInstance().intializeSDK(withConfig: sdkConfig, andLaunchOptions: launchOptions)
      
        //8.xx version //Set MoEngage Properties in Info.plist
        MoEngageInitializer.sharedInstance().initializeDefaultInstance(launchOptions)
        
        //8.xx version with sdkConfig
        var sdkConfig = MOSDKConfig.init(withAppID: "XXXXXXXXXXXXXXXX")
        sdkConfig.enableLogs = true
        sdkConfig.moeDataCenter = .data_center_0X 
        sdkConfig.appGroupID = "group.com.XXXXXXXXXXXXXXXX"
        MoEngageInitializer.sharedInstance().initializeDefaultSDKConfig(sdkConfig, andLaunchOptions: launchOptions)
        
        //9.xx version //Set MoEngage Properties in Info.plist
        MoEngageInitializer.sharedInstance().initializeDefaultInstance(launchOptions)
        
        //9.xx version with sdkConfig
        var sdkConfig = MoEngageSDKConfig.init(appId: "XXXXXXXXXXXXXXXX", dataCenter: .data_center_0X)
        sdkConfig.enableLogs = true
        sdkConfig.appGroupID = "group.com.XXXXXXXXXXXXXXXX"
        MoEngageInitializer.sharedInstance().initializeDefaultSDKConfig(sdkConfig, andLaunchOptions: launchOptions)
        
        // Rest of the implementation related to developer's app
        return true
      }
  3. AppDelegate.swiftを拡張する :
    • AppDelegate.swiftを拡張してUNUserNotificationCenterDelegateに準拠させます。あなたのAppDelegate.swiftは次のコードスニペットに似ている必要があります:
      Swift
      class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
      
      }
  4. MoEngageプロキシを無効にする :
    • info.plist に MoEngageAppDelegateProxyEnabled キーを追加し、値を Boolean = False/NO に設定します boolean.png
  5. プッシュ通知トークンを手動で渡す :
    • AppDelegate.swift の didRegisterForRemoteNotificationsWithDeviceToken 関数を使用して、プッシュ通知トークンを手動で渡します。
      Swift
      func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        //7.xx version
        MoEngage.sharedInstance().setPushToken(deviceToken)
      
        //8.xx version
        MOMessaging.sharedInstance.setPushToken(deviceToken)
      
        //9.xx version
        MoEngageSDKMessaging.sharedInstance.setPushToken(deviceToken)
      }
  6. UNUserNotificatoinCenter デリゲート関数を実装する :
    • UNUserNotificatoinCenter デリゲート関数が AppDelegate.swift に実装されていることを確認します。
      Swift
      func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) - Void) {
        //This is to only to display Alert and enable notification sound
        if #available(iOS 14.0, *) {
          completionHandler([.sound,.alert, .banner, .list])
        } else {
          completionHandler([.sound,.alert])
        }
      }
      
      func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () - Void) {
        //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?