問題
iOSデバイスで、Native iOS、Objective-C、MoEngage-iOS-SDK(バージョン 7.x.x、8.x.x、9.x.x)を使用している際に、プッシュ通知に関する一般的な問題、配信失敗、画面遷移、ディープリンク、リッチランディングが発生しています。
ソリューション
次の手順を実行します。
-
Firebaseプロキシを無効にする
:
- Firebaseプッシュ通知を使用していない場合は、info.plistにFirebaseAppDelegateProxyEnabledキーを追加し、値をBoolean = False/NOに設定してFirebaseプロキシを無効にします。
- プッシュ通知をテストします。動作する場合は、これ以上の操作は必要ありません。
- Firebaseプッシュ通知を使用している場合は、このステップをスキップし、次のステップに進んでください。
-
UNUserNotificationCenterDelegateを設定する
:
- AppDelegate.m の didFinishLaunch メソッドで UNUserNotificationCenterDelegate を設定します。
- FirebaseをdidFinishLaunchで初期化する場合は、MoEngage SDKを初期化する前に行ってください。
-
このメソッドの最初でUNUserNotificationCenterDelegateが設定されていることを確認してください。
//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; }
-
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,>
-
Extend AppDelegate.h to conform to UNUserNotificationCenterDelegate. Your AppDelegate.h must resemble the following code snippets:
-
MoEngageプロキシを無効にする
:
-
info.plistにMoEngageAppDelegateProxyEnabledキーを追加し、値をBoolean = False/NOに設定します
-
info.plistにMoEngageAppDelegateProxyEnabledキーを追加し、値をBoolean = False/NOに設定します
-
プッシュ通知トークンを手動で渡す
:
-
AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
3472640
-
AppDelegate.mのdidRegisterForRemoteNotificationsWithDeviceToken関数を使用して、プッシュ通知トークンを手動で渡します。
-
UNUserNotificationCenterデリゲート関数を実装する
:
-
AppDelegate.mにUNUserNotificationCenterデリゲート関数が実装されていることを確認してください。
3472641
-
AppDelegate.mにUNUserNotificationCenterデリゲート関数が実装されていることを確認してください。