問題
iOSデバイスでReact-Native、Objective-C、MoEngage-iOS-SDK(バージョン7.x.x、8.x.x、9.x.x)を使用している際に、プッシュ通知の一般的な問題として、配信失敗、画面ナビゲーション、ディープリンク、リッチランディングが発生しています。
指示
次の手順を実行します。
-
Firebase プロキシ。
- Firebase プッシュ通知を使用していない場合は、FirebaseAppDelegateProxyEnabled キーを info.plist に追加し、値を Boolean = False または NO に設定して Firebase プロキシを無効にしてください。
- プッシュ通知をテストする。成功した場合、これ以上の行動は必要ありません。それ以外の場合は、以下の手順に従ってください。
- Firebaseプッシュ通知を使用している場合は、この手順をスキップして次の手順に進んでください。
-
UNUserNotificationCenterDelegateを設定します。
- AppDelegate.mで、didFinishLaunchメソッド内でUNUserNotificationCenterDelegateを設定します。
- FirebaseをdidFinishLaunchで初期化する場合は、MoEngage SDKを初期化する前に行ってください。
-
このメソッドの開始時にUNUserNotificationCenterDelegateが設定されていることを確認してください。
//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; }
-
AppDelegate.hを拡張します。
-
AppDelegate.hを拡張して、UNUserNotificationCenterDelegateに準拠させます。AppDelegate.hは次のコードスニペットに似ている必要があります:
#import @interface AppDelegate : UIResponder <uiapplicationdelegate, unusernotificationcenterdelegate="UNUserNotificationCenterDelegate"> OR @interface AppDelegate : RCTAppDelegate</uiapplicationdelegate,>
-
AppDelegate.hを拡張して、UNUserNotificationCenterDelegateに準拠させます。AppDelegate.hは次のコードスニペットに似ている必要があります:
-
MoEngageプロキシを無効にする。
-
info.plist に MoEngageAppDelegateProxyEnabled キーを追加し、値を Boolean = False または NO に設定します。
-
info.plist に MoEngageAppDelegateProxyEnabled キーを追加し、値を Boolean = False または NO に設定します。
-
プッシュ通知トークンを手動で渡す。
-
AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
- (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]; }
-
AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
-
UNUserNotificationCenter デリゲート関数を実装する。
- AppDelegate.mにUNUserNotificationCenterのデリゲート関数が実装されていることを確認してください。