解決策はすでに多くの回答でカバーされています:
含まれるアプリ バンドル ID:com.alphabet.gmail
と
拡張アプリ バンドル ID:com.alphabet.gmail.notificationServiceExtension
しかし、なぜプレフィックスを付ける必要があるのでしょうか。
Apple は、アプリ間の通信が含まれているアプリの bundleId によって行われることを望んでおり、開発者がアプリ Extensionの bundleID にメッセージを送信する必要がないようにするためです。
たとえばapns-topic
、アプリが画像をダウンロードできるように、サーバーは APNS にプッシュ通知を送信するという名前のフィールドを送信する必要があります。そのトピックの値は bundleID です。
ただし、サービス拡張機能のバンドル ID ではありません。メインアプリ自体の bundleId です。
ただし、実際の物理電話では、bundleID (com.alphabet.gmail.notificationServiceExtension
と) の両方がcom.alphabet.gmail
存在します。
では、OS はどのようにして通知をメイン アプリではなくアプリ拡張機能に配信するのでしょうか?
私の理解では、OS は次のようなターゲットを探します。
- 例のプレフィックスが付いた BundleId があり
com.alphabet.gmail
ます: Extension app bundle id:com.alphabet.gmail.notification
- に
NSExtensionPointIdentifier
設定されていcom.apple.usernotifications.service
ます。この値には触れないでください。これは、Apple によって事前に定義された値です。
