إعداد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة"

اختيار النظام الأساسي: Android iOS Unity Flutter Android (قديم)

لعرض الإعلانات وتحقيق الإيرادات، عليك دمج Google Mobile Ads SDK حزمة تطوير البرامج (SDK) لإعلانات Google على الأجهزة الجوّالة في تطبيق iOS. ولإعداد مشروعك، عليك استيراد حزمة تطوير البرامج (SDK) لإعلانات Google على الأجهزة الجوّالة وإعدادها Google Mobile Ads SDK قبل طلب الإعلانات.

يتناول هذا الدليل كيفية استيراد Google Mobile Ads SDK وإعداده، واختيار شكل الإعلان.

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

قبل المتابعة، تأكَّد من توفّر ما يلي:

  • استخدِم الإصدار 16.0 من Xcode أو إصدارًا أحدث.
  • استهداف الإصدار 13.0 من نظام التشغيل iOS أو إصدار أحدث

استيراد Google Mobile Ads SDK

لاستيراد Google Mobile Ads SDK، أكمِل أحد الأقسام التالية:

‫Swift Package Manager (ننصح به)

لإضافة حزمة تابعة إلى مشروعك، اتّبِع الخطوات التالية:

  1. افتح Xcode.
  2. انتقِل إلى ملف > إضافة موارد الاعتمادية للحزمة... (File > Add Package Dependencies...).
  3. ثبِّت حزمة Swift الخاصة بـ "Google Mobile Ads SDK".

  4. في الطلب الذي يظهر، ابحث عن مستودع GitHub لحزمة Swift لإعلانات Google على الأجهزة الجوّالة:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  5. اختَر إصدار حزمة Swift Package من Google Mobile Ads SDK الذي تريد استخدامه. بالنسبة إلى المشاريع الجديدة، ننصحك باستخدام الخيار حتى رقم الإصدار الرئيسي التالي.

CocoaPods

لاستخدام CocoaPods، اتّبِع الخطوات التالية:

  1. افتح ملف Podfile الخاص بمشروعك وأضِف هذا السطر إلى إعدادات التصميم target في تطبيقك:

    pod 'Google-Mobile-Ads-SDK'
    
  2. في الوحدة الطرفية، نفِّذ الأمر التالي:

    pod install --repo-update

ضبط هدف النشر في Xcode 27

يتطلّب الإصدار 27 من Xcode أن يكون الحد الأدنى لإصدار iOS المستهدَف هو 15.0 لجميع الأهداف. بما أنّ Google Mobile Ads SDK متوافق مع الإصدار 13.0 من نظام التشغيل iOS، يتعذّر إنشاء إصدارات Xcode 27 عند استخدام CocoaPods.

لحلّ هذه المشكلة، يُرجى اتّباع الخطوات التالية:

  1. افتح ملف Podfile الخاص بمشروعك وأضِف عنصر الجذب post_install الذي يضبط هدف النشر على 15.0. إذا كان لديك كتلة post_install، أضِف الحلقة الداخلية إلى الكتلة الحالية.

    يضبط المثال التالي مفتاح IPHONEOS_DEPLOYMENT_TARGET على 15.0 لجميع أهداف مجموعات الإعلانات:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '15.0'
        end
      end
    end
    
  2. لإعادة تثبيت مجموعاتك، شغِّل الأمر التالي:

    pod install --repo-update

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

لتنزيل Google Mobile Ads SDK يدويًا، اتّبِع الخطوات التالية:

  1. تنزيل Google Mobile Ads SDK
  2. استخرِج حزمة googlemobileadssdkios.zip.
  3. في مشروع Xcode، أضِف إطارات العمل التالية:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  4. في إعدادات عام الخاصة بالهدف، انتقِل إلى الأطر والمكتبات والمحتوى المضمّن.

  5. تأكَّد من ضبط GoogleMobileAds.xcframework وUserMessagingPlatform.xcframework على التضمين والتوقيع.

  6. في إعدادات إصدار مشروعك، اتّبِع الخطوات التالية:

    • أضِف مسار /usr/lib/swift إلى مسارات البحث في Runpath.
    • أضِف علامة الرابط -ObjC إلى علامات الرابط الأخرى.

تعديل ملف Info.plist

في ملف Info.plist الخاص بتطبيقك، أضِف المفاتيح التالية:

مثال مُكتمل

<key>GADApplicationIdentifier</key>
<!-- Sample Ad Manager app ID: ca-app-pub-3940256099942544~1458002511 -->
<string>SAMPLE_APP_ID</string>
<key>SKAdNetworkItems</key>
<array>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cstr6suwn9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4fzdc2evr5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2fnua5tdw4.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ydx93a7ass.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>p78axxw29g.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v72qych5uu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ludvb6z3bs.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>cp8zw746q7.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3sh42y64q3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c6k4g5qg8m.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>s39g8k73mm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wg4vff78zm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qy4746246.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>f38h382jlk.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>hs6bdukanm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v4nxqhlyqp.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wzmmz9fp6w.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>su67r6k2v3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>yclnxrl5pm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>t38b2kh725.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>7ug5zh24hu.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>gta9lk7p23.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>vutu7akeur.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>y5ghdn5j9k.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>v9wttpbfk9.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>n38lu8286q.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>47vhws6wlr.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbd757ywx3.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>9t245vhmpl.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>a2p9lx4jpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>22mmun2rn5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>44jx6755aq.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>k674qkevps.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4468km3ulz.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>2u9pt9hc89.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8s468mfl3y.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>klf5c3l5u5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>ppxm28t8ap.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>kbmxgpxpgc.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>578prtvx9j.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>4dzt52r2t5.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>tl55sbb4fm.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>c3frkrj4fj.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>e5fvkxwrpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8c4e2ghe7u.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3rd42ekr43.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>97r2b46745.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>

استبدِل SAMPLE_APP_ID برقم تعريف تطبيقك على "إدارة إعلانات Google". أثناء الاختبار، استخدِم نموذج معرّف التطبيق الموضّح في المثال السابق.

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

إعداد Google Mobile Ads SDK

قبل تحميل الإعلانات، عليك إعداد Google Mobile Ads SDK من خلال طلب طريقة start() من السمة GADMobileAds.sharedInstance. يستدعي هذا الأسلوب معالج إكمال بعد انتهاء Google Mobile Ads SDK ومحوّلات التوسّط من المعالجة، أو بعد 30 ثانية.

يُهيئ المثال التالي Google Mobile Ads SDK:

Swift

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

SwiftUI

// Initialize the Google Mobile Ads SDK.
MobileAds.shared.start()

Objective-C

// Initialize the Google Mobile Ads SDK.
[GADMobileAds.sharedInstance startWithCompletionHandler:nil];

عند الإعداد، قد تُحمّل حزمة "Google Mobile Ads SDK" الإعلانات مسبقًا أو تُعدّ حِزم SDK التابعة لجهات خارجية عند استدعاء طريقة startWithCompletionHandler:. إذا كنت بحاجة إلى الحصول على موافقة من المستخدمين في المنطقة الاقتصادية الأوروبية أو المملكة المتحدة أو سويسرا، اضبط علامات خاصة بالطلب. إذا كنت بحاجة إلى ضبط علامات خاصة بالطلب، تأكَّد من ضبط العلامات قبل إعداد Google Mobile Ads SDK. لمعرفة التفاصيل، يُرجى الاطّلاع على الاستهداف.

اختيار شكل الإعلان

بعد استيراد Google Mobile Ads SDK، يمكنك اختيار شكل إعلان لتنفيذه.

يقدّم "مدير الإعلانات" أشكال الإعلانات التالية:

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