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

問題

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

ソリューション

次の手順を実行します。

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

      Objective-C
      //7.xx
      #import 
      
      //8.xx
      #import 
      
      //9.xx
      @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 with sdkConfig
        MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID: @"XXXXXXXXXXXXXXXX"];
        sdkConfig.moeDataCenter = DATA_CENTER_0X;
        sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
        #ifdef DEBUG
          [[MoEngage sharedInstance] initializeTestWithConfig:sdkConfig andLaunchOptions:launchOptions];
        #else
          [[MoEngage sharedInstance] initializeLiveWithConfig:sdkConfig andLaunchOptions:launchOptions];
        #endif  
        
        //8.xx version with sdkConfig
        MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID:@"XXXXXXXXXXXXXXXX"];
        sdkConfig.enableLogs = true;
        sdkConfig.moeDataCenter = MODataCenterData_center_0X; 
        sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
        #ifdef DEBUG
          [[MoEngage sharedInstance] initializeDefaultTestInstanceWithConfig:sdkConfig andLaunchOptions:nil];
        #else
          [[MoEngage sharedInstance] initializeDefaultLiveInstanceWithConfig:sdkConfig andLaunchOptions:nil];
        #endif  
        
        //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";
        #ifdef DEBUG
          [[MoEngage sharedInstance] initializeDefaultTestInstance:sdkConfig];
        #else
          [[MoEngage sharedInstance] initializeDefaultLiveInstance:sdkConfig];
        #endif  
        
        // Rest of the implementation related to developer's app  
        
        return YES;
      }
  3. Extend AppDelegate.h :
    • Extend AppDelegate.h to conform to UNUserNotificationCenterDelegate. Your AppDelegate.h must resemble the following code snippets:
      #import 
      
      @interface AppDelegate : UIResponder <uiapplicationdelegate, unusernotificationcenterdelegate="UNUserNotificationCenterDelegate"></uiapplicationdelegate,>
  4. MoEngageプロキシを無効にする :
    • info.plistにMoEngageAppDelegateProxyEnabledキーを追加し、値をBoolean = False/NOに設定します boolean.png
  5. プッシュ通知トークンを手動で渡す :
    • AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
      Objective-C
      3472640
  6. UNUserNotificationCenterデリゲート関数を実装する :
    • AppDelegate.mにUNUserNotificationCenterデリゲート関数が実装されていることを確認してください。
      Objective-C
      3472641

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

How can we improve this article?