開始する

Google User Messaging Platform(UMP)SDK は、プライバシーに関するユーザー設定の管理に役立つプライバシーとメッセージのツールです。詳しくは、プライバシーとメッセージについてをご覧ください。

メッセージ タイプを作成する

AdMob アカウントの [プライバシーとメッセージ] タブで、利用可能なユーザー向けメッセージの種類のいずれかを使用してユーザー向けメッセージを作成します。UMP SDK は、プロジェクトで設定された AdMob アプリケーション ID から作成されたプライバシー メッセージを表示しようとします。

詳しくは、プライバシーとメッセージについてをご覧ください。

SDK をインポートする

CocoaPods(推奨)

iOS プロジェクトに SDK を簡単にインポートするには、CocoaPods を使う方法がおすすめです。プロジェクトの Podfile を開き、アプリのターゲットに次の行を追加します。

pod 'GoogleUserMessagingPlatform'

次のコマンドを実行します。

pod install --repo-update

CocoaPods を初めてご利用の場合は、CocoaPods の使用についての記事で Podfile の作成方法と使用方法をご確認ください。

Swift Package Manager

UMP SDK は Swift Package Manager もサポートしています。Swift パッケージをインポートする手順は次のとおりです。

  1. Xcode で File > Add Packages... を開き、UMP SDK の Swift パッケージをインストールします。

  2. 表示されたプロンプトで、UMP SDK Swift パッケージの GitHub リポジトリ(下記)を検索します。

    https://github.com/googleads/swift-package-manager-google-user-messaging-platform.git
    
  3. 使用する UMP SDK Swift パッケージのバージョンを選択します。新しいプロジェクトの場合は [Up to Next Major Version] を選択することをおすすめします。

Xcode はパッケージの依存関係を解決し、バックグラウンドでダウンロードします。パッケージの依存関係の追加について詳しくは、Apple の記事を参照してください。

手動ダウンロード

SDK をインポートする別の方法は、手動で行うことです。

SDK をダウンロード

次に、フレームワークを Xcode プロジェクトにドラッグし、[Copy items if needed] を選択します。

その後、次を使用して、必要なファイルにフレームワークを含めることができます。

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>

同意を得るには、次の手順を行います。

  1. 最新のユーザーの同意情報をリクエストします。
  2. 必要に応じて同意フォームを読み込んで提示します。

アプリの起動ごとに requestConsentInfoUpdate(with:completionHandler:) を使用して、ユーザーの同意情報の更新をリクエストする必要があります。このリクエストは、以下を確認します。

  • 同意が必要かどうか。たとえば、初めて同意が必要な場合や、以前の同意決定が期限切れになっている場合です。
  • プライバシー オプションのエントリ ポイントが必要かどうか。プライバシー メッセージによっては、ユーザーがプライバシー オプションをいつでも変更できるようにアプリで設定する必要があります。

必要に応じてプライバシー メッセージ フォームを読み込んで表示する

最新の同意ステータスを受け取ったら、 loadAndPresentIfRequired(from:) を呼び出して、ユーザーの同意を収集するために必要なフォームを読み込みます。読み込み後、フォームがすぐに表示されます。

次のコードは、ユーザーの最新の同意情報をリクエストする方法を示しています。必要に応じて、コードがプライバシー メッセージ フォームを読み込んで表示します。

Swift


// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
  requestConsentError in
  guard requestConsentError == nil else {
    return consentGatheringComplete(requestConsentError)
  }

  Task { @MainActor in
    do {
      try await UMPConsentForm.loadAndPresentIfRequired(from: viewController)
      // Consent has been gathered.
      consentGatheringComplete(nil)
    } catch {
      consentGatheringComplete(error)
    }
  }
}

SwiftUI


// Requesting an update to consent information should be called on every app launch.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
  requestConsentError in
  guard requestConsentError == nil else {
    return consentGatheringComplete(requestConsentError)
  }

  Task { @MainActor in
    do {
      try await UMPConsentForm.loadAndPresentIfRequired(from: nil)
      // Consent has been gathered.
      consentGatheringComplete(nil)
    } catch {
      consentGatheringComplete(error)
    }
  }
}

Objective-C


// Requesting an update to consent information should be called on every app launch.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable requestConsentError) {
                           if (requestConsentError) {
                             consentGatheringComplete(requestConsentError);
                           } else {
                             [UMPConsentForm
                                 loadAndPresentIfRequiredFromViewController:viewController
                                                          completionHandler:^(
                                                              NSError
                                                                  *_Nullable loadAndPresentError) {
                                                            // Consent has been gathered.
                                                            consentGatheringComplete(
                                                                loadAndPresentError);
                                                          }];
                           }
                         }];

プライバシー オプション

一部のプライバシー メッセージ フォームは、パブリッシャーがレンダリングしたプライバシー オプションのエントリ ポイントから表示され、ユーザーはプライバシー オプションをいつでも管理できます。プライバシー オプションのエントリ ポイントでユーザーに表示されるメッセージの詳細については、使用可能なユーザー メッセージの種類をご覧ください。

プライバシー オプションのエントリ ポイントが必要かどうかを確認する

requestConsentInfoUpdate(with:completionHandler:) を呼び出した後、 UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus をチェックして、アプリにプライバシー オプションのエントリ ポイントが必要かどうかを判断します。

Swift


var isPrivacyOptionsRequired: Bool {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
}

Objective-C


- (BOOL)isPrivacyOptionsRequired {
  return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus ==
         UMPPrivacyOptionsRequirementStatusRequired;
}

アプリに表示要素を追加する

プライバシー エントリ ポイントが必要な場合は、プライバシー オプション フォームを表示する、表示可能で操作可能な UI 要素をアプリに追加します。プライバシー エントリ ポイントが不要な場合は、UI 要素を非表示にして操作できないように構成します。

Swift


self.privacySettingsButton.isEnabled =
  GoogleMobileAdsConsentManager.shared.isPrivacyOptionsRequired

Objective-C


strongSelf.privacySettingsButton.enabled =
    GoogleMobileAdsConsentManager.sharedInstance
        .isPrivacyOptionsRequired;

プライバシー オプションのフォームを表示する

ユーザーが要素を操作したときに、プライバシー オプション フォームを表示します。

Swift


try await UMPConsentForm.presentPrivacyOptionsForm(from: viewController)

SwiftUI


try await UMPConsentForm.presentPrivacyOptionsForm(from: nil)

Objective-C


[UMPConsentForm presentPrivacyOptionsFormFromViewController:viewController
                                          completionHandler:completionHandler];

広告をリクエスト

アプリで広告をリクエストする前に、 UMPConsentInformation.sharedInstance.canRequestAds を使用してユーザーの同意を得ているかどうかを確認します。同意を得る際に確認する必要がある項目は 2 つあります。

  • 現在のセッションで同意が得られた場合。
  • requestConsentInfoUpdate(with:completionHandler:) を呼び出した直後。前回のセッションで同意を得ている可能性があります。レイテンシに関するベスト プラクティスとして、コールバックの完了を待たずに、アプリの起動後できるだけ早く広告の読み込みを開始することをおすすめします。

同意取得プロセス中にエラーが発生した場合でも、広告をリクエストできるかどうかを確認する必要があります。UMP SDK は、前のセッションの同意ステータスを使用します。

次のコードは、同意取得プロセス中に広告をリクエストできるかどうかを確認します。

Swift


GoogleMobileAdsConsentManager.shared.gatherConsent(from: self) { [weak self] consentError in
  guard let self else { return }

  if let consentError {
    // Consent gathering failed.
    print("Error: \(consentError.localizedDescription)")
  }

  if GoogleMobileAdsConsentManager.shared.canRequestAds {
    self.startGoogleMobileAdsSDK()
  }
  // ...
}

// This sample attempts to load ads using consent obtained in the previous session.
if GoogleMobileAdsConsentManager.shared.canRequestAds {
  startGoogleMobileAdsSDK()
}

SwiftUI


GoogleMobileAdsConsentManager.shared.gatherConsent { consentError in
  if let consentError {
    // Consent gathering failed.
    print("Error: \(consentError.localizedDescription)")
  }

  // Check if you can request ads in `startGoogleMobileAdsSDK` before initializing the
  // Google Mobile Ads SDK.
  GoogleMobileAdsConsentManager.shared.startGoogleMobileAdsSDK()
  // ...
}

// This sample attempts to load ads using consent obtained in the previous session.
GoogleMobileAdsConsentManager.shared.startGoogleMobileAdsSDK()

Objective-C


[GoogleMobileAdsConsentManager.sharedInstance
    gatherConsentFromConsentPresentationViewController:self
                              consentGatheringComplete:^(NSError *_Nullable consentError) {
                                if (consentError) {
                                  // Consent gathering failed.
                                  NSLog(@"Error: %@", consentError.localizedDescription);
                                }

                                __strong __typeof__(self) strongSelf = weakSelf;
                                if (!strongSelf) {
                                  return;
                                }

                                if (GoogleMobileAdsConsentManager.sharedInstance.canRequestAds) {
                                  [strongSelf startGoogleMobileAdsSDK];
                                }
                                // ...
                              }];

// This sample attempts to load ads using consent obtained in the previous session.
if (GoogleMobileAdsConsentManager.sharedInstance.canRequestAds) {
  [self startGoogleMobileAdsSDK];
}

次のコードは、ユーザーの同意を取得した後に Google Mobile Ads SDK を設定します。

Swift


private func startGoogleMobileAdsSDK() {
  DispatchQueue.main.async {
    guard !self.isMobileAdsStartCalled else { return }

    self.isMobileAdsStartCalled = true

    // Initialize the Google Mobile Ads SDK.
    GADMobileAds.sharedInstance().start()

    if self.isViewDidAppearCalled {
      self.loadBannerAd()
    }
  }
}

SwiftUI


/// Method to initialize the Google Mobile Ads SDK. The SDK should only be initialized once.
func startGoogleMobileAdsSDK() {
  guard canRequestAds, !isMobileAdsStartCalled else { return }

  isMobileAdsStartCalled = true

  // Initialize the Google Mobile Ads SDK.
  GADMobileAds.sharedInstance().start()
}

Objective-C


- (void)startGoogleMobileAdsSDK {
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    // Initialize the Google Mobile Ads SDK.
    [GADMobileAds.sharedInstance startWithCompletionHandler:nil];
    [self loadBannerAd];
  });
}

テスト

開発中のアプリで統合をテストする場合は、次の手順に沿ってプログラムでテストデバイスを登録します。アプリをリリースする前に、テストデバイス ID を設定するコードを必ず削除してください。

  1. requestConsentInfoUpdate(with:completionHandler:)までお電話ください。
  2. ログ出力で次のようなメッセージを確認します。ここには、デバイス ID とテストデバイスとしてデバイスを追加する方法が示されています。

    <UMP SDK>To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. テストデバイスの ID をクリップボードにコピーします。

  4. 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 では、geography を使用して、デバイスが EEA や英国などのさまざまな地域にあるかのようにアプリの動作をテストできます。デバッグ設定はテスト用デバイスでのみ機能します。

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];

GitHub の例

このページで説明する UMP SDK 統合の完全な例については、以下をご覧ください。