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

問題

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

指示

次の手順を実行します。

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

      React-Native
      //7.xx
      #import  
      
      //8.xx
      #import  
      #import 
      
      //9.xx
      #import  
      @import MoEngageSDK;
      
      @implementation AppDelegate
        
       - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      {
      
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        center.delegate = self;
        
        [FIRApp configure]; //Firebase configuration syntx 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] intializeSDKWithLaunchOptions:launchOptions];
        
        //7.xx version with sdkConfig
        MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID: @"XXXXXXXXXXXXXXXX"];
        sdkConfig.moeDataCenter = DATA_CENTER_0X;
        sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
        [[MOReactInitializer sharedInstance] intializeSDKWithConfig: sdkConfig andLaunchOptions: launchOptions];
      
        //8.xx version //Set MoEngage Properties in Info.plist
        [[MoEngageInitializer sharedInstance] initializeDefaultInstance: launchOptions];
        
        //8.xx version with sdkConfig
        MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID:@"XXXXXXXXXXXXXXXX"];
        sdkConfig.enableLogs = true;
        sdkConfig.moeDataCenter = MODataCenterData_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
        MoEngageSDKConfig* sdkConfig = [[MoEngageSDKConfig alloc] initWithAppId:@"XXXXXXXXXXXXXXXX" dataCenter: MoEngageDataCenterData_center_0X];
        MoEngageConsoleLogConfig *logConfig = [[MoEngageConsoleLogConfig alloc] initWithIsLoggingEnabled:YES loglevel:MoEngageLoggerTypeVerbose];
        sdkConfig.consoleLogConfig = logConfig;
        sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
        [[MoEngageInitializer sharedInstance] initializeDefaultSDKConfig:sdkConfig andLaunchOptions:launchOptions];
        
        // Rest of the implementation related to developer's app
        
        return YES;
      }
  3. AppDelegate.hを拡張します。
    • AppDelegate.hを拡張して、UNUserNotificationCenterDelegateに準拠させます。AppDelegate.hは次のコードスニペットに似ている必要があります:
      Objective-C
      #import 
      
      @interface AppDelegate : UIResponder <uiapplicationdelegate, unusernotificationcenterdelegate="UNUserNotificationCenterDelegate">
      
      OR
      
      @interface AppDelegate : RCTAppDelegate</uiapplicationdelegate,>
  4. MoEngageプロキシを無効にする。
    • info.plist に MoEngageAppDelegateProxyEnabled キーを追加し、値を Boolean = False または NO に設定します。 boolean.png
  5. プッシュ通知トークンを手動で渡す。
    • AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
      Objective-C
      - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
      {
        //7.xx version
        [[MoEngage sharedInstance] setPushToken:deviceToken];
        
        //8.xx version
        [[MOMessaging sharedInstance] setPushToken:deviceToken];
        
        //9.xx version
        [[MoEngageSDKMessaging sharedInstance] setPushToken:deviceToken];
      }
  6. UNUserNotificationCenter デリゲート関数を実装する。
    • AppDelegate.mにUNUserNotificationCenterのデリゲート関数が実装されていることを確認してください。

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

How can we improve this article?