शुरू करें

Google की ईयू उपयोगकर्ता की सहमति से जुड़ी नीति के तहत, आपको यूके के साथ-साथ, यूरोपियन इकनॉमिक एरिया (ईईए) में अपने उपयोगकर्ताओं को कुछ जानकारी देनी होगी. साथ ही, जहां कानूनी तौर पर ज़रूरी है वहां कुकी या अन्य लोकल स्टोरेज का इस्तेमाल करने और विज्ञापन दिखाने के लिए निजी डेटा (जैसे कि AdID) का इस्तेमाल करने के लिए उनकी सहमति लेनी होगी. इस नीति में, ईयू के ई-निजता निर्देश और जनरल डेटा प्रोटेक्शन रेगुलेशन (जीडीपीआर) की ज़रूरी शर्तों के बारे में बताया गया है.

Google, User Messaging Platform (UMP) SDK टूल की सुविधा देता है, ताकि इस नीति के तहत अपनी ज़िम्मेदारी पूरी करने में पब्लिशर की मदद की जा सके. UMP SDK को IAB के नए मानकों के हिसाब से अपडेट किया गया है. ये सभी कॉन्फ़िगरेशन अब निजता और मैसेज सेवा में आसानी से मैनेज किए जा सकते हैं. AdMob

ज़रूरी शर्तें

मैसेज का टाइप बनाएं

किसी एक उपयोगकर्ता मैसेज के टाइप की मदद से उपयोगकर्ता मैसेज बनाएं अपने AdMob खाते के निजता और मैसेज सेवा टैब में जाएं. UMP SDK आपके प्रोजेक्ट में सेट किए गए AdMob ऐप्लिकेशन आईडी से बनाए गए उपयोगकर्ता मैसेज को दिखाने की कोशिश करता है. अगर आपके ऐप्लिकेशन के लिए कोई मैसेज कॉन्फ़िगर नहीं किया गया है, तो SDK टूल एक गड़बड़ी दिखाएगा.

ज़्यादा जानकारी के लिए, निजता और मैसेज सेवा के बारे में देखें.

आपको हर ऐप्लिकेशन लॉन्च के समय, requestConsentInfoUpdate()का इस्तेमाल करके उपयोगकर्ता की सहमति से जुड़ी जानकारी को अपडेट करने का अनुरोध करना चाहिए. इससे यह तय होता है कि आपके उपयोगकर्ता को सहमति देने की ज़रूरत है या नहीं, अगर उसने अब तक ऐसा नहीं किया है या उसकी सहमति की समयसीमा खत्म हो गई है.

ऐप्लिकेशन शुरू होने पर स्टेटस देखने का तरीका, यहां दिए गए उदाहरण में बताया गया है:

@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update for the consent information.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      // TODO: Load and present the consent form.
    },
    (FormError error) {
      // Handle the error.
    },
  );
}

अगर ज़रूरी हो, तो सहमति फ़ॉर्म लोड करें और दिखाएं

सहमति का अप-टू-डेट स्टेटस मिलने के बाद, सहमति फ़ॉर्म लोड करने के लिए,ConsentForm क्लास मेंloadAndShowConsentFormIfRequired() को कॉल करें. अगर सहमति की स्थिति ज़रूरी है, तो SDK टूल एक फ़ॉर्म लोड करता है और तुरंत उसे दिए गए में से दिखाता है. फ़ॉर्म खारिज होने के बाद, callback कॉल किया जाता है. अगर सहमति ज़रूरी नहीं है, तो callback . इसे तुरंत कॉल कर दिया जाता है.

@override
void initState() {
  super.initState();

  // Create a ConsentRequestParameters object.
  final params = ConsentRequestParameters();

  // Request an update for the consent information.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
        if (loadAndShowError != null) {
          // Consent gathering failed.
        }

        // Consent has been gathered.
      });
    },
    (FormError error) {
      // Handle the error.
    },
  );
}

अगर उपयोगकर्ता के चुने गए या फ़ॉर्म को खारिज करने के बाद, आपको कोई कार्रवाई करनी है, तो उस लॉजिक को अपने फ़ॉर्म के callback में डालें.

विज्ञापन जोड़ने का अनुरोध करें

अपने ऐप्लिकेशन में विज्ञापनों का अनुरोध करने से पहले, देख लें कि आपने canRequestAds()का इस्तेमाल करके, उपयोगकर्ता से सहमति ली है या नहीं. सहमति इकट्ठा करते समय, इन दो बातों पर ध्यान देना ज़रूरी है:

  1. मौजूदा सेशन के लिए सहमति लेने के बाद.
  2. आपके कॉल करने के तुरंत बाद requestConsentInfoUpdate(). ऐसा हो सकता है कि सहमति पिछले सेशन में ली गई हो. इंतज़ार का समय सबसे सही तरीका यह है कि हमारा सुझाव है कि कॉलबैक पूरा होने का इंतज़ार न करें, ताकि ऐप्लिकेशन लॉन्च होने के बाद, जितनी जल्दी हो सके विज्ञापन लोड हो सकें.

अगर सहमति इकट्ठा करने की प्रोसेस के दौरान कोई गड़बड़ी होती है, तब भी आपको विज्ञापनों का अनुरोध करने की कोशिश करनी चाहिए. UMP SDK टूल, पिछले सेशन की सहमति की स्थिति का इस्तेमाल करता है.

class AppExampleState extends State<AppExample> {

  // Use a bool to initialize the Mobile Ads SDK and load ads once.
  var _isMobileAdsInitializeCalled = false;

  @override
  void initState() {
    super.initState();

    // Create a ConsentRequestParameters object.
    final params = ConsentRequestParameters();

    // Request an update for the consent information.
    ConsentInformation.instance.requestConsentInfoUpdate(
      params,
      () async {
        ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
          if (loadAndShowError != null) {
            // Consent gathering failed.
          }

          // Consent has been gathered.
          _initializeMobileAdsSDK();
        });
      },
      (FormError error) {
        // Handle the error.
      },
    );

    // Check if you can initialize the Mobile Ads SDK in parallel while
    // checking for new consent information. Consent obtained in the
    // previous session can be used to request ads.
    _initializeMobileAdsSDK();
  }

  void _initializeMobileAdsSDK() async {
    if (_isMobileAdsInitializeCalled) {
      return;
    }

    // Initialize the Mobile Ads SDK if the SDK has gathered consent aligned with
    // the app's configured messages.
    var canRequestAds = await ConsentInformation.instance.canRequestAds();
    if (canRequestAds) {
      setState(() {
        _isMobileAdsInitializeCalled = true;
      });

      // Initialize the Mobile Ads SDK.
      MobileAds.instance.initialize();

      // TODO: Request an ad.
    }
  }
}

निजता के विकल्प

कुछ सहमति फ़ॉर्म के लिए, उपयोगकर्ता को किसी भी समय अपनी सहमति में बदलाव करना होता है. अगर ज़रूरी हो, तो निजता के विकल्प वाले बटन को लागू करने के लिए, यहां दिया गया तरीका अपनाएं.

इसके लिए:

  1. अपने ऐप्लिकेशन के सेटिंग पेज पर एक बटन जैसा यूज़र इंटरफ़ेस (यूआई) एलिमेंट लागू करें, जो निजता के विकल्पों वाले फ़ॉर्म को ट्रिगर कर सके.
  2. loadAndShowConsentFormIfRequired() पूरा होने के बाद,getPrivacyOptionsRequirementStatus() देखें कि आपको वह यूज़र इंटरफ़ेस (यूआई) एलिमेंट दिखाना है या नहीं जो निजता विकल्प वाला फ़ॉर्म दिखा सकता है.
  3. जब कोई उपयोगकर्ता आपके यूज़र इंटरफ़ेस (यूआई) एलिमेंट से इंटरैक्ट करता है, तो फ़ॉर्म दिखाने के लिएshowPrivacyOptionsForm() को कॉल करें, ताकि उपयोगकर्ता जब चाहे अपनी निजता सेटिंग को अपडेट कर सके.
class AppExampleState extends State<AppExample> {
  static const _privacySettingsText = 'Privacy Settings';

  // Use a bool to initialize the Mobile Ads SDK and load ads once.
  var _isMobileAdsInitializeCalled = false;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'App Example',
      home: Scaffold(
          appBar: AppBar(
            title: const Text('App Example'),
            actions: _isMobileAdsSDKInitialized
                // Regenerate the options menu to include a privacy setting.
                ? _privacySettingsAppBarAction()
                : null
          ),
          body: // ...
      ),
    );
  }

  List<Widget> _privacySettingsAppBarAction() {
    return <Widget>[
      FutureBuilder(
          future: ConsentInformation.instance.isPrivacyOptionsRequired(),
          builder: (context, snapshot) {
            final bool visibility = snapshot.data ?? false;
            return Visibility(
                visible: visibility,
                child: PopupMenuButton<String>(
                  onSelected: (String result) {
                    if (result == _privacySettingsText) {
                      ConsentForm.showPrivacyOptionsForm((formError) {
                        if (formError != null) {
                          debugPrint(
                              "${formError.errorCode}: ${formError.message}");
                        }
                      });
                    }
                  },
                  itemBuilder: (BuildContext context) =>
                      <PopupMenuEntry<String>>[
                    const PopupMenuItem<String>(
                        value: _privacySettingsText,
                        child: Text(_privacySettingsText))
                  ],
                ));
          })
    ];
  }
}

टेस्ट करना

अगर आपको अपने ऐप्लिकेशन में इंटिग्रेशन की जांच करनी है, तो अपने टेस्ट डिवाइस को प्रोग्राम के हिसाब से रजिस्टर करें. इसके लिए, यह तरीका अपनाएं. अपने ऐप्लिकेशन को रिलीज़ करने से पहले, इन टेस्ट डिवाइस आईडी को सेट करने वाले कोड को ज़रूर हटा दें.

  1. requestConsentInfoUpdate()पर कॉल करें.
  2. नीचे दिए गए उदाहरण से मिलते-जुलते मैसेज के लिए लॉग आउटपुट देखें. इसमें आपका डिवाइस आईडी और उसे टेस्ट डिवाइस के तौर पर जोड़ने का तरीका बताया गया है:

    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. अपने टेस्ट डिवाइस आईडी को क्लिपबोर्ड पर कॉपी करें.

  4. अपने कोड में बदलाव करें, ताकि उसे कॉल ConsentDebugSettings.testIdentifiers पर सेट किया जा सके और उसे टेस्ट डिवाइस आईडी की सूची को पास किया जा सके. ConsentDebugSettings.testIdentifiers

    ConsentDebugSettings debugSettings = ConsentDebugSettings(
      testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
    );
    
    ConsentRequestParameters params =
        ConsentRequestParameters(consentDebugSettings: debugSettings);
    
    ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
      // ...
    };
    

जगह के हिसाब से कॉन्टेंट बनाना

UMP SDK टूल की मदद से, ऐप्लिकेशन के काम करने का तरीका टेस्ट किया जा सकता है. इससे यह समझने में मदद मिलती है कि the DebugGeography field on ConsentDebugSettingsका इस्तेमाल करके, डिवाइस ईईए या यूके में मौजूद है या नहीं. ध्यान दें कि डीबग सेटिंग सिर्फ़ टेस्ट डिवाइसों पर काम करती हैं.

ConsentDebugSettings debugSettings = ConsentDebugSettings(
  debugGeography: DebugGeography.debugGeographyEea,
  testIdentifiers: ["TEST-DEVICE-HASHED-ID"],
);

ConsentRequestParameters params =
    ConsentRequestParameters(consentDebugSettings: debugSettings);

ConsentInformation.instance.requestConsentInfoUpdate(params, () async {
  // ...
};

UMP SDK टूल से अपने ऐप्लिकेशन की जांच करते समय, SDK टूल की स्थिति को रीसेट करने से आपको मदद मिल सकती है. इससे, उपयोगकर्ता के पहली बार इंस्टॉल करने के अनुभव को सिम्युलेट किया जा सकता है. यह काम करने के लिए, SDK टूल reset() तरीका उपलब्ध कराता है.

ConsentInformation.instance.reset();