データ収集を管理する
Braze SDKのデータ収集を管理する方法について説明します。必要に応じてデータプライバシー規制に準拠できます。
データトラッキングを無効にする

このガイドでは、Braze Web SDK 4.0.0+ のコードサンプルを使用します。最新の Web SDK バージョンにアップグレードするには、SDK アップグレードガイドを参照してください。
Web SDKのデータトラッキングアクティビティを無効にするには、メソッドdisableSDK()を使用します。これにより、disableSDK()が呼び出される前にログされたデータが同期され、このページおよび今後のページ読み込みにおけるBraze Web SDKへの後続のすべての呼び出しが無視されます。
Webトラッキングを無効にしたり再度有効にしたりするには、それぞれDisable TrackingまたはResume Trackingタグタイプを使用します。これらの2つのオプションは、disableSDKとenableSDKを呼び出します。
ベストプラクティス
ユーザーにトラッキングを停止するオプションを提供するには、2つのリンクまたはボタンを含むシンプルなページを構築することをお勧めします。1つはクリック時にdisableSDK()を呼び出し、もう1つはenableSDK()を呼び出してユーザーが再度オプトインできるようにします。これらのコントロールを使用して、他のデータサブプロセッサーを介したトラッキングの開始や停止も行えます。

Braze SDKはdisableSDK()を呼び出すために初期化する必要がないため、完全に匿名のユーザーに対してもトラッキングを無効にできます。逆に、enableSDK()はBraze SDKを初期化しないため、トラッキングを有効にするにはその後にinitialize()も呼び出す必要があります。
データトラッキングを再開する
データ収集を再開するには、enableSDK() メソッドを使用します。
ログアウトとプッシュ登録解除
Braze SDKは、ユーザーがプッシュ通知の登録を解除したりログアウトしたりする際に、デバイスへのターゲティングを停止するためのメソッドを提供しています。これらのメソッドは、BrazeサーバーおよびSDKから現在のユーザーのプッシュ登録データを削除するため、Brazeはそのユーザーに今後のプッシュ通知キャンペーンを送信しなくなります。
ログアウト
ユーザーがアプリケーションからログアウトする際に、SDKのlogoutメソッドを呼び出して、現在のユーザーからデバイスのプッシュ登録を削除し、SDK上のクリーンアップアクションを自動的に実行します。logoutメソッドは以下を実行します。
- Brazeサーバー上の現在のユーザーからデバイスのプッシュトークンの登録を解除します。
- 登録解除の呼び出しが成功した場合、SDKはローカルに保存されたSDKデータを消去し、SDKを無効化します。
- 失敗した場合、
errorCallbackを呼び出して、インテグレーターがアクションを実行できるようにします。
以下の例は、コールバックベースのlogout処理を示しています。即時の成功およびエラー処理が必要な場合に使用し、ログ出力をアプリのフローに置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
import { logout } from "@braze/web-sdk";
const successCallback = () => {
console.log('Successfully logged out');
};
const errorCallback = () => {
console.log('Failed to log out');
};
logout(successCallback, errorCallback);
logout後にトラッキングとプッシュを再有効化する
logoutが成功した後、enableSDK()を呼び出し、次にWebプッシュの設定に従って、オペレーティングシステム(OS)またはプッシュプロバイダーで通知を再登録します。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
プッシュ登録解除
追加の自動クリーンアップなしにデバイスへのプッシュ送信を停止するには、unregisterPushメソッドを使用します。これにより、Brazeサーバー上の現在のユーザーからデバイスのプッシュトークンが削除され、ローカルに保存されたトークンがクリアされます。
以下の例は、コールバックベースのunregisterPush処理を示しています。即時の成功およびエラー処理が必要な場合に使用し、ログ出力をアプリのフローに置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
import { unregisterPush } from "@braze/web-sdk";
const successCallback = () => {
console.log('Successfully unregistered from push');
};
const errorCallback = () => {
console.log('Failed to unregister from push');
};
unregisterPush(successCallback, errorCallback);
unregisterPush後にプッシュを再登録する
unregisterPushを呼び出した後、Brazeプッシュ通知を再度送信する前に、Webプッシュの設定に従って、OSまたはプッシュプロバイダーで通知を再登録してください。

サポートされているブラウザーでは、アクティブなプッシュサブスクリプションが存在する場合、unregisterPushはブラウザーのPush APIからのサブスクリプション解除後に、Brazeが管理するサービスワーカーの登録も解除します。manageServiceWorkerExternallyをtrueに設定した場合、SDKはサービスワーカーの登録を解除しません。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
Google Playプライバシーアンケート
2022年4月から、Android開発者はGoogle Playのデータ安全フォームに記入し、プライバシーとセキュリティの慣行を開示する必要があります。このガイドでは、Brazeによるアプリデータの処理方法に関する情報をこの新しいフォームに記入する方法について説明します。
アプリ開発者は、どのデータをBrazeに送信するかを制御しています。Brazeが受け取ったデータは、指示に従って処理されます。これは、Googleがサービスプロバイダーとして分類したものです。

この記事では、Googleのセーフティセクションのアンケートについて、Braze SDKにより処理されるデータに関連する情報を提供します。この記事は法律上のアドバイスを提供するものではないため、Googleに情報を提出する前に法務チームに相談することをお勧めします。
質問
| 質問 | Braze SDKの回答 |
|---|---|
| お使いのアプリは、必要なユーザーデータの種類を収集または共有しますか? | はい、Braze Android SDKはアプリ開発者によって設定されたデータを収集します。 |
| あなたのアプリが収集するすべてのユーザーデータは転送中に暗号化されていますか? | はい。 |
| ユーザーがデータの削除を要求する方法を提供していますか? | はい。 |
データおよび削除に対するユーザーリクエストの処理の詳細については、Brazeデータリテンション情報を参照してください。
データ収集
Brazeによって収集されるデータは、特定の統合と収集するユーザーデータによって決まります。デフォルトで収集されるデータの詳細、および特定の属性を無効にする方法については、SDKデータ収集オプションを参照してください。
| カテゴリー | データタイプ | Brazeの使用状況 |
|---|---|---|
| ロケーション | おおよその位置情報 | デフォルトでは収集されません。 |
| 正確な位置情報 | ||
| 個人情報 | 名前 | |
| メールアドレス | ||
| ユーザー ID | ||
| 住所 | ||
| 電話番号 | ||
| 人種と民族 | ||
| 政治的または宗教的信条 | ||
| 性的指向 | ||
| その他の情報 | ||
| 財務情報 | ユーザー決済情報 | |
| 購入履歴 | ||
| クレジットスコア | ||
| その他の財務情報 | ||
| ヘルスとフィットネス | ヘルス情報 | デフォルトでは収集されません。 |
| フィットネス情報 | ||
| メッセージ | メール | デフォルトでは収集されません。 |
| SMSまたはMMS | ||
| その他のアプリ内メッセージ | Brazeを通じてアプリ内メッセージやプッシュ通知を送信する場合、ユーザーがこれらのメッセージをいつ開封したか、またはいつ読んだかに関する情報を収集します。 | |
| 写真と動画 | 写真 | 収集されません。 |
| 動画 | ||
| オーディオファイル | 音声やサウンドの録音 | |
| 音楽ファイル | ||
| その他のオーディオファイル | ||
| ファイルとドキュメント | ファイルとドキュメント | |
| カレンダー | カレンダーイベント | |
| 連絡先 | 連絡先 | |
| アプリアクティビティ | アプリのインタラクション | Brazeは、デフォルトでセッションアクティビティデータを収集します。その他すべてのインタラクションとアクティビティは、アプリのカスタム統合によって決定されます。 |
| アプリ内検索履歴 | 収集されません。 | |
| インストール済みアプリ | 収集されません。 | |
| その他のユーザー生成コンテンツ | デフォルトでは収集されません。 | |
| その他のアクション | ||
| Webブラウジング | Web閲覧履歴 | 収集されません。 |
| アプリの情報とパフォーマンス | クラッシュログ | Brazeは、SDK内で発生したエラーのクラッシュログを収集します。これには、ユーザーの電話機モデルとOSレベル、およびBraze固有のユーザーIDが含まれます。 |
| 診断 | 収集されません。 | |
| その他のアプリパフォーマンスデータ | 収集されません。 | |
| デバイスまたはその他のID | デバイスまたはその他のID | Brazeは、ユーザーのデバイスを区別するためにデバイスIDを生成し、メッセージが意図した正しいデバイスに送信されるかどうかをチェックします。 |
Google Playのデータセーフティガイドラインの対象外となる可能性がある、Brazeが収集するその他のデバイスデータの詳細については、Androidストレージの概要およびSDKデータ収集オプションを参照してください。
データトラッキングを無効にする
Android SDKのデータトラッキングアクティビティを無効にするには、メソッドdisableSDK()を使用します。これにより、すべてのネットワーク接続がキャンセルされ、Braze SDKはBrazeサーバーへのデータ送信を停止します。
以前に保存されたデータを消去する
デバイスに保存されているすべてのクライアント側データを完全に消去するには、メソッドwipeData()を使用します。
データトラッキングを再開する
データ収集を再開するには、enableSDK()メソッドを使用します。なお、以前に消去されたデータは復元されません。
ログアウトとプッシュ登録解除
Braze SDKは、ユーザーがプッシュ通知の登録を解除したりログアウトしたりする際に、デバイスへのターゲティングを停止するためのメソッドを提供しています。これらのメソッドは、BrazeサーバーおよびSDKから現在のユーザーのプッシュ登録データを削除するため、Brazeはそのユーザーに今後のプッシュ通知キャンペーンを送信しなくなります。
ログアウト
ユーザーがアプリケーションからログアウトする際に、SDKのlogoutメソッドを呼び出して、現在のユーザーからデバイスのプッシュ登録を削除し、SDK上のクリーンアップアクションを自動的に実行します。logoutメソッドは以下を実行します。
- Brazeサーバー上の現在のユーザーからデバイスのプッシュトークンの登録を解除します。
- 登録解除の呼び出しが成功した場合、SDKはローカルに保存されたSDKデータを消去し、SDKを無効化します。
- 失敗した場合、エラーと
isRetriableフラグを発生させ、インテグレーターがアクションを実行できるようにします。
以下のコールバックの例は、logoutの成功とエラーのハンドリングを示しています。コールバックベースのログアウトフローに使用し、ログ出力をリトライまたは再認証ロジックに置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
// Completion callback
Braze.getInstance(context).logout { result ->
result
.onSuccess {
Log.d(TAG, "Logout successful")
}
.onFailure { error ->
val pushError = error as? BrazePushUnregistrationException
Log.e(TAG, "Logout failed: ${error.message}, isRetriable: ${pushError?.isRetriable}")
}
}
以下のコルーチンの例は、サスペンド関数のlogout APIを示しています。コルーチンベースのフローで使用し、アプリに合わせて成功と失敗のブランチをカスタマイズしてください。
1
2
3
4
5
6
7
8
9
10
lifecycleScope.launch {
runCatching { Braze.getInstance(context).logout() }
.onSuccess {
Log.d(TAG, "Logout successful")
}
.onFailure { error ->
val pushError = error as? BrazePushUnregistrationException
Log.e(TAG, "Logout failed: ${error.message}, isRetriable: ${pushError?.isRetriable}")
}
}
logout後にトラッキングとプッシュを再有効化する
logoutが成功した後、enableSDK()でSDKを再有効化し、Androidプッシュ設定に従ってオペレーティングシステム(OS)またはプッシュプロバイダーで通知を再登録してください。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
プッシュ登録解除
追加の自動クリーンアップなしにデバイスへのプッシュ送信を停止するには、unregisterPushメソッドを使用します。これにより、Brazeサーバー上の現在のユーザーからデバイスのプッシュトークンが削除され、ローカルに保存されたトークンがクリアされます。
以下のコールバックの例は、unregisterPushの結果をハンドリングする方法を示しています。コールバックベースのフローで使用し、ログ出力を独自のリトライハンドリングに置き換えてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Completion callback
Braze.getInstance(context).unregisterPush { result ->
result
.onSuccess {
Log.d(TAG, "Push unregistered successfully")
}
.onFailure { error ->
val pushError = error as? BrazePushUnregistrationException
Log.e(
TAG,
"Push unregistration failed: ${error.message}, isRetriable: ${pushError?.isRetriable}"
)
}
}
以下のコルーチンの例は、サスペンド関数のunregisterPush APIを示しています。コルーチンベースのフローで使用し、アプリに合わせて成功と失敗のブランチをカスタマイズしてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
lifecycleScope.launch {
runCatching { Braze.getInstance(context).unregisterPush() }
.onSuccess {
Log.d(TAG, "Push unregistered successfully")
}
.onFailure { error ->
val pushError = error as? BrazePushUnregistrationException
Log.e(
TAG,
"Push unregistration failed: ${error.message}, isRetriable: ${pushError?.isRetriable}"
)
}
}
unregisterPush後にプッシュを再登録する
unregisterPushを呼び出した後、Brazeプッシュ通知を再度送信する前に、Androidプッシュ設定に従ってOSまたはプッシュプロバイダーで通知を再登録してください。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
Appleのプライバシーマニフェスト
トラッキングデータとは?
Appleは「トラッキングデータ」を、アプリ内でエンドユーザーやデバイスについて収集され、サードパーティのデータ(ターゲット広告など)やデータブローカーにリンクされたデータと定義しています。完全な定義と例については、Apple: Trackingを参照してください。
デフォルトでは、Braze SDKはトラッキングデータを収集しません。ただし、Braze SDKの設定によっては、アプリのプライバシーマニフェストにBraze固有のデータを記載する必要がある場合があります。
プライバシーマニフェストとは?
プライバシーマニフェストは、アプリとサードパーティSDKがデータを収集する理由と、そのデータ収集方法を説明するXcodeプロジェクト内のファイルです。データをトラッキングするサードパーティSDKには、それぞれ独自のプライバシーマニフェストが必要です。アプリのプライバシーレポートを作成すると、これらのプライバシーマニフェストファイルは自動的に1つのレポートに集約されます。
APIトラッキングデータドメイン
iOS 17.2以降、AppleはエンドユーザーがAd Tracking Transparency (ATT) プロンプトを受け入れるまで、アプリ内で宣言されたすべてのトラッキングエンドポイントをブロックします。Brazeはトラッキングデータをルーティングするためのトラッキングエンドポイントを提供しており、トラッキング以外のファーストパーティデータは元のエンドポイントにルーティングすることもできます。
Brazeトラッキングデータの宣言

前提条件
この機能を実装するには、以下のBraze SDKバージョンが必要です。
ステップ1:現在のポリシーを確認する
Braze SDKの現在のデータ収集ポリシーを法務チームと一緒に確認し、アプリがAppleの定義するトラッキングデータを収集しているかどうかを判断します。トラッキングデータを収集していない場合、現時点ではBraze SDKのプライバシーマニフェストをカスタマイズする必要はありません。Braze SDKのデータ収集ポリシーの詳細については、SDKデータ収集を参照してください。

Braze以外のSDKがトラッキングデータを収集している場合は、それらのポリシーを個別に確認する必要があります。
ステップ2:プライバシーマニフェストを作成する
まず、XcodeプロジェクトでPrivacyInfo.xcprivacyファイルを検索して、プライバシーマニフェストが既に存在するかどうかを確認します。このファイルが既にある場合は、次のステップに進むことができます。ない場合は、Apple: プライバシーマニフェストの作成を参照してください。
ステップ3:プライバシーマニフェストにエンドポイントを追加する
Xcodeプロジェクトで、アプリのPrivacyInfo.xcprivacyファイルを開き、テーブルを右クリックしてRaw Keys and Valuesにチェックを入れます。

App Privacy Configurationで、NSPrivacyTrackingを選択し、その値をYESに設定します。
![]()
App Privacy Configurationで、NSPrivacyTrackingDomainsを選択します。ドメイン配列に新しい要素を追加し、以前にAppDelegateに追加したエンドポイントの先頭にsdk-trackingを付けた値を設定します。
![]()
ステップ4:トラッキングデータを宣言する
次に、AppDelegate.swiftを開き、静的または動的なトラッキングリストを作成して、宣言する各トラッキングプロパティをリストします。AppleはエンドユーザーがそのユーザーのATTプロンプトを承認するまでこれらのプロパティをブロックするため、あなたと法務チームがトラッキングと見なすプロパティのみをリストしてください。例:
以下の例では、dateOfBirth、customEvent、customAttributeが静的リスト内でトラッキングデータとして宣言されています。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import UIKit
import BrazeKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
static var braze: Braze? = nil
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let configuration = Braze.Configuration(apiKey: brazeApiKey, endpoint: brazeEndpoint)
// Declare which types of data you wish to collect for user tracking.
configuration.api.trackingPropertyAllowList = [
.dateOfBirth,
.customEvent(["event-1"]),
.customAttribute(["attribute-1", "attribute-2"])
]
let braze = Braze(configuration: configuration)
AppDelegate.braze = braze
return true
}
}
以下の例では、エンドユーザーがApp Tracking Transparency(ATT)プロンプトを承認した後、トラッキングリストが自動的に更新されます。アプリのアクティベーション時に認可をリクエストすることはシーンごとのイベントであるため、このコードはAppDelegate.swiftのapplicationDidBecomeActive(_:)ではなく、SceneDelegate.swiftファイルのsceneDidBecomeActive(_:)メソッドに配置する必要があります(UISceneライフサイクルを採用したアプリの場合に必要です)。Brazeインスタンスは、ステップ1で設定したAppDelegate.braze静的プロパティを通じてSceneDelegateからアクセスできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
func sceneDidBecomeActive(_ scene: UIScene) {
// Request and check your user's tracking authorization status.
ATTrackingManager.requestTrackingAuthorization { status in
// Let Braze know whether user data is allowed to be collected for tracking.
let enableAdTracking = status == .authorized
AppDelegate.braze?.set(adTrackingEnabled: enableAdTracking)
// Add the `.firstName` and `.lastName` properties, while removing the `.everything` configuration.
AppDelegate.braze?.updateTrackingAllowList(
adding: [.firstName, .lastName],
removing: [.everything]
)
}
}
ステップ5:無限リトライループを防止する
SDKが無限リトライループに入るのを防ぐには、set(adTrackingEnabled: enableAdTracking)メソッドを使用してATT権限を処理します。SceneDelegate.swiftメソッドのadTrackingEnabledプロパティは、以下のように処理する必要があります。
1
2
3
4
5
6
7
8
func sceneDidBecomeActive(_ scene: UIScene) {
// Request and check your user's tracking authorization status.
ATTrackingManager.requestTrackingAuthorization { status in
// Let Braze know whether user data is allowed to be collected for tracking.
let enableAdTracking = status == .authorized
AppDelegate.braze?.set(adTrackingEnabled: enableAdTracking)
}
}
データトラッキングを無効にする
Swift SDKのデータトラッキングアクティビティを無効にするには、Brazeインスタンスのenabledプロパティをfalseに設定します。enabledがfalseに設定されている場合、Braze SDKはパブリックAPIへのすべての呼び出しを無視します。また、SDKはネットワークリクエストやイベント処理など、進行中のすべてのアクションもキャンセルします。
以前に保存されたデータを消去する
wipeData()メソッドを使用して、ユーザーのデバイスにローカル保存されたSDKデータを完全に消去できます。
Braze Swiftバージョン7.0.0以降では、SDKとwipeData()メソッドはデバイスIDとしてランダムなUUIDを生成します。ただし、useUUIDAsDeviceIdがfalseに設定されている場合、または Swift SDKバージョン5.7.0以前を使用している場合は、Identifier for Vendors(IDFV)がそのユーザーのデバイスIDとして自動的に使用されるため、/users/deleteへのポストリクエストも行う必要があります。
手動プッシュ連携を使用していて、アプリがwipeData()を呼び出した後、同じアプリ実行中にSDKを再度有効にする場合は、Brazeが更新されたデバイストークンを受信できるようにregisterForRemoteNotifications()を再度呼び出してください。詳細については、プッシュ通知の設定を参照してください。
データトラッキングを再開する
データ収集を再開するには、enabledをtrueに設定します。以前に消去されたデータは復元されないことに注意してください。
ログアウトとプッシュ登録解除
Braze SDKは、ユーザーがプッシュ通知の登録を解除したりログアウトしたりする際に、デバイスへのターゲティングを停止するためのメソッドを提供しています。これらのメソッドは、BrazeサーバーおよびSDKから現在のユーザーのプッシュ登録データを削除するため、Brazeはそのユーザーに今後のプッシュ通知キャンペーンを送信しなくなります。
ログアウト
ユーザーがアプリケーションからログアウトする際に、SDKのlogoutメソッドを呼び出して、現在のユーザーからデバイスのプッシュ登録を削除し、SDK上のクリーンアップアクションを自動的に実行します。logoutメソッドは以下を実行します。
- Brazeサーバー上の現在のユーザーから、デバイスのプッシュトークンおよびすべてのLive Activitiesのpush-to-startトークンの登録を解除します。
- 登録解除の呼び出しが成功した場合、SDKはローカルに保存されたSDKデータを消去し、SDKを無効にします。
- 失敗した場合、エラーと
isRetriableフラグを発生させ、インテグレーターがアクションを取れるようにします。
以下のcompletion handlerの例は、logoutの成功と失敗の処理を示しています。コールバックベースのフローに使用し、ログ出力をアプリのリトライまたは再認証ロジックに置き換えてください。
1
2
3
4
5
6
7
8
9
// Completion handler
AppDelegate.braze?.logout { result in
switch result {
case .success:
print("Logout successful")
case .failure(let error):
print("Logout failed: \(error.message), isRetriable: \(error.isRetriable)")
}
}
以下のasyncの例は、サスペンド可能なlogout APIを示しています。非同期ワークフローに使用し、成功と失敗のブランチをアプリに合わせてカスタマイズしてください。
1
2
3
4
5
6
7
// Async/await
do {
try await AppDelegate.braze?.logout()
print("Logout successful")
} catch let error as Braze.LogoutErrorResult {
print("Logout failed: \(error.message), isRetriable: \(error.isRetriable)")
}
このOBJECTIVE-Cの例は、completionベースのlogout処理を示しています。OBJECTIVE-Cインテグレーションで使用し、ログ出力をアプリのフローに置き換えてください。
1
2
3
4
5
6
[AppDelegate.braze logoutWithCompletion:^(NSError * _Nullable error) {
if (error) {
NSNumber *isRetriable = error.userInfo[BRZLogoutErrorUserInfoKey.isRetriable];
NSLog(@"Logout failed: %@, isRetriable=%@", error.localizedDescription, isRetriable);
}
}];
logout後にトラッキングとプッシュを再有効化する
logoutが成功した後、enabledをtrueに戻し、Swiftプッシュ設定に従ってオペレーティングシステム(OS)またはプッシュプロバイダーで通知を再登録してください。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
プッシュ登録解除
追加の自動クリーンアップなしにデバイスへのプッシュ送信を停止するには、unregisterPushメソッドを使用します。これにより、Brazeサーバー上の現在のユーザーからデバイスのプッシュトークンが削除され、ローカルに保存されたトークンがクリアされます。
以下のcompletion handlerの例は、unregisterPushの成功と失敗の処理を示しています。コールバックベースのフローに使用し、ログ出力を独自のリトライロジックに置き換えてください。
1
2
3
4
5
6
7
8
9
// Completion handler
AppDelegate.braze?.notifications.unregisterPush { result in
switch result {
case .success:
print("Push unregistered successfully")
case .failure(let error):
print("Push unregistration failed: \(error.message), isRetriable: \(error.isRetriable)")
}
}
以下のasyncの例は、サスペンド可能なunregisterPush APIを示しています。非同期ワークフローに使用し、成功と失敗のブランチをアプリに合わせてカスタマイズしてください。
1
2
3
4
5
6
7
// Async/await
do {
try await AppDelegate.braze?.notifications.unregisterPush()
print("Push unregistered successfully")
} catch let error as Braze.PushUnregistrationError {
print("Push unregistration failed: \(error.message), isRetriable: \(error.isRetriable)")
}
このOBJECTIVE-Cの例は、completionベースのunregisterPush処理を示しています。OBJECTIVE-Cインテグレーションで使用し、ログ出力をアプリのフローに置き換えてください。
1
2
3
4
5
6
7
8
[AppDelegate.braze.notifications unregisterPushWithCompletion:^(NSError * _Nullable error) {
if (error) {
NSNumber *isRetriable = error.userInfo[BRZPushUnregistrationErrorUserInfoKey.isRetriable];
NSNumber *statusCode = error.userInfo[BRZPushUnregistrationErrorUserInfoKey.httpStatusCode];
NSLog(@"Push unregistration failed: %@, isRetriable=%@ status=%@",
error.localizedDescription, isRetriable, statusCode);
}
}];
unregisterPush後にプッシュを再登録する
unregisterPushを呼び出した後、Brazeプッシュ通知を再度送信する前に、Swiftプッシュ設定に従ってOSまたはプッシュプロバイダーで通知を再登録してください。
即時の登録解除呼び出しを避ける
OSまたはプッシュプロバイダーでプッシュ通知を登録した直後にlogoutまたはunregisterPushを呼び出すことは避けてください。非同期のサーバー処理により、まれにプッシュトークンがBrazeユーザーに再追加される可能性があります。
Live Activitiesのpush-to-startトークンの登録解除
Live Activitiesは、push-to-startトークンを使用してリモートで開始できます。Brazeがデバイス上でLive Activitiesをリモートで開始することを停止するには、unregisterPushToStartメソッドを呼び出して、現在登録されているすべてのタイプ(デフォルト)または指定されたActivityタイプのリストの登録を解除します。
現在実行中のLive Activitiesは引き続き更新を受信し、このメソッドは新しいアクティビティをリモートで開始する機能のみを削除します。Live Activitiesの詳細については、Live Activitiesを参照してください。

Live ActivityのregisterPushToStartを呼び出した直後にlogoutまたはunregisterPushToStartを呼び出すことは避けてください。非同期のサーバー処理の性質上、まれにpush-to-startトークンがBrazeユーザーに再追加される可能性があります。
以下の例は、すべてのpush-to-startアクティビティタイプの登録を解除する方法を示しています。サインアウトしたユーザーがリモートで開始される新しいLive Activitiesを受信しないようにする場合に使用してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Unregister all currently-registered activity types
// Completion handler
AppDelegate.braze?.liveActivities.unregisterPushToStart { result in
switch result {
case .success:
print("Push-to-start unregistered successfully")
case .failure(let error):
print("Push-to-start unregistration failed: \(error.message), isRetriable: \(error.isRetriable)")
}
}
// Async/await
do {
try await AppDelegate.braze?.liveActivities.unregisterPushToStart()
print("Push-to-start unregistered successfully")
} catch let error as Braze.PushUnregistrationError {
print("Push-to-start unregistration failed: \(error.message), isRetriable: \(error.isRetriable)")
}
以下の例は、特定のアクティビティタイプの登録を解除する方法を示しています。選択したLive Activitiesのみリモートでの開始を停止する場合に使用してください。
1
2
3
4
5
6
7
8
9
// Unregister specific activity types
AppDelegate.braze?.liveActivities.unregisterPushToStart(types: ["ActivityType1", "ActivityType2"]) { result in
switch result {
case .success:
print("Push-to-start unregistered successfully")
case .failure(let error):
print("Push-to-start unregistration failed: \(error.message), isRetriable: \(error.isRetriable)")
}
}

unregisterPushToStartにはOBJECTIVE-C APIがありません。Live ActivitiesはSwift専用の型に依存しているためです。
IDFVの収集
以前のバージョンのBraze iOS SDKでは、IDFV(Identifier for Vendor)フィールドはユーザーのデバイスIDとして自動的に収集されていました。Swift SDK v5.7.0以降、IDFVフィールドはオプションで無効化でき、代わりにBrazeがランダムなUUIDをデバイスIDとして設定するようになりました。Swift SDK v7.0.0以降、IDFVフィールドはデフォルトでは収集されず、代わりにUUIDがデバイスIDとして設定されます。
useUUIDAsDeviceId機能は、Swift SDKがデバイスIDをUUIDとして設定するように構成します。従来、iOS SDKはAppleが生成したIDFV値と同じデバイスIDを割り当てていました。この機能がiOSアプリでデフォルトで有効になっている場合、SDKを通じて作成されたすべての新規ユーザーには、UUIDと同じデバイスIDが割り当てられます。
IDFVを個別に収集したい場合は、set(identifierforvendor:)を使用できます。

braze.deviceIdの読み取りは、SDKが初期化後の処理を完了するまで呼び出しスレッドをブロックします。メインスレッドやレイテンシに敏感なコンテキストでは、代わりにノンブロッキングの代替手段を使用してください。
1
2
3
4
5
6
7
// Completion handler — always delivers on the main thread.
AppDelegate.braze?.getDeviceId { deviceId in
print("Device ID:", deviceId)
}
// Async/await (iOS 13.0+, tvOS 13.0+, watchOS 6.0+, macOS 10.15+)
let deviceId = await AppDelegate.braze?.getDeviceId()
1
2
3
4
// Completion handler — always delivers on the main thread.
[AppDelegate.braze getDeviceIdWithCompletion:^(NSString *deviceId) {
NSLog(@"Device ID: %@", deviceId);
}];
考慮事項
SDKバージョン
Swift SDK v7.0.0+では、useUUIDAsDeviceIdが有効(デフォルト)の場合、新規に作成されたすべてのユーザーにランダムなデバイスIDが割り当てられます。既存のすべてのユーザーは、IDFVであった可能性のある同じデバイスID値を維持します。
この機能が有効でない場合、デバイスには引き続き作成時にIDFVが割り当てられます。
ダウンストリーム
テクノロジーパートナー:この機能が有効な場合、BrazeデバイスIDからIDFV値を取得しているテクノロジーパートナーは、このデータにアクセスできなくなります。パートナー連携にデバイスから取得したIDFV値が必要な場合は、この機能をfalseに設定することをお勧めします。
Currents:useUUIDAsDeviceIdをtrueに設定すると、Currentsで送信されるデバイスIDはIDFV値と一致しなくなります。
よくある質問
この変更はBrazeの既存ユーザーに影響しますか?
いいえ。この機能を有効にしても、Brazeのユーザーデータは上書きされません。新しいUUIDデバイスIDは、新しいデバイスまたはwipedata()が呼び出された場合にのみ作成されます。
この機能を有効にした後に無効にできますか?
はい、この機能はいつでもオンとオフを切り替えることができます。以前に保存されたデバイスIDが上書きされることはありません。
Brazeの他の場所でIDFV値を取得することはできますか?
はい、Swift SDKを通じてIDFVをオプションで収集することは引き続き可能です(デフォルトでは収集は無効になっています)。
前提条件
この機能を使う前に、React Native Braze SDKを統合する必要がある。
データトラッキングを無効にする
データ収集を無効にするには、disableSDKメソッドを使用します。このメソッドを呼び出すと、Braze SDKはBrazeサーバーへのデータ送信を停止します。
1
Braze.disableSDK();
データトラッキングを再開する
データ収集を無効にした後に再開するには、enableSDKメソッドを使用します。
1
Braze.enableSDK();
ローカルに保存されたデータを消去する
デバイスに保存されたすべてのBraze SDKデータを削除するには、wipeDataメソッドを使用します。このメソッドを呼び出すと、SDKは無効になり、enableSDKで再度有効にする必要があります。
1
Braze.wipeData();
データのフラッシュ
保留中のデータをBrazeサーバーに即座にフラッシュするには、requestImmediateDataFlushを使用します。
1
Braze.requestImmediateDataFlush();
広告トラッキングの有効化を設定する
このデバイスで広告トラッキングが有効かどうかをBrazeに通知するには、setAdTrackingEnabledメソッドを使用します。SDKはこのデータを自動的に収集しません。
1
Braze.setAdTrackingEnabled(true, "GOOGLE_ADVERTISING_ID");
2番目のパラメーターはGoogle Advertising IDで、Androidでのみ使用されます。
トラッキングプロパティ許可リストの更新(iOSのみ)
トラッキングとして宣言されたデータタイプのリストを更新するには、updateTrackingPropertyAllowListを使用します。これはAndroidでは何も実行されません。
1
2
3
4
5
6
7
8
Braze.updateTrackingPropertyAllowList({
adding: [Braze.TrackingProperty.EMAIL, Braze.TrackingProperty.FIRST_NAME],
removing: [],
addingCustomEvents: ["my_custom_event"],
removingCustomEvents: [],
addingCustomAttributes: ["my_custom_attribute"],
removingCustomAttributes: []
});
詳細については、プライバシーマニフェストを参照してください。
ログアウトとプッシュ登録解除
この機能はReact Native SDKではまだサポートされていません。
前提条件
この機能を使用するには、 Roku Braze SDK を統合する必要があります。
以前に保存されたデータを消去する
Roku SDKにはwipeDataメソッドが含まれていません。他のBraze SDKのwipeData()と機能的に同等のクリーンな状態を作成するには、4つのBrazeレジストリセクションをクリアしてから、SDKを再初期化します。
Braze Roku SDKは、以下のレジストリセクションにデータを保持します。
| セクション | 内容 |
|---|---|
braze.section.device_id |
Brazeでこのデバイスを識別するために使用されるデバイスUUID。 |
braze.section.user_id |
設定されている場合の外部ユーザー ID。 |
braze.section.session |
アクティブなセッションUUID、開始時刻、終了時刻。 |
braze.section.config |
キャッシュされたSDK設定とフィーチャーフラグデータ。 |
ステップ1:レジストリセクションをクリアする
roRegistry.Delete()を使用して各Brazeセクションを削除し、Flush()を呼び出して変更を保持します。
1
2
3
4
5
6
7
8
sub WipeBrazeData()
registry = CreateObject("roRegistry")
registry.Delete("braze.section.device_id")
registry.Delete("braze.section.user_id")
registry.Delete("braze.section.session")
registry.Delete("braze.section.config")
registry.Flush()
end sub
ステップ2:Braze SDKを再初期化する
Braze SDKを初期化し直すと、SDKは欠落しているレジストリデータを適切に処理します。
- デバイスIDセクションが空のため、SDKは新しいUUIDを生成し、デバイスを匿名として扱います。
- ユーザー IDセクションが空のため、SDKはデフォルトで匿名ユーザー(空の文字列
"")になります。 - セッションセクションが空のため、SDKは新しいセッションを開始します。
- 設定セクションが空のため、SDKはサーバーから設定を再取得します。

Roku SDKは、レジストリをクリアしてもサーバー側の削除リクエストを生成しません。Brazeからユーザーを削除する必要がある場合は、ユーザーのexternal_idまたはbraze_idを使用して/users/deleteにリクエストを送信してください。
ログアウトとプッシュ登録解除
この機能はRoku SDKではまだサポートされていません。