瞭解詳情

Google User Messaging Platform (UMP) SDK 是隱私權和訊息工具,可協助您管理隱私權選項。詳情請參閱「隱私權與訊息簡介」一文。

建立訊息類型

在 Ad Manager 帳戶的「隱私權與訊息」分頁中,使用任一可用的使用者訊息類型建立使用者訊息。UMP SDK 會嘗試顯示從專案中 Ad Manager 應用程式 ID 設定建立的隱私權訊息。

詳情請參閱「隱私權與訊息簡介」一文。

如要收集同意聲明,請完成下列步驟:

  1. 要求取得最新的使用者同意資訊。
  2. 視需要載入並呈現同意聲明表單。

您應在每次啟動應用程式時,使用 Update() 要求更新使用者的同意聲明資訊。這項要求會檢查下列項目:

  • 是否需要取得同意聲明。例如使用者首次需要取得同意聲明,或先前的同意聲明決定已過期。
  • 是否需提供隱私權選項進入點。部分隱私權訊息要求應用程式允許使用者隨時修改隱私權選項。

視需要載入並顯示隱私權訊息表單

收到最新的同意聲明狀態後,請呼叫 LoadAndShowConsentFormIfRequired() 以載入收集使用者同意聲明所需的任何表單。載入後,表單會立即顯示。

下列程式碼示範如何要求使用者最新的同意聲明資訊。如有需要,程式碼會載入並顯示隱私權訊息表單:

void Start()
{
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters();

    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}

void OnConsentInfoUpdated(FormError consentError)
{
    if (consentError != null)
    {
        // Handle the error.
        UnityEngine.Debug.LogError(consentError);
        return;
    }

    // If the error is null, the consent information state was updated.
    // You are now ready to check if a form is available.
    ConsentForm.LoadAndShowConsentFormIfRequired((FormError formError) =>
    {
        if (formError != null)
        {
            // Consent gathering failed.
            UnityEngine.Debug.LogError(consentError);
            return;
        }

        // Consent has been gathered.
    });
}

隱私權選項

部分隱私權訊息表單會透過發布商算繪的隱私權選項進入點顯示,讓使用者隨時管理隱私權選項。如要進一步瞭解使用者在隱私權選項入口處看到的訊息,請參閱「可用的使用者訊息類型」。

如要實作隱私權選項進入點,請完成下列步驟:

  1. 呼叫 Update() 後,請檢查 PrivacyOptionsRequirementStatus,判斷是否需要隱私權選項進入點。
  2. 如有需要,請在應用程式中新增可見且可互動的 UI 元素,做為隱私權選項進入點。如果不需要隱私權進入點,請將 UI 元素設為不可見且無法互動。
  3. 使用 ShowPrivacyOptionsForm() 顯示隱私權選項表單。

以下程式碼範例說明這些步驟:

[SerializeField, Tooltip("Button to show the privacy options form.")]
private Button _privacyButton;

private void Start()
{
  // Enable the privacy settings button.
  if (_privacyButton != null)
  {
      _privacyButton.onClick.AddListener(UpdatePrivacyButton);
      // Disable the privacy settings button by default.
      _privacyButton.interactable = false;
  }
}

/// <summary>
/// Shows the privacy options form to the user.
/// </summary>
public void ShowPrivacyOptionsForm()
{
    Debug.Log("Showing privacy options form.");

    ConsentForm.ShowPrivacyOptionsForm((FormError showError) =>
    {
        if (showError != null)
        {
            Debug.LogError("Error showing privacy options form with error: " + showError.Message);
        }
        // Enable the privacy settings button.
        UpdatePrivacyButton();
    });
}

/// <summary>
/// Updates the privacy buttons visual state based on the consent information.
/// </summary>
void UpdatePrivacyButton()
{
    if (_privacyButton != null)
    {
        _privacyButton.interactable =
            ConsentInformation.PrivacyOptionsRequirementStatus ==
                PrivacyOptionsRequirementStatus.Required;
    }
}

請求廣告

在應用程式中要求廣告前,請確認您是否已使用 CanRequestAds() 取得使用者的同意。收集同意聲明時,需要確認兩個地方:

  • 在目前的工作階段中取得同意聲明後。
  • 呼叫 Update() 後立即執行。您可能在先前的會話中已同意授權。延遲時間最佳做法是,建議您不要等待回呼完成,這樣就能在應用程式啟動後盡快開始載入廣告。

如果同意聲明收集過程中發生錯誤,您仍應檢查是否可以要求廣告。UMP SDK 會使用上一個工作階段的同意聲明狀態。

void Start()
{
    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters();

    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}

void OnConsentInfoUpdated(FormError consentError)
{
    if (consentError != null)
    {
        // Handle the error.
        UnityEngine.Debug.LogError(consentError);
        return;
    }

    // If the error is null, the consent information state was updated.
    // You are now ready to check if a form is available.
    ConsentForm.LoadAndShowConsentFormIfRequired((FormError formError) =>
    {
        if (formError != null)
        {
            // Consent gathering failed.
            UnityEngine.Debug.LogError(consentError);
            return;
        }

        // Consent has been gathered.
        if (ConsentInformation.CanRequestAds())
        {
            MobileAds.Initialize((InitializationStatus initstatus) =>
            {
              // TODO: Request an ad.
            });
        }
    });
    
}

測試

如果您想在開發時測試應用程式中的整合功能,請按照下列步驟以程式輔助方式註冊測試裝置。請務必在發布應用程式前,移除設定這些測試裝置 ID 的程式碼。

  1. 歡迎致電Update()
  2. 查看記錄輸出中是否有類似以下範例的訊息,這些訊息顯示您的裝置 ID 以及如何將其新增為測試裝置:

    Android

    Use new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231")
    to set this as a debug device.
    

    iOS

    <UMP SDK>To enable debug mode for this device,
    set: UMPDebugSettings.testDeviceIdentifiers = @[2077ef9a63d2b398840261c8221a0c9b]
    
  3. 將測試裝置 ID 複製到剪貼簿。

  4. 修改程式碼以呼叫 DebugGeography.TestDeviceHashedIds,並傳入測試裝置 ID 清單。

    void Start()
    {
        var debugSettings = new ConsentDebugSettings
        {
            TestDeviceHashedIds =
            new List<string>
            {
                "TEST-DEVICE-HASHED-ID"
            }
        };
    
        // Create a ConsentRequestParameters object.
        ConsentRequestParameters request = new ConsentRequestParameters
        {
            ConsentDebugSettings = debugSettings,
        };
    
        // Check the current consent information status.
        ConsentInformation.Update(request, OnConsentInfoUpdated);
    }
    

強制指定地理區域

UMP SDK 提供一種方法,可使用 DebugGeography 測試應用程式的行為,就像是該裝置位於歐洲經濟區或英國一般。請注意,偵錯設定僅適用於測試裝置。

void Start()
{
    var debugSettings = new ConsentDebugSettings
    {
        // Geography appears as in EEA for debug devices.
        DebugGeography = DebugGeography.EEA,
        TestDeviceHashedIds = new List<string>
        {
            "TEST-DEVICE-HASHED-ID"
        }
    };

    // Create a ConsentRequestParameters object.
    ConsentRequestParameters request = new ConsentRequestParameters
    {
        ConsentDebugSettings = debugSettings,
    };

    // Check the current consent information status.
    ConsentInformation.Update(request, OnConsentInfoUpdated);
}

使用 UMP SDK 測試應用程式時,建議您重設 SDK 狀態,以便模擬使用者的首次安裝體驗。SDK 提供 Reset() 方法來執行這項操作。

ConsentInformation.Reset();

GitHub 上的範例

請參閱此頁面所述 UMP SDK 整合功能的完整範例,瞭解 HelloWorld 的使用方式。