問題
プッシュ通知に関する一般的な問題、プッシュキャンペーンのインプレッションが追跡されないことや、プッシュ通知がデバイスに正常に配信されているにもかかわらず画像が表示されないことについて、Objective C バージョン 8.x.x の場合。
info |
Information
|
ソリューション
次の手順を実行します。
-
各構成に対して、プロジェクトのメインターゲットで app_group_id を確認してください :
同じ app_group_id または異なるものを構成全体に追加できます。
info Information
設定で異なるバンドル識別子を使用しているが、同じ app_group_id を共有している場合、問題が発生する可能性があります。具体的には、異なるバンドル識別子を持つ2つのアプリが同じデバイスにインストールされている場合、Notification Service Extensionは失敗する可能性があります。
これを避けるために、複数の構成で同じ app_group_id を使用できますが、単一のデバイスで全てのアプリを同時にテストすることはできないことに注意してください。
-
SDK初期化中にapp_group_idを確認する
:
- SDKがinfo.plistを使用して初期化されている場合、APP_GROUP_IDキーはinfo.plistファイル内のMoEngageキーの中に存在する必要があります。
- SDKがsdkConfigを使用して初期化される場合、APP_GROUP_IDはAppDelegateファイル内のsdkConfig変数に含まれている必要があります。
info.plistのapp_group_id:
sdkConfig変数のapp_group_id:
MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID: @"XXXXXXXXXXXXXXXX"]; sdkConfig.moeDataCenter = MODataCenterData_center_0X; sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
-
通知サービス拡張ターゲットの確認
:
-
プッシュ通知を有効にする
: 拡張ターゲットの署名と機能のセクションで、プッシュ通知を有効にし、AppGroupIdを追加することを確認してください。
-
最小デプロイメントiOSバージョンの整合性を取る
: 通知サービス拡張の最小デプロイメントiOSバージョンがメインアプリのiOSバージョンと一致することを確認してください。
-
プッシュ通知を有効にする
: 拡張ターゲットの署名と機能のセクションで、プッシュ通知を有効にし、AppGroupIdを追加することを確認してください。
-
MORichNotificationフレームワークを通知サービス拡張ターゲットに統合します。
3472866 -
NotificationService.m file looks like this:
#import "NotificationService.h" #import @interface NotificationService () @property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver); @property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent; @end @implementation NotificationService - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler { @try { [MORichNotification setAppGroupID: @"group.com.XXXXXXXXXXXXXXXX"]; self.contentHandler = contentHandler; self.bestAttemptContent = [request.content mutableCopy]; [MORichNotification handleWithRichNotificationRequest:request withContentHandler:contentHandler]; } @catch (NSException *exception) { NSLog(@"MoEngage : exception : %@",exception); } } /// Save the image to disk - (void)serviceExtensionTimeWillExpire { // Called just before the extension will be terminated by the system. // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. self.contentHandler(self.bestAttemptContent); } @end
-
メインアプリターゲットのビルドフェーズを確認する
: メインアプリターゲットのビルドフェーズセクションで、アプリ拡張を埋め込む / 基盤拡張を埋め込むセクションを見つけます。
インストール時のみコピー
オプションがチェックされていないことを確認してください。
- すべての設定で一貫した appGroupId を確保する : プロジェクト内のすべてのスキームと設定(例: Debug/Release/QA/UAT)で appGroupId が一貫していることを確認してください。
-
ビルド構成を整える
: プロジェクトを実行またはアーカイブする際は、メインターゲットと通知サービス拡張ターゲットのビルド構成が同じスキーム/構成を指していることを確認してください。