دعم اللائحة العامة لحماية البيانات (IAB)

بموجب سياسة موافقة المستخدِم في الاتحاد الأوروبي المتّبعة في Google، يجب الإفصاح عن معلومات معيّنة للمستخدمين في المنطقة الاقتصادية الأوروبية (EEA) بالإضافة إلى المملكة المتّحدة والحصول على موافقتهم على استخدام ملفات تعريف الارتباط أو غير ذلك من البيانات المحفوظة على أجهزتهم المحلية، حيثما كان ذلك مطلوبًا بموجب القانون، وعلى استخدام البيانات الشخصية (مثل المعرّف الإعلاني) لعرض الإعلانات. تعكس هذه السياسة متطلبات "التوجيه الأوروبي بشأن الخصوصية الإلكترونية" و "اللائحة العامّة لحماية البيانات" (GDPR) في الاتّحاد الأوروبي.

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

المتطلبات الأساسية

تتطلّب "اللائحة العامة لحماية البيانات" إبطال الموافقة للسماح للمستخدمين بسحب خيارات الموافقة في أي وقت. اطّلِع على خيارات الخصوصية لتطبيق طريقة تتيح للمستخدمين سحب خيارات الموافقة.

للإشارة إلى ما إذا كان المستخدم دون سن الرشد، اضبط علامة tagForUnderAgeOfConsent (TFUA). عند ضبط TFUA على true، لن تطلب حزمة تطوير البرامج (SDK) لمنصّة UMP الموافقة من المستخدم. إذا كان تطبيقك يضمّ جمهورًا مختلطًا، اضبط هذه المَعلمة للمستخدمين الأطفال لضمان عدم طلب الموافقة.

يضبط المثال التالي TFUA على true في طلب موافقة UMP:

Swift

// Create a UMPRequestParameters object.
let parameters = UMPRequestParameters()
// Indicate the user is under age of consent.
parameters.tagForUnderAgeOfConsent = true

// Request an update for the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
  [weak self] requestConsentError in
  guard let self else { return }

  // ...
}

Objective-C

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Indicate the user is under age of consent.
parameters.tagForUnderAgeOfConsent = YES;

// Request an update for the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
        completionHandler:^(NSError *_Nullable requestConsentError) {
          // ...
        }];

الوساطة

اتّبِع الخطوات الواردة في مقالة إضافة شركاء إعلانات إلى رسائل طلب موافقة المستخدِمين بموجب "اللائحة العامة لحماية البيانات" (GDPR) المنشورة لإضافتهم إلى قائمة شركاء الإعلانات. وقد يؤدي عدم إجراء ذلك إلى عدم تمكّن الشركاء من عرض الإعلانات على تطبيقك.

قد يتوفّر لدى شركاء التوسّط أيضًا أدوات إضافية للمساعدة في الالتزام باللائحة العامة لحماية البيانات. اطّلِع على دليل دمج شريك معيّن للحصول على مزيد من التفاصيل.

بعد جمع موافقة المستخدم بموجب اللائحة العامة لحماية البيانات (GDPR)، يمكنك قراءة خيارات الموافقة من ملف التخزين المحلي باتّباع مواصفات الإصدار 2.0 من إطار الشفافية والموافقة. ويشير المفتاح IABTCF_PurposeConsents إلى الموافقة على كل من أغراض إطار الشفافية والموافقة.

يوضّح المقتطف البرمجي التالي كيفية التحقّق من الموافقة على الغرض 1:

Swift

// Example value: "1111111111"
let purposeConsents = UserDefaults.standard.string(forKey: "IABTCF_PurposeConsents")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
let hasConsentForPurposeOne = purposeConsents?.first == "1"

Objective-C

// Example value: "1111111111"
NSString *purposeConsents = [NSUserDefaults.standardUserDefaults
                             stringForKey:@"IABTCF_PurposeConsents"];
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
BOOL hasConsentForPurposeOne = [purposeConsents hasPrefix:@"1"];

الأسئلة الشائعة

ماذا يحدث في حال عدم اتّخاذ أي إجراء لاستيفاء متطلبات منصّة إدارة الموافقة لعرض الإعلانات في المنطقة الاقتصادية الأوروبية والمملكة المتحدة؟

اعتبارًا من 16 كانون الثاني (يناير) 2024، إذا لم يستخدِم أحد الشركاء منصّة إدارة موافقة معتمَدة من Google، ستكون الإعلانات المحدودة فقط هي المؤهّلة للعرض على الزيارات الواردة من المنطقة الاقتصادية الأوروبية والمملكة المتحدة.

سيبدأ فرض هذه المتطلبات في 16 كانون الثاني (يناير) 2024 على نسبة صغيرة من الزيارات الواردة من المنطقة الاقتصادية الأوروبية والمملكة المتحدة، على أن يتم تطبيقها على جميع الزيارات الواردة من هذه المناطق في نهاية شباط (فبراير) 2024. يُرجى استخدام منصة معتمَدة لإدارة الموافقة بحلول 16 كانون الثاني (يناير) 2024 لضمان عدم تأثُّر عملية تحقيق الربح.

كيف يمكنني التحقّق مما إذا كان المستخدم قد وافق على ذلك؟

لا يتم تمثيل الموافقة ببت واحد، بل بمجموعة من الأغراض والمورّدين على النحو المحدّد في مواصفات إطار الشفافية والموافقة الصادر عن مكتب IAB. اطّلِع على سياسات الموافقة: الإعلانات المخصّصة وغير المخصّصة للاطّلاع على معايير تخصيص "إعلانات Google".

بالإضافة إلى ذلك، فإنّ تقنيات الإعلان المدرَجة في قائمة مزوّدي تقنية الإعلان (ATP) من Google والتي لم يتم تسجيلها في قائمة مورّدي إطار الشفافية والموافقة تستخدم المواصفات الفنية لميزة "الموافقة الإضافية" من Google لجمع الموافقات. تنشر Google قائمة مزوّدي تقنية الإعلان غير المسجَّلين لدى مكتب IAB وأرقام تعريفهم في الموقع التالي: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.

لتصحيح أخطاء طلب إعلان فردي، استخدِم ميزة تصحيح أخطاء الوحدات الإعلانية المتقدّمة في "أداة فحص الإعلانات" لتصدير سلسلة طلب إعلان. بعد ذلك، ابحث عن مَعلمات طلب البحث التالية:

معامِل طلب البحث المعنى
gdpr ما إذا كانت "اللائحة العامّة لحماية البيانات" تنطبق على طلب الإعلان هذا.
gdpr_consent سلسلة الموافقة والشفافية توفّر Interactive Advertising Bureau أداة ويب يمكنك من خلالها فك ترميز القيمة يدويًا.
addtl_consent سلسلة AC من المواصفات الفنية لـ "الموافقة الإضافية" من Google

لقراءة خيارات الموافقة آليًا، يُرجى الاطّلاع على مقالة كيفية قراءة خيارات الموافقة للحصول على مزيد من المعلومات.

هل أحتاج إلى استخدام حزمة تطوير البرامج (SDK) لمنصّة User Messaging Platform من Google لاستيفاء متطلبات منصّة إدارة الموافقة؟

لا، يمكنك استخدام أيّ منصّة إدارة موافقة من قائمة منصّات إدارة الموافقة المعتمَدة من Google لعرض الإعلانات.

كيف يمكنني عرض نموذج الموافقة مرة أخرى باستخدام حزمة تطوير البرامج لمنصة UMP حتى إذا سبق للمستخدم الموافقة؟

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

تتطلّب "اللائحة العامّة لحماية البيانات" تعديل الموافقة للسماح للمستخدمين بسحب موافقتهم خياراتهم في أي وقت. اطّلِع على خيارات الخصوصية لتطبيق طريقة تتيح للمستخدمين سحب خيارات الموافقة. لعرض ملف الموافقة مرة أخرى، يُرجى الاتصال على presentPrivacyOptionsFormFromViewController:completionHandler:.

لقد دمجتُ منصّة إدارة موافقة معتمَدة من Google، ولكنّني لا أرى أي طلبات إعلانات يتم إجراؤها إلى شركاء التوسّط حتى من المستخدمين الذين قدّموا موافقتهم. سبب هذا التغيير

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

بعض شركاء التوسّط في قائمة مزوّدي تقنية الإعلان (ATP) من Google لم يتم تسجيلهم في قائمة مورّدي إطار الشفافية والموافقة. ويستخدم هؤلاء الشركاء بدلاً من ذلك المواصفات الفنية لـ "الموافقة الإضافية" من Google لجمع الموافقة. تنشر Google قائمة مزوّدي تقنية الإعلان غير المسجَّلين لدى مكتب IAB وأرقام تعريفهم في الموقع التالي: https://storage.googleapis.com/tcfac/additional-consent-providers.csv

تتيح حزمة تطوير البرامج لمنصة UMP تخزين سلسلة ACString، ما يتيح لك إضافة شركاء إعلانات إلى الرسائل المنشورة لطلب موافقة المستخدمين بموجب "اللائحة العامة لحماية البيانات" (GDPR) بدون الحاجة إلى معرفة ما إذا كان الشركاء مسجّلين في إطار إطار الشفافية والموافقة. عند استخدام منصّة إدارة موافقة تابعة لجهة خارجية، عليك تنفيذ ما يلي:

  1. تأكَّد من أنّ منصّة إدارة الموافقة التابعة لجهة خارجية تتيح تخزين ACString.
  2. أدرِج كل شريك توسّط في قائمة مزوّدي تكنولوجيا الإعلان التي تستخدمها منصّة إدارة الموافقة التابعة لجهة خارجية من أجل جمع الموافقات.
هل يمكنني تغيير طريقة عمل تطبيقي في حال عدم موافقة المستخدمين؟ هل يسمح بذلك سياسة التطبيق؟

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

عندما أختار إدارة الخيارات وأوافق على جميع الأغراض، لا تظهر لي أي إعلانات؟ سبب هذا التغيير

بالإضافة إلى الحصول على موافقة بشأن الأغراض التي يتم جمع البيانات من أجلها، عليك أيضًا الحصول على موافقة العميل. يجب الحصول على كلّ من موافقة الأغراض وموافقة المورّد لكي يتمكّن أي مورّد، مثل Google، من عرض الإعلانات المناسبة.

ما هي أفضل ممارسة لعرض كلّ من تنبيه إطار عمل شفافية تتبّع التطبيقات (ATT) على نظام التشغيل iOS وموافقة المستخدم بموجب "اللائحة العامّة لحماية البيانات" للمستخدم نفسه؟

ننصحك بعرض رسالة طلب الموافقة بموجب "اللائحة العامة لحماية البيانات" أولاً ثم تنبيه ATT في iOS ثانيًا إذا وافق المستخدم على "اللائحة العامة لحماية البيانات". تتولى حزمة تطوير البرامج (SDK) لمنصّة UMP تنفيذ هذه العملية إذا أعددت كلتا الرسالتَين في واجهة مستخدم AdMob. اطّلِع على مزيد من المعلومات من خلال الاطّلاع على الرسالة التي ستظهر للمستخدمين.

إذا كنت لا تعرض تنبيه ATT باستخدام حزمة تطوير البرامج (SDK) لمنصّة UMP، ننصحك بقراءة خيارات الموافقة بعد جمع موافقة المستخدمين بموجب "اللائحة العامّة لحماية البيانات" لتحديد ما إذا كان عليك عرض تنبيه ATT على نظام التشغيل iOS.

كيف يمكنني تطبيق الإصدار 2 من سلسلة الموافقة الإضافية (AC) على المستخدمين الذين سبق لهم الموافقة على الإصدار 1؟

تحقّق من مفتاح IABTCF_AddtlConsent في مساحة التخزين المحلية وفقًا للمواصفات الفنية لميزة "الموافقة الإضافية" من Google لتحديد ما إذا كان المستخدم قد وافق على الإصدار 2 من سلسلة الشفافية والموافقة وما إذا كان عليك عرض نموذج الموافقة مرة أخرى.

Swift

// Example value: "2~1.35.41.101~dv.9.21.81"
let additionalConsent = UserDefaults.standard.string(forKey: "IABTCF_AddtlConsent")
// Index 0 contains information about the specification version number.
let isACVersion2 = additionalConsent?.first == "2"

Objective-C

// Example value: "2~1.35.41.101~dv.9.21.81"
NSString *additionalConsent = [NSUserDefaults.standardUserDefaults
                        stringForKey:@"IABTCF_AddtlConsent"];
// Index 0 contains information about the specification version number.
BOOL isACVersion2 = [additionalConsent hasPrefix:@"2"];