サイレントプッシュ通知
Braze SDKのサイレントプッシュ通知の設定方法を学習する。
前提条件
この機能を使用する前に、Android Braze SDKを統合する必要があります。 プッシュ通知の設定も必要です。
サイレントプッシュ通知を設定する
サイレント通知は、BrazeのメッセージングAPIを通じて利用できます。サイレント通知を利用するには、Androidプッシュオブジェクト内でsend_to_syncフラグをtrueに設定し、titleやalertフィールドが設定されていないことを確認する必要があります。これらのフィールドはsend_to_syncと併用するとエラーが発生します。ただし、オブジェクト内にデータextrasを含めることは可能です。
前提条件
この機能を使用する前に、Swift Braze SDKの統合を完了する必要があります。 プッシュ通知の設定も必要です。
iOSの制限
iOSオペレーティングシステムは、一部の機能に対して通知を制限する場合があります。これらの機能に問題が発生している場合、iOSのサイレント通知の制限が原因である可能性があります。詳細については、Appleのインスタンスメソッドおよび未受信通知のドキュメントを参照してください。
サイレントプッシュ通知を設定する
サイレントプッシュ通知を使用してバックグラウンド処理をトリガーするには、アプリがバックグラウンドにある場合でも通知を受信できるように設定する必要があります。これを行うには、XcodeのメインアプリターゲットのSigning & Capabilitiesペインを使用してBackground Modes機能を追加します。Remote notificationsチェックボックスを選択します。

リモート通知のバックグラウンドモードが有効になっていても、ユーザーがアプリを強制終了した場合、システムはアプリをバックグラウンドで起動しません。システムによってアプリがバックグラウンドで自動的に起動されるようにするには、ユーザーがアプリを明示的に起動するか、デバイスを再起動する必要があります。
詳細については、バックグラウンド更新のプッシュおよびapplication:didReceiveRemoteNotification:fetchCompletionHandler:のドキュメントを参照してください。
サイレントプッシュ通知の送信
サイレントプッシュ通知を送信するには、プッシュ通知ペイロード内でcontent-availableフラグを1に設定します。

Appleがリモート通知と呼んでいるものは、content-availableフラグが設定された通常のプッシュ通知です。
content-availableフラグは、BrazeダッシュボードおよびメッセージングAPIのAppleプッシュオブジェクト内で設定できます。

content-available=1を設定した状態でタイトルと本文の両方を付与することは推奨されません。未定義の動作が発生する可能性があります。通知が確実にサイレントとなるようにするには、content-availableフラグを1に設定する際にタイトルと本文の両方を除外してください。詳細については、Appleの公式ドキュメントバックグラウンド更新のプッシュを参照してください。

サイレントプッシュ通知を送信する際、通知ペイロードにデータを含めることで、アプリケーションがそのイベントを参照できるようにすることもできます。これにより、ネットワークリクエストを削減し、アプリの応答性を向上させることができます。
内部プッシュ通知を無視する
Brazeは、アンインストール追跡などの特定の高度な機能を内部的に処理するためにサイレントプッシュ通知を使用します。アプリがアプリの起動時やバックグラウンドプッシュ時に自動アクションを実行する場合、Brazeの内部プッシュ通知によってそれらがトリガーされないよう、アクティビティにゲート処理を追加することを検討してください。
たとえば、バックグラウンドプッシュやアプリの起動のたびにサーバーに新しいコンテンツを問い合わせるロジックがある場合、Brazeの内部プッシュによるトリガーを防止して不要なネットワークトラフィックを回避することをお勧めします。Brazeは特定の種類の内部プッシュをほぼ同時にすべてのユーザーに送信するため、内部プッシュからの起動時ネットワーク呼び出しにゲート処理がない場合、サーバーに大きな負荷がかかる可能性があります。
ステップ1:アプリの自動アクションを確認する
アプリ内の以下の箇所で自動アクションを確認し、Brazeの内部プッシュを無視するようにコードを更新してください。
- プッシュレシーバー。バックグラウンドプッシュ通知は、
UIApplicationDelegateのapplication:didReceiveRemoteNotification:fetchCompletionHandler:を呼び出します。 - アプリケーションデリゲート。バックグラウンドプッシュは、一時停止中のアプリをバックグラウンドで起動し、
UIApplicationDelegateのapplication:willFinishLaunchingWithOptions:メソッドおよびapplication:didFinishLaunchingWithOptions:メソッドをトリガーする可能性があります。これらのメソッドのlaunchOptionsを確認して、アプリがバックグラウンドプッシュから起動されたかどうかを判断してください。
ステップ2:内部プッシュユーティリティメソッドを使用する
Braze.Notificationsの静的ユーティリティメソッドを使用して、アプリがBrazeの内部プッシュを受信したか、または内部プッシュによって起動されたかを確認できます。Braze.Notifications.isInternalNotification(_:)は、アンインストール追跡やフィーチャーフラグの同期通知を含む、すべてのBraze内部プッシュ通知に対してtrueを返します。
例:
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)
}
}
- (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を統合する必要があります。 プッシュ通知の設定も必要です。
サイレントプッシュ通知を設定する
サイレント通知は、BrazeのメッセージングAPIを通じて利用できます。サイレント通知を利用するには、Androidプッシュオブジェクト内でsend_to_syncフラグをtrueに設定し、titleやalertフィールドが設定されていないことを確認する必要があります。これらのフィールドはsend_to_syncと併用するとエラーが発生します。ただし、オブジェクト内にデータextrasを含めることは可能です。