iOSデバイスで一般的なプッシュ通知の問題を回避する方法(iOS Objective C バージョン 7.x.xを使用)

問題

プッシュ通知に関する一般的な問題には、プッシュキャンペーンのインプレッションが追跡されないことや、プッシュ通知がデバイスに正常に配信されているにもかかわらず画像が表示されないことが含まれます。Objective C バージョン 7.x.x。

info

Information

  • プッシュキャンペーンのインプレッションを追跡するには、MoEngageダッシュボードの iOSインプレッションを表示 トグルがオンになっていることを確認してください。 iOS imp.png

ソリューション

次の手順を実行します。

  1. 各構成のプロジェクトのメインターゲットで app_group_id を確認してください :

    設定間で同じ app_group_id または異なるものを追加できます。

    info

    Information

    設定が異なるバンドル識別子を使用しているが、同じ app_group_id を共有している場合、問題が発生する可能性があります。具体的には、異なるバンドル識別子を持つ2つのアプリが同じデバイスにインストールされている場合、Notification Service Extensionが失敗する可能性があります。

    これを避けるために、複数の構成で同じ app_group_id を使用できますが、単一のデバイスで全てのアプリを同時にテストすることはできないことに注意してください。

    app group.png

  2. 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: app id.png

    sdkConfig変数内のapp_group_id:

    Objective-C
    MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID: @"XXXXXXXXXXXXXXXX"];sdkConfig.moeDataCenter = DATA_CENTER_0X;sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";//if SDK initialized without sdkConfig in AppDelegate file[MoEngage setAppGroupID: @"group.com.XXXXXXXXXXXXXXXX"];
  3. 通知サービス拡張ターゲットを確認する :
    • プッシュ通知を有効にする : 拡張ターゲットの署名と機能のセクションで、プッシュ通知を有効にし、AppGroupIdを追加してください。 enable.png
    • 最小デプロイメントiOSバージョンを整合させる : 通知サービス拡張の最小デプロイメントiOSバージョンが、メインアプリのiOSバージョンと一致していることを確認してください。 support.png
  4. MORichNotificationフレームワークを通知サービス拡張ターゲットに統合します。
    Objective-C
    3472942
  5. 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 handleRichNotificationRequest: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

  6. メインアプリターゲットのビルドフェーズを確認する : メインアプリターゲットのビルドフェーズセクションで、アプリ拡張を埋め込む / 基盤拡張を埋め込むセクションを見つけます。 インストール時のみコピー オプションがチェックされていないことを確認してください。 copy.png
  7. すべての構成で一貫した appGroupId を確保する : プロジェクト内のすべてのスキームおよび構成(例:Debug/Release/QA/UAT)で appGroupId が一貫していることを確認してください。
  8. ビルド構成の整合性 : プロジェクトを実行またはアーカイブする際は、メインターゲットと通知サービス拡張ターゲットのビルド構成が同じスキーム/構成を指していることを確認してください。 run.png build.png

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

How can we improve this article?