البدء

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

لدعم الناشرين في الوفاء بالتزاماتهم بموجب هذه السياسة، تقدّم Google حزمة تطوير البرامج (SDK) لمنصة رسائل المستخدم (UMP). تم تحديث حزمة تطوير البرامج (SDK) في UMP لدعم أحدث معايير مكتب الإعلانات التفاعلية (IAB). يمكن الآن التعامل بكل سهولة مع هذه التهيئات في AdMob الخصوصية والمراسلة.

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

أنواع رسائل المستخدم

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

استيراد SDK

CocoaPods (الخيار المفضّل)

يتم تضمين حزمة تطوير البرامج (SDK) في Google User Messaging Platform كملحق لحزمة SDK لإعلانات Google على الأجهزة الجوّالة التي تبدأ بالإصدار 7.64.0 من "SDK لإعلانات Google على الأجهزة الجوّالة".

أسهل طريقة لاستيراد حزمة تطوير البرامج (SDK) إلى مشروع iOS هي استخدام CocoaPods. افتح Podfile لمشروعك وأضف هذا السطر إلى هدف تطبيقك:

pod 'Google-Mobile-Ads-SDK'

بعد ذلك، شغِّل الأمر التالي:

pod install --repo-update

إذا كنت مستخدمًا جديدًا لتطبيق CocoaPods، يمكنك الاطّلاع على استخدام CocoaPods للحصول على تفاصيل حول طريقة إنشاء ملفات Podfiles واستخدامها.

التنزيل اليدوي

تتمثل الطريقة الأخرى لاستيراد SDK في إجراء ذلك يدويًا.

تنزيل حزمة تطوير البرامج (SDK)

ثم اسحب إطار العمل إلى مشروع Xcode وتأكّد من اختيار نسخ العناصر إذا لزم الأمر.

يمكنك بعد ذلك تضمين إطار العمل في أي ملف تحتاج إليه باستخدام:

Swift

import UserMessagingPlatform

Objective-C

#include <UserMessagingPlatform/UserMessagingPlatform.h>

تحديث Info.plist

البحث عن رقم تعريف التطبيق وإضافته إلى Info.plist:

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>

تحديد ما إذا كانت الرسالة بحاجة إلى العرض أم لا

يجب أن تطلب تحديثًا لمعلومات موافقة المستخدم في كل مرة يتم فيها تشغيل تطبيق، وذلك باستخدام requestConsentInfoUpdateWithParameters:completionHandler: قبل تحميل نموذج. يمكن أن يحدد هذا ما إذا كان المستخدم بحاجة إلى تقديم موافقة إذا لم يكن قد فعل ذلك من قبل أو ما إذا كانت موافقته قد انتهت.

إذا لزم الأمر، يمكنك تقديم النموذج في وقت لاحق.

في ما يلي مثال على كيفية التحقق من الحالة عند بدء تشغيل التطبيق:

Swift

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   // Create a UMPRequestParameters object.
   let parameters = UMPRequestParameters()
   // Set tag for under age of consent. Here false means users are not under age.
   parameters.tagForUnderAgeOfConsent = false

   // Request an update to the consent information.
   UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
      with: parameters,
      completionHandler: { error in
        if error != nil {
           // Handle the error.
        } else {
           // The consent information state was updated.
           // You are now ready to check if a form is
           // available.
        }
       })
}

Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                           }
                         }];
}

تحميل نموذج إذا كان متاحًا

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

للتحقق من توفّر نموذج، استخدِم the formStatus property on the UMPConsentInformation instance الذي أنشأته سابقًا.

بعد ذلك، أضف طريقة برنامج تضمين لتحميل النموذج:

Swift

// Request an update to the consent information.
UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(
    withParameters: parameters,
    completionHandler: { [self] error in

      // The consent information has updated.
      if error != nil {
        // Handle the error.
      } else {
        // The consent information state was updated.
        // You are now ready to see if a form is available.
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == UMPFormStatus.available {
          loadForm()
        }
      }
    })
...
func loadForm() {

}

Objective-C

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError* _Nullable error) {

                           // The consent information has updated.
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to see if a form is available.
                             UMPFormStatus formStatus =
                                 UMPConsentInformation.sharedInstance
                                     .formStatus;
                             if (formStatus == UMPFormStatusAvailable) {
                               [self loadForm];
                             }
                           }
                         }];
...
- (void) loadForm {

}

لتحميل النموذج، استخدِم the static loadWithCompletionHandler: method on the UMPConsentForm class.

Swift

func loadForm() {
  // Loads a consent form. Must be called on the main thread.
  UMPConsentForm.load(
      withCompletionHandler: { form, loadError in
        if loadError != nil {
          // Handle the error
        } else {
          // Present the form
        }
      })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm
      loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
        if (loadError) {
          // Handle the error
        } else {
          // Present the form
        }
      }];
}

مشاركة عرض النموذج إذا لزم الأمر

بعد تحديد مدى توفّر النموذج وتحميله، يمكنك استخدام presentFromViewController:completionHandler: الطريقة في UMPConsentForm المثيل لتقديم النموذج.

يمكنك استخدام UMPConsentInformation كائن من وقت سابق للتحقق من consent status تحديث طريقةloadForm :

Swift

func loadForm() {
  UMPConsentForm.load(withCompletionHandler: { form, loadError in
    if loadError != nil {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.required {
        form?.present(
            from: self,
            completionHandler: { dismissError in
              if UMPConsentInformation.sharedInstance.consentStatus == UMPConsentStatus.obtained {
                // App can start requesting ads.
              }
                // Handle dismissal by reloading form.
                loadForm();
            })
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  })
}

Objective-C

- (void)loadForm {
  [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form,
                                              NSError *loadError) {
    if (loadError) {
      // Handle the error.
    } else {
      // Present the form. You can also hold on to the reference to present
      // later.
      if (UMPConsentInformation.sharedInstance.consentStatus ==
          UMPConsentStatusRequired) {
        [form
            presentFromViewController:self
                    completionHandler:^(NSError *_Nullable dismissError) {
                      if (UMPConsentInformation.sharedInstance.consentStatus ==
                          UMPConsentStatusObtained) {
                        // App can start requesting ads.
                      }
                        // Handle dismissal by reloading form.
                        [self loadForm];
                    }];
      } else {
        // Keep the form available for changes to user consent.
      }
    }
  }];
}

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

الاختبار

فرض منطقة جغرافية

توفر حزمة تطوير البرامج (SDK) لمنصّة Google User Messaging Platform (UMP) طريقة لاختبار سلوك تطبيقك كما لو كان الجهاز يقع في المنطقة الاقتصادية الأوروبية أو المملكة المتحدة باستخدام the debugGeography property of type UMPDebugGeography on UMPDebugSettings.

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

Swift

let parameters = UMPRequestParameters()
let debugSettings = UMPDebugSettings()
debugSettings.testDeviceIdentifiers = ["TEST-DEVICE-HASHED-ID"]
debugSettings.geography = UMPDebugGeography.EEA
parameters.debugSettings = debugSettings
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;
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error){
                           ...
}];

باستخدام UMPDebugGeography، لديك خيار فرض الموقع الجغرافي على أحد هذه الخيارات:

الموقع الجغرافي لتصحيح الأخطاء الوصف
UMPDebugGeographyDisabled تم إيقاف تصحيح الأخطاء الجغرافي.
UMPDebugGeographyEEA يظهر الموقع الجغرافي كما في المنطقة الاقتصادية الأوروبية لأجهزة تصحيح الأخطاء.
UMPDebugGeographyNotEEA يظهر الموقع الجغرافي في المنطقة الاقتصادية الأوروبية لأجهزة تصحيح الأخطاء.

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

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

Swift

UMPConsentInformation.sharedInstance.reset()

Objective-C

[UMPConsentInformation.sharedInstance reset];

عليك أيضًا الاتصال reset إذا قرّرت إزالة حزمة تطوير البرامج (SDK) لمنصّة UMP بالكامل من مشروعك.