サイレントプッシュ通知
Braze SDKのサイレントプッシュ通知の設定方法を学習する。
前提条件
この機能を使用する前に、Android Braze SDKを統合する必要がある。 プッシュ通知の設定も必要だ。
サイレント・プッシュ通知を設定する
サイレント通知は BrazeMessaging API を通じて利用できます。サイレント通知を利用するには、Android プッシュオブジェクト内で send_to_sync フラグを true に設定します。また、title または alert フィールドを send_to_sync とともに使用するとエラーが発生するため、それらが設定されていないことを確認する必要があります。ただし、オブジェクト内にデータ extras を含めることはできます。
前提条件
この機能を使う前に、Swift Braze SDKを統合する必要がある。 プッシュ通知の設定も必要だ。
iOSの制限
iOS オペレーティングシステムは、一部の機能の通知をゲートする場合があります。これらの機能で問題が発生している場合は、iOS のサイレント通知ゲートが原因である可能性があることに注意してください。詳細については、アップルのインスタンスメソッドと 未受信通知のドキュメントを参照のこと。
サイレント・プッシュ通知を設定する
サイレント・プッシュ通知を使用してバックグラウンド作業をトリガーするには、アプリがバックグラウンドでも通知を受け取れるように設定する必要がある。これを行うには、Xcodeのメインアプリターゲットに、Signing& Capabilitiesペインを使用してBackground Modesケイパビリティを追加する。リモート通知チェックボックスを選択する。
![background mode enabled Xcode の [機能] の下に [リモート通知] モードのチェックボックスが表示されています。](/docs/ja/assets/img_archive/background_mode.png?15bb65e9a98f4b01af0c73c3917d6950)
リモート通知バックグラウンドモードが有効になっている場合でも、ユーザーがアプリケーションを強制終了した場合、システムはアプリをバックグラウンドで起動しません。システムによってアプリがバックグラウンドで自動的に起動される前に、ユーザーはアプリケーションを明示的に起動するか、デバイスを再起動する必要があります。
詳細については、[バックグラウンド更新のプッシュ] および application:didReceiveRemoteNotification:fetchCompletionHandler: [ドキュメント] を参照してください。
サイレントプッシュ通知の送信
サイレントプッシュ通知を送信するには、プッシュ通知ペイロードで content-available フラグを 1 に設定します。
Apple がリモート通知と呼ぶものは、content-available フラグが設定された通常のプッシュ通知です。
content-available フラグは、Braze ダッシュボードおよびメッセージング API の Apple プッシュオブジェクト内で設定できます。
タイトルと本文の両方を content-available=1 でアタッチすることは、未定義の動作につながる可能性があるため、推奨されません。通知が本当にサイレントであることを確認するには、content-available フラグを 1. に設定するときに、タイトルと本文の両方を除外します。詳細については、バックグラウンド更新に関するAppleの公式ドキュメントを参照してください。
![content available プッシュコンポーザーの [設定] タブにある [コンテンツ利用可能] チェックボックスを表示する Braze ダッシュボード。](/docs/ja/assets/img_archive/remote_notification.png?7c9ef06cb8e9c148d37019f5e01d0ce6)
サイレント プッシュ通知を送信する場合、アプリケーションがイベントを参照できるように、通知ペイロードにデータを含めることもできます。これにより、ネットワークリクエストがいくらか節約され、アプリの応答性が向上する可能性があります。
内部 プッシュ通知を無視する
Brazeは、サイレントプッシュ通知を使用して、アンインストール追跡やジオフェンスなどの特定の高度な機能を内部処理する。アプリの起動時やバックグラウンドプッシュ時に自動アクションを取る場合は、そのアクティビティが内部プッシュ通知によってトリガーされないようにゲーティングすることを検討する。
たとえば、バックグラウンドプッシュやアプリケーション起動のたびにサーバーに新しいコンテンツを要求するロジックがある場合、不必要なネットワークトラフィックを避けるために、Brazeの内部プッシュをトリガーしないようにしたい場合がある。Brazeは、ある種の内部プッシュを全ユーザーにほぼ同時に送信するため、内部プッシュからの起動時ネットワーク呼び出しがゲートされていない場合、サーバーに大きな読み込む負荷が発生する可能性がある。
ステップ 1: アプリの自動アクションをチェックする
次の場所でアプリケーションの自動アクションを確認し、Braze の内部プッシュを無視するようにコードを更新します。
- プッシュレシーバー。バックグラウンドプッシュ通知により、
UIApplicationDelegateのapplication:didReceiveRemoteNotification:fetchCompletionHandler:が呼び出されます。 - アプリケーションデリゲート。バックグラウンドプッシュにより、中断されたアプリがバックグラウンドで起動し、
UIApplicationDelegateのapplication:willFinishLaunchingWithOptions:およびapplication:didFinishLaunchingWithOptions:メソッドがトリガーされます。これらのメソッドのlaunchOptionsをチェックして、アプリケーションがバックグラウンドプッシュから起動されたかどうかを判断できます。
ステップ 2:内部プッシュ・ユーティリティ・メソッドを使用する
Braze.Notifications の静的ユーティリティメソッドを使用して、アプリが Braze の内部プッシュを受信したかを確認できます。Braze.Notifications.isInternalNotification(_:) はすべての Braze 内部プッシュ通知で true を返します。これには、アンインストール追跡、フィーチャーフラグ同期、ジオフェンス同期通知が含まれます。
以下に例を示します。
1
2
3
4
5
6
7
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if (!Braze.Notifications.isInternalNotification(userInfo)) {
// Gated logic here (for example pinging server for content)
}
}
1
2
3
4
5
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler {
if (![BRZNotifications isInternalNotification:userInfo]) {
// Gated logic here (for example pinging server for content)
}
}
前提条件
この機能を使用する前に、Android Braze SDKを統合する必要がある。 プッシュ通知の設定も必要だ。
サイレント・プッシュ通知を設定する
サイレント通知は BrazeMessaging API を通じて利用できます。サイレント通知を利用するには、Android プッシュオブジェクト内で send_to_sync フラグを true に設定します。また、title または alert フィールドを send_to_sync とともに使用するとエラーが発生するため、それらが設定されていないことを確認する必要があります。ただし、オブジェクト内にデータ extras を含めることはできます。
GitHub でこのページを編集