Google User Messaging Platform(UMP)SDK は、プライバシーに関するユーザー設定の管理に役立つプライバシーとメッセージのツールです。詳細については、次をご覧ください: プライバシーと説明します。
メッセージ タイプを作成する
ユーザー メッセージは、いずれかの 利用可能なユーザー メッセージの種類 [プライバシーと[メッセージ] タブを AdMob あります。UMP SDK は、 アプリケーション ID から AdMob 作成されたプライバシー メッセージ 必要があります。
詳しくは、 プライバシーとメッセージについて
SDK をインポートする
CocoaPods(推奨)
SDK を iOS プロジェクトにインポートする最も簡単な方法は、 CocoaPods。プロジェクトの Podfile を開いて、アプリのターゲットに次の行を追加します。
pod 'GoogleUserMessagingPlatform'
そのうえで、次のコマンドを実行します。
pod install --repo-update
CocoaPods を初めて使用する場合は、CocoaPods の CocoaPods をご覧ください。 Podfile を作成して使用します。
Swift Package Manager
UMP SDK は Swift Package Manager もサポートしています。Swift パッケージをインポートする手順は次のとおりです。
Xcode で File > Add Packages... を開き、UMP SDK の Swift パッケージをインストールします。
表示されたプロンプトで、UMP SDK Swift Package GitHub を検索します。 リポジトリ:
https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
使用する UMP SDK Swift パッケージのバージョンを選択します。新規 [Up to Next Major Version] を使用することをおすすめします。
Xcode はパッケージの依存関係を解決し、パッケージにダウンロードします。 説明します。パッケージの依存関係を追加する方法について詳しくは、Apple の 記事をご覧ください。
手動ダウンロード
SDK をインポートするもう一つの方法は、手動で行う方法です。
次に、フレームワークを Xcode プロジェクトにドラッグし、[Copy 必要ありません。
その後、次を使用して、必要なファイルにフレームワークを含めることができます。
Swift
import UserMessagingPlatform
Objective-C
#include <UserMessagingPlatform/UserMessagingPlatform.h>
アプリケーション ID を追加する
アプリケーション ID は、
AdMob 管理画面:
ID を
Info.plist
これを次のコード スニペットに置き換えます。
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
同意情報のリクエスト
アプリごとにユーザーの同意情報の更新をリクエストする必要があります
requestConsentInfoUpdateWithParameters:completionHandler:
を使用して起動します。このリクエストは、
次のとおりです。
- 同意が必要かどうか。たとえば、 以前に同意に関する決定が期限切れになったためです。
- プライバシー オプションのエントリ ポイントが必要かどうか。一部のプライバシー メッセージ ユーザーがプライバシー オプションをいつでも変更できるようにすることを義務付けています。
次に、UIViewController
からステータスを確認する
viewDidLoad()
メソッドを使用します。
Swift
override func viewDidLoad() {
super.viewDidLoad()
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// TODO: Load and present the privacy message form.
}
}
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:nil
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
// TODO: Load and present the privacy message form.
}];
}
必要に応じてプライバシー メッセージ フォームを読み込んで表示する
最新の同意ステータスを受け取ったら、
loadAndPresentIfRequiredFromViewController:completionHandler:
: タスクに必要なすべてのフォームを読み込む
ユーザーの同意を取得します。読み込み後、すぐにフォームが表示されます。
Swift
override func viewDidLoad() {
super.viewDidLoad()
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
UMPConsentForm.loadAndPresentIfRequired(from: self) {
[weak self] loadAndPresentError in
guard let self else { return }
if let consentError = loadAndPresentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// Consent has been gathered.
}
}
}
Objective-C
- (void)viewDidLoad {
[super viewDidLoad];
__weak __typeof__(self) weakSelf = self;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:nil
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
[UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
completionHandler:^(NSError *loadAndPresentError) {
if (loadAndPresentError) {
// Consent gathering failed.
NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
return;
}
// Consent has been gathered.
}];
}];
}
ユーザーが選択または拒否した後になんらかのアクションを行う必要がある場合 そのロジックを completion handlerに配置します。 選択します。
プライバシー設定
一部のプライバシー メッセージ フォームは、パブリッシャーがレンダリングしたプライバシー オプションのエントリ ポイントから表示され、ユーザーはプライバシー オプションをいつでも管理できます。ユーザーに表示されるメッセージについて詳しくは、プライバシー オプションをご覧ください 詳細については、 利用可能なユーザー メッセージの種類。
プライバシー オプションのエントリ ポイントを実装する手順は次のとおりです。
-
UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus
をご確認ください。 - プライバシー オプションのエントリ ポイントが 表示可能で操作可能な UI 要素をアプリに追加します。
presentPrivacyOptionsFormFromViewController:completionHandler:
を使用してプライバシー オプション フォームをトリガーします。
次のコード例は、この手順を示しています。
Swift
@IBOutlet weak var privacySettingsButton: UIBarButtonItem!
var isPrivacyOptionsRequired: Bool {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}
override func viewDidLoad() {
// ...
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
// ...
UMPConsentForm.loadAndPresentIfRequired(from: self) {
//...
// Consent has been gathered.
// Show the button if privacy options are required.
self.privacySettingsButton.isEnabled = isPrivacyOptionsRequired
}
}
// ...
}
// Present the privacy options form when a user interacts with the
// privacy settings button.
@IBAction func privacySettingsTapped(_ sender: UIBarButtonItem) {
UMPConsentForm.presentPrivacyOptionsForm(from: self) {
[weak self] formError in
guard let self, let formError else { return }
// Handle the error.
}
}
Objective-C
@interface ViewController ()
@property(weak, nonatomic) IBOutlet UIBarButtonItem *privacySettingsButton;
@end
- (BOOL)isPrivacyOptionsRequired {
return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
UMPPrivacyOptionsRequirementStatusRequired;
}
- (void)viewDidLoad {
// ...
__weak __typeof__(self) weakSelf = self;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable requestConsentError) {
// ...
[UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
completionHandler:^(NSError *loadAndPresentError) {
// ...
// Consent has been gathered.
// Show the button if privacy options are required.
strongSelf.privacySettingsButton.enabled = isPrivacyOptionsRequired;
}];
}];
}
// Present the privacy options form when a user interacts with your
// privacy settings button.
- (IBAction)privacySettingsTapped:(UIBarButtonItem *)sender {
[UMPConsentForm presentPrivacyOptionsFormFromViewController:self
completionHandler:^(NSError *_Nullable formError) {
if (formError) {
// Handle the error.
}
}];
}
広告をリクエスト
アプリで広告をリクエストする前に、 UMPConsentInformation.sharedInstance.canRequestAds
を使用してユーザーの同意を得ているかどうかを確認します。2 つのモデル
同意を取得する際に確認する項目:
- 現在のセッションで同意が得られた後。
-
requestConsentInfoUpdateWithParameters:completionHandler:
を呼び出した直後。前回のセッションで同意を取得した可能性があります。レイテンシ ベスト プラクティスとして、Google Chat のメッセージ履歴は、 アプリのリリース後、できるだけ早く広告の読み込みを開始してください。
同意取得プロセス中にエラーが発生した場合でも、広告のリクエストを試行する必要があります。UMP SDK は、前のセッションの同意ステータスを使用します。
Swift
class ViewController: UIViewController {
// Use a boolean to initialize the Google Mobile Ads SDK and load ads once.
private var isMobileAdsStartCalled = false
override func viewDidLoad() {
super.viewDidLoad()
// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: nil) {
[weak self] requestConsentError in
guard let self else { return }
if let consentError = requestConsentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
UMPConsentForm.loadAndPresentIfRequired(from: self) {
[weak self] loadAndPresentError in
guard let self else { return }
if let consentError = loadAndPresentError {
// Consent gathering failed.
return print("Error: \(consentError.localizedDescription)")
}
// Consent has been gathered.
if UMPConsentInformation.sharedInstance.canRequestAds {
self.startGoogleMobileAdsSDK()
}
}
}
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if UMPConsentInformation.sharedInstance.canRequestAds {
startGoogleMobileAdsSDK()
}
}
private func startGoogleMobileAdsSDK() {
DispatchQueue.main.async {
guard !self.isMobileAdsStartCalled else { return }
self.isMobileAdsStartCalled = true
// Initialize the Google Mobile Ads SDK.
GADMobileAds.sharedInstance().start()
// TODO: Request an ad.
// GADInterstitialAd.load(...)
}
}
}
Objective-C
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
__weak __typeof__(self) weakSelf = self;
// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:nil
completionHandler:^(NSError *_Nullable requestConsentError) {
if (requestConsentError) {
// Consent gathering failed.
NSLog(@"Error: %@", requestConsentError.localizedDescription);
return;
}
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
[UMPConsentForm loadAndPresentIfRequiredFromViewController:strongSelf
completionHandler:^(NSError *loadAndPresentError) {
if (loadAndPresentError) {
// Consent gathering failed.
NSLog(@"Error: %@", loadAndPresentError.localizedDescription);
return;
}
// Consent has been gathered.
__strong __typeof__(self) strongSelf = weakSelf;
if (!strongSelf) {
return;
}
if (UMPConsentInformation.sharedInstance.canRequestAds) {
[strongSelf startGoogleMobileAdsSDK];
}
}];
}];
// Check if you can initialize the Google Mobile Ads SDK in parallel
// while checking for new consent information. Consent obtained in
// the previous session can be used to request ads.
if (UMPConsentInformation.sharedInstance.canRequestAds) {
[self startGoogleMobileAdsSDK];
}
}
- (void)startGoogleMobileAdsSDK {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];
// TODO: Request an ad.
// [GADInterstitialAd loadWithAdUnitID...];
});
}
テスト
開発中にアプリで統合をテストする場合は、 テストデバイスをプログラムで登録します。必ず テストデバイス ID を設定するコードを作成します。
-
requestConsentInfoUpdateWithParameters:completionHandler:
を呼び出します。 ログ出力で、次の例のようなメッセージを確認します。 に、デバイス ID と、テストデバイスとして追加する方法が表示されます。
<UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
テストデバイス ID をクリップボードにコピーします。
コードを変更して
UMPDebugSettings().testDeviceIdentifiers
して渡す テストデバイス ID のリスト。Swift
let parameters = UMPRequestParameters() let debugSettings = UMPDebugSettings() debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"] parameters.debugSettings = debugSettings // Include the UMPRequestParameters in your consent request. UMPConsentInformation.sharedInstance.requestConsentInfoUpdate( with: parameters, completionHandler: { error in ... })
Objective-C
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init]; UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init]; debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ]; parameters.debugSettings = debugSettings; // Include the UMPRequestParameters in your consent request. [UMPConsentInformation.sharedInstance requestConsentInfoUpdateWithParameters:parameters completionHandler:^(NSError *_Nullable error){ ... }];
地域を強制的に適用する
UMP SDK を使用すると、アプリが正常に動作しているかのようにアプリの動作をテストできます。
EEA または英国に居住している( the debugGeography
property of type UMPDebugGeography
on UMPDebugSettings
を使用)注:
デバッグ設定はテストデバイスでのみ機能します。
Swift
let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = .EEA
parameters.debugSettings = debugSettings
// Include the UMPRequestParameters in your consent request.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
with: parameters,
completionHandler: { error in
...
})
Objective-C
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
UMPDebugSettings *debugSettings = [[UMPDebugSettings alloc] init];
debugSettings.testDeviceIdentifiers = @[ @"TEST-DEVICE-HASHED-ID" ];
debugSettings.geography = UMPDebugGeographyEEA;
parameters.debugSettings = debugSettings;
// Include the UMPRequestParameters in your consent request.
[UMPConsentInformation.sharedInstance
requestConsentInfoUpdateWithParameters:parameters
completionHandler:^(NSError *_Nullable error){
...
}];
同意ステータスをリセットする
UMP SDK でアプリをテストする場合は、
SDK の状態を評価して、ユーザーが初めてインストールする際の動作をシミュレートできるようにします。
SDK には、これを行う reset
メソッドが用意されています。
Swift
UMPConsentInformation.sharedInstance.reset()
Objective-C
[UMPConsentInformation.sharedInstance reset];