البدء

حزمة تطوير البرامج (SDK) لمنصّة Google لمراسلة المستخدمين هي أداة خصوصية ومراسلة بهدف مساعدتك في إدارة خيارات الخصوصية. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة لمحة عن "الخصوصية والمراسلة".

إنشاء نوع رسالة

أنشئ رسائل مستخدمين باستخدام أحد أنواع رسائل المستخدمين المتاحة ضمن علامة التبويب الخصوصية والمراسلة في حسابك على AdMob. تحاول حزمة تطوير البرامج لمنصّة UMP عرض رسالة خصوصية تم إنشاؤها من معرّف تطبيق AdMob الذي تم ضبطه في مشروعك.

لمزيد من التفاصيل، يُرجى الاطّلاع على لمحة عن الخصوصية والرسائل.

عليك طلب تعديل معلومات موافقة المستخدم عند كل بدء استخدام للتطبيق باستخدام requestConsentInfoUpdate(). يتحقّق هذا الطلب مما يلي:

  • ما إذا كانت الموافقة مطلوبة على سبيل المثال، تكون الموافقة مطلوبة للمرة الأولى، أو تكون صلاحية قرار الموافقة السابق قد انتهت.
  • ما إذا كانت نقطة دخول خيارات الخصوصية مطلوبة تتطلب بعض رسائل الخصوصية من التطبيقات السماح للمستخدمين بتعديل خيارات الخصوصية في أي وقت.
@override
void initState() {
  super.initState();

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

  // Request an update to consent information on every app launch.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      // Called when consent information is successfully updated.
    },
    (FormError error) {
      // Called when there's an error updating consent information.
    },
  );
}

تحميل نموذج رسالة الخصوصية وعرضه

بعد تلقّي أحدث حالة موافقة، اتصل loadAndShowConsentFormIfRequired() لتحميل أي نماذج مطلوبة لجمع موافقة المستخدِم. بعد التحميل، تظهر النماذج على الفور.

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

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

  // Request an update to consent information on every app launch.
  ConsentInformation.instance.requestConsentInfoUpdate(
    params,
    () async {
      ConsentForm.loadAndShowConsentFormIfRequired((loadAndShowError) {
        if (loadAndShowError != null) {
          // Consent gathering failed.
        }

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

خيارات الخصوصية

يتم عرض بعض نماذج رسائل الخصوصية من نقطة دخول خيارات الخصوصية التي يعرضها الناشر، ما يتيح للمستخدمين إدارة خيارات الخصوصية في أي وقت. لمزيد من المعلومات عن الرسالة التي تظهر للمستخدمين عند نقطة دخول خيارات الخصوصية، اطّلِع على أنواع رسائل المستخدمين المتاحة.

التحقّق ممّا إذا كانت نقطة دخول خيارات الخصوصية مطلوبة

بعد استدعاء requestConsentInfoUpdate()، تحقّق من getPrivacyOptionsRequirementStatus() لتحديد ما إذا كانت نقطة دخول خيارات الخصوصية مطلوبة لتطبيقك. إذا كانت نقطة دخول مطلوبة، أضِف عنصر واجهة مستخدم مرئيًا وقابلاً للتفاعل إلى تطبيقك يعرض نموذج خيارات الخصوصية. إذا لم تكن نقطة دخول الخصوصية مطلوبة، يمكنك ضبط عنصر واجهة المستخدم بحيث لا يكون مرئيًا ولا يمكن التفاعل معه.

/// Helper variable to determine if the privacy options entry point is required.
Future<bool> isPrivacyOptionsRequired() async {
  return await ConsentInformation.instance
      .getPrivacyOptionsRequirementStatus() ==
      PrivacyOptionsRequirementStatus.required;
}

للاطّلاع على القائمة الكاملة لحالات متطلبات خيارات الخصوصية، يُرجى الاطّلاع على PrivacyOptionsRequirementStatus.

عرض نموذج خيارات الخصوصية

عندما يتفاعل المستخدم مع العنصر، اعرض نموذج خيارات الخصوصية:

ConsentForm.showPrivacyOptionsForm((formError) {
  if (formError != null) {
    debugPrint("${formError.errorCode}: ${formError.message}");
  }
});

طلب الإعلانات بعد الحصول على موافقة المستخدم

قبل طلب عرض الإعلانات، استخدِم canRequestAds() للتحقّق مما إذا كان قد تم الحصول على موافقة من المستخدِم:

await ConsentInformation.instance.canRequestAds()

في ما يلي الأماكن التالية التي يمكنك التحقّق منها لمعرفة ما إذا كان بإمكانك طلب عرض الإعلانات أثناء جمع الموافقة:

  • بعد أن تجمع حزمة تطوير البرامج (SDK) لمنصة UMP الموافقة في الجلسة الحالية.
  • بعد الاتصال برقم requestConsentInfoUpdate() مباشرةً قد تكون "حزمة تطوير البرامج (SDK) لمنصّة User Messaging Platform" قد حصلت على الموافقة في جلسة التطبيق السابقة.
.

إذا حدث خطأ أثناء عملية جمع الموافقة، تحقّق ممّا إذا كان بإمكانك طلب عرض الإعلانات. تستخدِم حزمة تطوير البرامج (SDK) لمنصّة UMP حالة الموافقة من جلسة التطبيق السابقة.

منع تكرار عمل طلبات الإعلانات

عند التحقّق من canRequestAds() بعد الحصول على الموافقة وبعد استدعاء requestConsentInfoUpdate()، تأكَّد من أنّ منطقك يمنع طلبات الإعلانات المتكرّرة التي قد تؤدي إلى عرض القيمة true في كلا التحقّقين. على سبيل المثال، باستخدام متغيّر boolean

الاختبار

إذا كنت تريد اختبار عملية الدمج في تطبيقك أثناء تطويره، اتّبِع هذه الخطوات لتسجيل جهازك التجريبي آليًا. احرص على إزالة الرمز البرمجي الذي يضبط أرقام تعريف الأجهزة الاختبارية هذه قبل إصدار تطبيقك.

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

فرض موقع جغرافي

توفّر حزمة تطوير البرامج (SDK) لمنصّة UMP طريقة لاختبار سلوك تطبيقك كما لو كان الجهاز يقع في مناطق مختلفة، مثل المنطقة الاقتصادية الأوروبية أو المملكة المتحدة، باستخدام debugGeography. يُرجى العِلم أنّ إعدادات تصحيح الأخطاء لا تعمل إلا على الأجهزة الاختبارية.

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

ConsentRequestParameters params =
    ConsentRequestParameters(consentDebugSettings: debugSettings);

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

عند اختبار تطبيقك باستخدام حزمة تطوير البرامج (SDK) لمنصّة UMP، قد يكون من المفيد إعادة ضبط حالة حزمة SDK حتى تتمكّن من محاكاة تجربة التثبيت الأولى للمستخدم. توفّر حزمة SDK طريقة reset() لإجراء ذلك.

ConsentInformation.instance.reset();

أمثلة على GitHub

يمكنك الاطّلاع على مثال كامل لدمج حزمة تطوير البرامج (SDK) لـ UMP في هذه الصفحة ضمن أمثلة Flutter.