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

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

لعرض الإعلانات وتحقيق الأرباح، عليك دمج Google Mobile Ads SDK في تطبيق iOS. ولتجهيز مشروعك، عليك استيراد 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. ثبِّت حزمة Google Mobile Ads SDK Swift.

  4. في الطلب الذي يظهر، ابحث عن مستودع Google Mobile Ads Swift Package GitHub:

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

CocoaPods

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

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

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

    pod install --repo-update

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

يتطلّب Xcode 27 حدًا أدنى من هدف النشر وهو iOS 15.0 لجميع الأهداف. بما أنّ Google Mobile Ads SDK يتوافق مع الإصدار 13.0 من نظام التشغيل iOS، يتعذّر إنشاء الإصدار 27 من Xcode عند استخدام 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:. إذا كنت بحاجة إلى الحصول على موافقة المستخدمين في المنطقة الاقتصادية الأوروبية (EEA) أو المملكة المتحدة أو سويسرا، اضبط العلامات الخاصة بالطلبات. إذا كنت بحاجة إلى ضبط علامات خاصة بالطلبات، تأكَّد من ضبط العلامات قبل تهيئة Google Mobile Ads SDK. لمزيد من التفاصيل، يُرجى الاطّلاع على الاستهداف.

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

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

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

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