UID2 Client-Side Integration Guide for Mobile
このガイドは、モバイルアプリのみの変更で UID2 とインテグレーションしたいモバイルアプリパブリッシャー向けです。
以下の手順は、Private Operator を使用したいパブリッシャーや、Server-Side でトークンを生成したいパブリッシャーには適用されません。これらのパブリッシャーは、Client-Server Integration Guide for Mobile に従う必要があります。
このページでは、インテグレーション手順の概要と、追加のドキュメントへのリンクを提供します。
UID2 は、Android および iOS 向けのモバイル SDK を提供しています。各 SDK には以下の機能があります:
- UID2 identity (UID2 Token と関連する値) を生成し、ローカルファイルストレージに保存します。
- UID2 Token を自動的にリフレッシュします。
このガイドの、UID2 mobile SDKs は、SDK for Android と SDK for iOS の両方を含むグループ用語です。
モバイルパブリッシャーインテグレーションに関する FAQs については、FAQs for Mobile Integrations を参照してください。
UID2 を Client-Side でインテグレーションするには、以下の手順を完了する必要があります:
-
Check that the token was successfully generated and then pass it for bidstream use.
-
Optionally, integrate the UID2 GMA/IMA Plugin for GAM Secure Signals integration.
Mobile SDK Version
このガイドは、次のいずれかの UID2 mobile SDK を使用する方法について説明します:
- SDK for Android (version 1.6.0 以降)
- SDK for iOS (version 1.7.0 以降)
正しい SDK/バージョンをモバイルアプリにインストールする手順については、Add the UID2 Mobile SDK to Your Mobile App を参照してください。
Client-Side Integration Example
UID2 mobile SDK の設定方法と、モバイル用の Client-Side インテグレーションを使用したトークンの生成方法の例については、UID2 開発アプリを試してください。
Android または iOS 向けの適用可能な手順に従ってください:
- Android
- iOS
- SDK for Android source code repository on GitHub の main ブランチをチェックアウトします。
- Android Studio (Jellyfish/v2023.3.1 または SDK for Android リリース時に必要な Android Gradle Plugin バージョンをサポートする将来のバージョン) で、チェックアウトしたディレクトリを開きます。
- AndroidManifest.xml で、
uid2_environment_euid
をfalse
に設定します。 - dev-app アプリを実行します。
- アプリを起動したら、Client Side チェックボックスがチェックされていることを確認します。
- メールアドレスまたは電話番号を入力し、右側の矢印をクリックします。
-
main branch of the UID2 SDK For iOS source code repository on GitHub をチェックアウトします。
-
Xcode で、このプロジェクトファイルを開き ます:
Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp.xcodeproj
-
Xcode のエディタで、
Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist
のUID2EnvironmentEUID
キーをNO
に設定します。または、コマンドラインからplutil
を使用できます:plutil -replace UID2EnvironmentEUID -bool NO Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist
EUID 環境を使うには、
plutil -replace UID2EnvironmentEUID -bool YES Development/UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist
-
UID2SDKDevelopmentApp アプリのスキームを実行します。
-
アプリを起動したら、Client Side チェックボックスがチェックされていることを確認します。
-
メールアドレスまたは電話番号を入力し、右側の矢印をクリックします。
アプリの背後で、開発アプリは次の UID2 SDK API コールを行います。このコールは、メール/電話番号入力に対して UID2 Service に identity (UID2 Token と関連する値) を生成するリクエストを送信します:
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
identityRequest: IdentityRequest,
subscriptionId: String,
publicKey: String,
onResult: (GenerateIdentityResult) -> Unit
)
UID2Manager.shared.generateIdentity(
_ identity: IdentityType,
subscriptionID: String,
serverPublicKey: String,
appName: String? = nil
)
API コールが成功すると、アプリは生成された identity を表示し、UID2Manager
クラス内に永続化します。
identity には、getAdvertisingToken()
メソッドコールで取得できる UID2 Advertising Token が含まれます:
- Android
- iOS
UID2Manager.getInstance().getAdvertisingToken()
UID2Manager.shared.getAdvertisingToken()
このメソッドコールは、広告リクエストを行うために必要な値を返します: 詳細は Pass Generated Token for Bidstream Use を参照してください。
Testing With Your Own Configuration
デフォルトでは、開発アプリは Subscription ID と public key のデフォルト値を使用します。これらの値は、次のオブジェクトに保存されています:
- Android
- iOS
com.uid2.dev.ui.MainScreenViewModel.Companion
RootViewModel
デフォルトでは、開発アプリは UID2 インテグレーション環境に接続されています。これは、次の Android メソッドコール/iOS ファイルで指定されています:
- Android
- iOS
com.uid2.UID2Manager.Companion#init
see UID2SDKDevelopmentApp/UID2SDKDevelopmentApp/Info.plist
必要に応じて、デフォルトの Subscription ID と public key を割り当てられた値に変更し、UID2 本番環境に接続することもできます。詳細は Optional: Specifying the API Base URL to Reduce Latency を参照してください。
Integrating with Single Sign-On (SSO)
シングルサインオン(SSO)プロバイダーとのインテグレーションに関する情報は、Publisher Integration with SSO Providers を参照してください。
Complete UID2 Account Setup and Configure Account
UID2 とインテグレーションするには、UID2 アカウントが必要です。アカウントをまだ作成していない場合は、まず Account Setup ページの手順に従ってください。
アカウントの初期設定が完了すると、UID2 Portal にアクセスするための手順とリンクが送信されます。ここで、本番環境用の credentials を作成し、必要に応じて追加の値を設定できます。詳細は、Getting Started with the UID2 Portal を参照してください。
モバイル Client-Side インテグレーションには、UID2 Portal の Client-Side Integration ページで以下の値を設定する必要があります:
-
Subscription ID と Public Key: Adding and Managing Key Pairs を参照してください。
-
モバイルアプリ ID : 該当する以下の値のいずれか:
-
Android Application ID
-
iOS Bundle Identifier
-
iOS App Store ID
詳細は、Adding and Managing Mobile App IDs を参 照してください。
-
Add the UID2 Mobile SDK to Your Mobile App
Mobile SDK をアプリに追加するには、適用可能な以下のドキュメントに従ってください:
SDK をアプリに追加したら、SDK を使用して UID2 Token を生成する準備が整います。
Using the UID2 Integration Environment
デフォルトでは、この SDK は UID2 本番環境: https://prod.uidapi.com
で動作するように構成されています。UID2 インテグレーション環境を使用する場合は、(認証情報については Getting Your Credentials を参照)、UID2Manager
の初期化する際に次の URL を指定してください:
- Android
- iOS
UID2Manager.init(
context = this,
UID2Manager.Environment.Custom("https://operator-integ.uidapi.com")
)
// Must be set before UID2Manager.shared is accessed
UID2Settings.shared.uid2Environment = .custom(
url: URL(string: "https://operator-integ.uidapi.com")!
)
次のような環境間の違いに注意してください:
- UID2 インテグレーション環境のトークンは、ビッドストリームに渡しても有効ではありません。
- 各環境(インテグレーションおよび本番)には異なる API Key とクライアントシークレット値があります。各環境で正しい値を使用してください。
Optional: Specifying the API Base URL to Reduce Latency
デフォルトでは、この SDK は米国の UID2 本番環境サーバーにリクエストを送信します。
ユースケースに最適な URL を選択する方法と、有効なベース URL の完リストについては、Environments を参照してください。
別の UID2 サーバを指定するには、次の例に示すように構成変更を行います:
- Android
- iOS
UID2Manager.init(
context = this,
UID2Manager.Environment.Custom("https://global.prod.uidapi.com")
)
// or use a named environment
UID2Manager.init(
context = this,
UID2Manager.Environment.Sydney
)
// Must be set before UID2Manager.shared is accessed
UID2Settings.shared.uid2Environment = .custom(
url: URL(string: "https://global.prod.uidapi.com")!
)
// or use a named environment
UID2Settings.shared.uid2Environment = .sydney
Configure the UID2 Mobile SDK
UID2 は、以下の値を提供します。これらは、UID2 Token を Client-Side クライアで生成する際に必要です:
- Subscription ID
- Public key
これらの値は、アカウントセットアップ時に受け取ります。インテグレーション環境用の 1 つのセットと、本番環境用の別のセットがあります。
SDK を構成するには、アカウントセットアップ時に受け取った Subscription ID と public key、およびユーザーのハッシュ化またはハッシュ化されていない直接識別情報 (DII) (メールアドレスまたは電話番号) を次のメソッドコールに渡す必要があります:
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
identityRequest: IdentityRequest,
subscriptionId: String,
publicKey: String,
onResult: (GenerateIdentityResult) -> Unit
)
UID2Manager.shared.generateIdentity(
_ identity: IdentityType,
subscriptionID: String,
serverPublicKey: String,
appName: String? = nil
)
設定が完了すると、UID2 mobile SDK は以下の操作を行います:
- ユーザーの UID2 identity (トークンを含む) を生成します。
- トークンをユーザーのデバイスにローカルに保存します。
- アプリが開いている間、必要に応じてトークンを自動的にリフレッシュします。
ユーザーの DII を UID2 mobile SDK に渡す際、ハッシュ化またはハッシュ化されていない DII を渡すことができます。DII をハッシュ化されていない状態で渡す場合、SDK がハッシュ化します。ハッシュ化された DII を SDK に渡す場合、ハッシュ化する前に正規化する必要があります。詳細は Normalization and Encoding を参照してください。
Format Examples for DII
SDK は、ハッシュ化された DII を UID2 Service に送信する前に暗号化します。
ユーザーごとに、DII のフォーマットが異なる場合でも、任意のフォーマットで generateIdentity
メソッドを呼び出すことができます。DIIのフォーマットはユーザごとに異なる場合がありますが、ユーザーごと送信できる値は 1 つだけです。
以下の例は、UID2 mobile SDK を構成する異なる方法を示し、SDK に渡す DII に必要な要件を示しています:
- Email, Unhashed
- Email, Normalized and Hashed
- Phone Number, Unhashed
- Phone Number, Normalized and Hashed
generateIdentity
メソッドが複数回呼び出される場合、UID2 mobile SDK は最新の構成値を使用します。
- Email, Unhashed
- Email, Normalized and Hashed
- Phone Number, Unhashed
- Phone Number, Normalized and Hashed
以下の例は、UID2 mobile SDK をメールアドレスで構成する方法を示しています。
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
IdentityRequest.Email("test@example.com"),
subscriptionId,
publicKey,
) { result ->
when (result) {
is Error -> ...
is Success -> ...
}
}
struct InvalidEmailError: Error, LocalizedError {
var errorDescription: String = "Invalid email address"
}
Task<Void, Never> {
do {
guard let normalizedEmail = IdentityType.NormalizedEmail(string: "test@example.com") else {
throw InvalidEmailError() // email is invalid and cannot be normalized, handle error
}
try await UID2Manager.shared.generateIdentity(
.email(normalizedEmail),
subscriptionID: subscriptionID,
serverPublicKey: serverPublicKeyString
)
} catch {
// read `error` object for troubleshooting or enable logging to view it in logs
}
}
このシナリオでは:
- パブリッシャーはメールアドレスを正規化またはハッシュ化する必要はありません。
- UID2 mobile SDK は、暗号化されたハッシュを UID2 Service に送信する前にメールアドレスを正規化およびハッシュ化します。
以下の例は、UID2 mobile SDK をハッシュ化されたメールアドレスで構成する方法を示しています。
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
IdentityRequest.EmailHash(
"EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4="
),
subscriptionId,
publicKey,
) { result ->
when (result) {
is Error -> ...
is Success -> ...
}
}
Task<Void, Never> {
do {
try await UID2Manager.shared.generateIdentity(
.emailHash("EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4="),
subscriptionID: subscriptionID,
serverPublicKey: serverPublicKeyString
)
} catch {
// read `error` object for troubleshooting or enable logging to view it in logs
}
}
このシナリオでは:
- パブリッシャーはメールアドレスを正規化およびハッシュ化する責任があります。詳細は Email Address Normalization を参照してください。
- UID2 mobile SDK は、ハッシュ化された DII を UID2 Service に送信する前に暗号化します。
以下の例は、UID2 mobile SDK を電話番号で構成する方法を示しています。
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
IdentityRequest.Phone("+12345678901"),
subscriptionId,
publicKey,
) { result ->
when (result) {
is Error -> ...
is Success -> ...
}
}
struct InvalidPhoneError: Error, LocalizedError {
var errorDescription: String = "Invalid phone number"
}
Task<Void, Never> {
do {
guard let normalizedPhone = IdentityType.NormalizedPhone(normalized: "+12345678901") else {
throw InvalidPhoneError() // Phone number is not normalized according to ITU E.164.
}
try await UID2Manager.shared.generateIdentity(
.phone(normalizedPhone),
subscriptionID: subscriptionID,
serverPublicKey: serverPublicKeyString
)
} catch {
// read `error` object for troubleshooting or enable logging to view it in logs
}
}
このシナリオでは:
- パブリッシャーは電話番号を正規化する責任があります。詳細は Phone Number Normalization を参照してください。
- UID2 mobile SDK は、ハッシュ化された電話 番号を UID2 Service に送信する前に暗号化します。
以下の例は、UID2 mobile SDK をハッシュ化された電話番号で構成する方法を示しています。
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
IdentityRequest.PhoneHash(
"EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4="
),
subscriptionId,
publicKey,
) { result ->
when (result) {
is Error -> ...
is Success -> ...
}
}
Task<Void, Never> {
do {
try await UID2Manager.shared.generateIdentity(
.phoneHash("EObwtHBUqDNZR33LNSMdtt5cafsYFuGmuY4ZLenlue4="),
subscriptionID: subscriptionID,
serverPublicKey: serverPublicKeyString
)
} catch {
// read `error` object for troubleshooting or enable logging to view it in logs
}
}
このシナリオでは:
- パブリッシャーは電話番号を正規化およびハッシュ化する責任があります。詳細は Phone Number Normalization を参照してください。
- UID2 mobile SDK は、ハッシュ化された DII を UID2 Service に送信する前に暗号化します。
Token Storage and Refresh
Format Examples for DII に記載されている適用可能なメソッドを呼び出した後、identity が生成され、ローカルファイルストレージに保存されます。UID2 mobile SDK は定期的に UID2 Token をリフレッシュします。
ローカルファイルストレージに保存されているファイルの形式、またはファイル名自体が予告なく変更される可能性があります。ファイルを直接読み取ったり更新したりしないようにしてください。
Pass Generated Token for Bidstream Use
モバイルアプリで generateIdentity
メソッドが成功すると、identity が返されます。次のステップは、次のように getAdvertisingToken()
メソッドを呼び出すことです:
- Android
- iOS
UID2Manager.getInstance().getAdvertisingToken()
UID2Manager.shared.getAdvertisingToken()
成功すると、このメソッドコールはトークンを返します。—以下のような、非 null の文字列オブジェクトが返されます:
A4AAAABlh75XmviGJi-hkLGs96duivRhMd3a3pe7yTIwbAHudfB9wFTj2FtJTdMW5TXXd1KAb-Z3ekQ_KImZ5Mi7xP75jRNeD6Mt6opWwXCCpQxYejP0R6WnCGnWawx9rLu59LsHv6YEA_ARNIUUl9koobfA9pLmnxE3dRedDgCKm4xHXYk01Fr8rOts6iJj2AhYISR3XkyBpqzT-vqBjsHH0g
このトークンを使用して、ビッドストリームに送信するためにダウンストリームに渡すことができます。
getAdvertisingToken()
メソッドコールが null
を返す場合、identity または有効なトークンが生成されていません。
その原因として考えられることと、トラブルシューティングに役立ついくつかの方法は次のとおりです:
- Identity が無効です。この場合、いくつかのオプションがあります:
-
前の
generateIdentity
メソッドコールからエラーがあるかどうかを確認します。 -
次のいずれかを使用して identity のステータスを確認します:
- Android Java:
UID2Manager.getInstance().getCurrentIdentityStatus()
- Android Kotlin:
UID2Manager.getInstance().currentIdentityStatus()
- iOS:
UID2Manager.shared.identityStatus
UID2 から DII がオプトアウトされている可能性があります: 詳細については When to Pass DII into the SDK を参照してください。
- Android Java:
-
- ロギングを有効 (
isLoggingEnabled
をtrue
に設定する) にして詳細情報を取得できます: Enable Logging を参照してください。 - UID2 identity 内の Advertising Token の有効期限が切れていて、Refresh Token も有効期限が切れているため、SDK がトークンをリフレッシュできません。
Identity が無い場合は、generateIdentity
メソッドを再度呼び出す必要があります: 詳細については Configure the UID2 Mobile SDK を参照してください。
詳細は、When to Pass DII into the SDK(次項) を参照してください。
When to Pass DII into the SDK
新しいユーザーがアプリを初めて開いた場合、UID2 identity は存在しません。トークン生成を開始するには、generateIdentity
メソッドを DII と共に呼び出す必要があります:
- Android
- iOS
UID2Manager.getInstance().generateIdentity(
identityRequest: IdentityRequest,
subscriptionId: String,
publicKey: String,
onResult: (GenerateIdentityResult) -> Unit
)
UID2Manager.shared.generateIdentity(
_ identity: IdentityType,
subscriptionID: String,
serverPublicKey: String,
appName: String? = nil
)
メソッドコールが成功すると、Advertising Token (UID2 Token) が生成され、ビッドストリームに 送信するために使用できます。
ローカルファイルストレージに保存されている UID2 identity が期限切れで、リフレッシュできない場合は、新しい identity を生成するために generateIdentity
メソッドを再度呼び出す必要があります。ただし、次の Android メソッド/iOS オブジェクトの応答が示すように、DII が UID2 からオプトアウトされている場合は、UID2 Token は生成されません:
- Android
- iOS
Android Java:
UID2Manager.getInstance().getCurrentIdentityStatus()
Android Kotlin:
UID2Manager.getInstance().currentIdentityStatus()
UID2Manager.shared.identityStatus
レスポンスステータスが OPT_OUT
(Android) または optOut
(iOS) の場合、DII は UID2 からオプトアウトされており、UID2 Token は生成されません。
UID2 mobile SDK で DII が必要かどうかを判断する最良の方法は、アプリの起動時または再開時に常に getAdvertisingToken()
メソッドを呼び出すことです:
- Android
- iOS
UID2Manager.getInstance().getAdvertisingToken()
UID2Manager.shared.getAdvertisingToken()
getAdvertisingToken()
が null を返し、identity ステータスが OPT_OUT
/optOut
でない場合、新しいトークンを生成する必要があります。これを行うには、generateIdentity
メソッドに DII を再度渡します。詳細は Configure the UID2 Mobile SDK を参照してください。
Enable Logging
UID2 SDK はログを生成することができ、UID2 インテグレーションにログ を使用して問題をデバッグすることができます。ログを有効にするには、次の手順を実行します:
- Android
- iOS
// During UID2Manager initialization:
UID2Manager.init(
context = this,
isLoggingEnabled = true
)
// On iOS, you must set UID2Settings before you first access UID2Manager.shared.
// Changes made to settings after first access are not read.
UID2Settings.shared.isLoggingEnabled = true
Optional: UID2 GMA/IMA Plugin for GAM Secure Signals integration
UID2 Token を生成して Google GMA SDK または Google IMA SDK に送信する場合、このガイドに従っていると仮定して、モバイルアプリに UID2 GMA/IMA プラグインを追加する必要があります。手順については、該当するプラグインガイドを参照してください。
- UID2 GMA Plugin for Android Integration Guide
- UID2 GMA Plugin for iOS Integration Guide
- UID2 IMA Plugin for Android Integration Guide
- UID2 IMA Plugin for iOS Integration Guide
Advertising Token を取得して Google GMA/IMA SDK に手動で渡すために、明示的に getAdvertisingToken()
メソッドを呼び出す必要はありません。UID2 GMA/IMA プラグインが自動的に処理します。
必要なことは、getAdvertisingToken()
が null でない文字列オブジェクトを返すようにするだけです。
- Android
- iOS
UID2Manager.getInstance().getAdvertisingToken()
UID2Manager.shared.getAdvertisingToken()
トークンが存在する場合、Google GMA/IMA プラグインは UID2 GMA/IMA プラグインを介して自動的に取得できます。
Optional: UID2 Integration with Prebid Mobile SDK
UID2 Prebid Mobile SDK インテグレーションは、UID2 SDK for Android version 1.6.0 または UID2 SDK for iOS version 1.7.0 が必要です。
このセクションは、UID2 とインテグレーションし、Android および iOS アプリケーションでヘッダービディングを行うために Prebid Mobile SDK を使用したい参加者向けです。
UID2 Prebid インテグレーションは、UID2Identity
の状態を監視します。状態が変更されるたびに、Prebid インテグレーションは自動的に Prebid の外部ユーザー ID を更新します。これには、Identity がリフレッシュされ、新しい Advertising Token が生成される場合も含まれます。
Prebid は、UID2 Token を RTB ビッドストリームに送信し、設定した他の外部ユーザー ID と共に送信します。
このインテグレーションには、Prebid Server のセットアップが必要です。
UID2 Prebid for Mobile インテグレーションを設定するには、次の手順に従います:
-
Prebid SDK Integration for Android または Prebid SDK Integration for iOS の手順に従って、Prebid の Mobile SDK を設定します。
-
Add the UID2 Mobile SDK to Your Mobile App の手順に従って、UID2 Mobile SDK をアプリに追加します。
-
UID2 Prebid インテグレーションは別のモジュールとして配布されているため、プロジェクトの依存関係として追加する必要があります。以下のオプションのいずれかに適用されるインストール手順に従います:
- Gradle (Android)
- Maven (Android)
- CocoaPods (iOS)
- SPM (iOS)
Gradle の設定に以下を追加します:
implementation("com.uid2:uid2-android-sdk-prebid:1.6.0")
Maven でインストールする には、
pom.xml
ファイルに SDK を依存関係として追加します:<dependency>
<groupId>com.uid2</groupId>
<artifactId>uid2-android-sdk-prebid</artifactId>
<version>1.6.0</version>
</dependency>Podfile
に以下を追加します:pod 'UID2Prebid', '~> 1.7'
警告Swift Package Manager を用いたインテグレーションは、Prebid Mobile SDK がサポートするまでサポートされません。詳細は、Prebid's Mobile SDK documentation を参照してください。
-
依存関係を追加した後、インテグレーションの設定が必要です。最初に
UID2Manager
を初期化し、次に Prebid を初期化します。次の例に示すように行います。- Android Kotlin
- Android Java
- iOS Swift
UID2Manager.init(context = this)
PrebidMobile.initializeSdk(this) { Log.i(TAG, "Prebid: $it") }
prebid = UID2Prebid(UID2Manager.getInstance()).apply {
initialize()
}UID2Manager.init(this);
PrebidMobile.initializeSdk(this, status -> Log.i(TAG, "Prebid: " + status));
prebid = new UID2Prebid(UID2Manager.getInstance());
prebid.initialize();UID2Prebid のインスタンスを初期化し、それを保持します。UID2Prebid は、インスタンスが保持されている間のみ UID2Manager を監視します。
self.prebid = UID2Prebid(manager: UID2Manager.shared)
-
初期化の際に渡されるコールバックを設定します。
UID2 Prebid インテグレーションは、新しい Identity が生成されるか、既存のトークンがリフレッシュされるたびに、関連する外部ユーザー ID を設定することで、定期的に Prebid を更新します。
このプロセスは破壊的であり、アプリケーションが他のソースから外部 ID を使用している場合、UID2 Prebid インテグレーションにそれらを提供する必要があります。これにより、UID2 Token が更新される間、すべての外部 ID が保持されます。
これは、以下の例に示される通り、初期化中に渡されるコールバックを介して行われます。
- Android Kotlin
- Android Java
- iOS Swift
prebid = UID2Prebid(
manager = UID2Manager.getInstance(),
externalUserIdFactory = ::getExternalIds,
).apply {
initialize()
}prebid = new UID2Prebid(UID2Manager.getInstance(), () -> getExternalIds());
prebid.initialize();self.prebid = UID2Prebid(manager: UID2Manager.shared, thirdPartyUserIDs: {
// return externalUserIDs
})
Error Response States
特定の条件下では、モバイル SDK は次のいずれかのエラー応答状態を返す可能性があります:
レスポンスステータスは、Android と iOS の両方で同じです。
Response State of Expired
Expired
のレスポンスステータスは、UID2 Token が有効期限切れであることを示しますが、リフレッシュトークンは有効期限切れではないため、UID2 Token をリフレッシュできます。
Automatic refresh: SDK で自動リフレッシュが有効になっている場合 (automaticRefreshEnabled
プロパティ)、SDK がトークンを自動的にリフレッシュします。ただし、この状態が発生する可能性があるいくつかのシナリオがあります。
たとえば、アプリが起動され、SDK がすぐにクエリされた場合、レスポンスステータスが Expired
になる可能性がありますが、バックグラウンドで SDK がトークンをリフレッシュしており、すぐに新しい ID で更新されます。
この場合、何もする必要はありません。SDK が初期化されるとすぐにトークンがリフレッシュされます。
Manual refresh: トークンの自動リフレッシュを無効にしている場合、Expired
のレスポンスステータスが返された場合、refreshIdentity()
メソッドを呼び出してリフレッシュを手動でリクエストできます。
Response State of RefreshExpired
RefreshExpired
のレスポンスステータスは、UID2 Token と Refresh Token の両方が有効期限切れであることを示します。そのため、UID2 Token をリフレッシュできません。
このような状況が発生する可能性がある例としては、ユーザーがアプリを長期間実行しない場合、SDK が Refresh Token が期限切れになる前に UID2 Token をリフレッシュする機会がない場合があります。
この場合、Identity を再生成する必要があります。
Response State of Invalid
Invalid
のレスポンスステータスは、ディスクからロードされたか、API 経由でリクエストされた ID に、必要なすべてのトークンが含まれていないことを示します。これは起こるべきではありませんが、予期しない状況で発生する可能性があります。
SDK がこのエラーを検出すると、以前の ID は使用できないと見なされるため、クリアされます。
この場合、Identity を再生成する必要があります。また、問題を UID2 の連絡先に 報告することが望ましいです。
Response State of NoIdentity
NoIdentity
のレスポンスステータスは、SDK は初期化されていますが、現在の identity がまだ生成されていないことを示します。
これは、デバイスで初めて SDK が使用される場合に発生します。この場合、identity を生成する必要があります。