問題
プッシュ通知に関する一般的な問題、プッシュキャンペーンのインプレッションが追跡されないことや、プッシュ通知がデバイスに正常に配信されているにもかかわらず画像が表示されないことが含まれます。Swiftバージョン8.x.xで。
info |
Information
|
ソリューション
次の手順を実行します。
-
各構成のプロジェクトのメインターゲットで app_group_id を確認してください :
同じ app_group_id または異なるものを設定に追加できます。
info Information
設定が異なるバンドル識別子を使用している場合、同じ app_group_id を共有していると問題が発生する可能性があります。特に、異なるバンドル識別子を持つ2つのアプリが同じデバイスにインストールされている場合、通知サービス拡張が失敗する可能性があります。
これを避けるために、複数の構成で同じ 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:
var sdkConfig = MOSDKConfig.init(withAppID: "XXXXXXXXXXXXXXXX") sdkConfig.moeDataCenter = .data_center_0X sdkConfig.appGroupID = "group.com.XXXXXXXXXXXXXXXX"
MOSDKConfig* sdkConfig = [[MOSDKConfig alloc] initWithAppID: @"XXXXXXXXXXXXXXXX"]; sdkConfig.moeDataCenter = MODataCenterData_center_0X; sdkConfig.appGroupID = @"group.com.XXXXXXXXXXXXXXXX";
-
通知サービス拡張ターゲットの確認
:
-
プッシュ通知の有効化
: 拡張ターゲットの署名と機能セクションで、プッシュ通知を有効にし、AppGroupIdを追加してください。
-
最小デプロイ iOS バージョンの整合性
: 通知サービス拡張の最小デプロイ iOS バージョンがメインアプリの iOS バージョンと一致していることを確認してください。
-
プッシュ通知の有効化
: 拡張ターゲットの署名と機能セクションで、プッシュ通知を有効にし、AppGroupIdを追加してください。
-
MORichNotificationフレームワークを通知サービス拡張ターゲットに統合します。
3473097 -
NotificationService.swift file looks like this:
import UserNotifications import MoEngageRichNotification class NotificationService: UNNotificationServiceExtension { var contentHandler: ((UNNotificationContent) - Void)? var bestAttemptContent: UNMutableNotificationContent? override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) - Void) { MORichNotification.setAppGroupID("group.com.XXXXXXXXXXXXXXXX") self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) MORichNotification.handle(richNotificationRequest: request, withContentHandler: contentHandler) } override func 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. if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { contentHandler(bestAttemptContent) } } }
-
メインアプリターゲットのビルドフェーズを確認する
: メインアプリターゲットのビルドフェーズセクションで、アプリ拡張の埋め込み / 基盤拡張の埋め込みセクションを見つけてください。
インストール時のみコピー
オプションがチェックされていないことを確認してください。
- すべての構成で一貫した appGroupId を確保する : プロジェクト内のすべてのスキームと構成 (例: Debug/Release/QA/UAT) で appGroupId が一貫していることを確認してください。
-
ビルド構成の整合性
: プロジェクトを実行またはアーカイブする際は、メインターゲットと通知サービス拡張ターゲットのビルド構成が同じスキーム/構成を指していることを確認してください。