البدء

هذا الدليل مخصّص للناشرين الذين يريدون تحقيق ربح من تطبيق iOS باستخدام AdMob ولا يستخدمون Firebase. إذا كنت تخطّط لتضمين Firebase في تطبيقك (أو إذا كنت تفكّر في استخدامه)، اطّلِع على إصدار AdMob مع Firebase من هذا الدليل بدلاً من ذلك.

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

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

  • استخدام Xcode 15.3 أو إصدار أحدث
  • استهداف إصدار iOS 12.0 أو الإصدارات الأحدث

استيراد حزمة SDK لإعلانات الأجهزة الجوّالة

استخدِم إحدى الطرق التالية لاستيراد حزمة "SDK لإعلانات Google على الأجهزة الجوّالة".

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

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

pod 'Google-Mobile-Ads-SDK'

ثم من تشغيل سطر الأوامر:

pod install --repo-update

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

مدير حزم Swift

تدعم حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" أداة Swift Package Manager بدءًا من الإصدار 9.0.0. اتبع هذه الخطوات لاستيراد حزمة Swift:

  1. في Xcode، ثبِّت حزمة Swift لإعلانات Google على الأجهزة الجوّالة بالانتقال إلى ملف > إضافة حزم....

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

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. حدِّد إصدار حزمة Swift لإعلانات Google على الأجهزة الجوّالة الذي تريد استخدامه. بالنسبة إلى المشاريع الجديدة، ننصح باستخدام الإصدار الرئيسي التالي.

بمجرد الانتهاء، سيبدأ Xcode في حل تبعيات الحزمة وتنزيلها في الخلفية. لمزيد من التفاصيل حول كيفية إضافة العناصر التابعة للحزمة، راجِع مقالة Apple.

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

  1. نزِّل حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" وEmbed & Signإطارَي العمل التاليَين في مشروع Xcode:

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. أضِف علامة الربط -ObjC إلى علامات الرابط الأخرى في إعدادات إصدار مشروعك:

تعديل Info.plist

عدِّل ملف Info.plist لتطبيقك لإضافة مفتاحَين:

  1. مفتاح GADApplicationIdentifier مع قيمة سلسلة للسمةAdMob app ID found in the AdMob UI.

  2. مفتاح SKAdNetworkItems بقيم SKAdNetworkIdentifier لـ Google (cstr6suwn9.skadnetwork) ومشترين محدّدين تابعين لجهات خارجية الذين قدّموا هذه القيم إلى Google.

المقتطف الكامل

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</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>4pfyvq9l8r.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>5a6flpkh64.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>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>v4nxqhlyqp.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>wzmmz9fp6w.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>n6fk4nfna4.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>eh6m2bh4zr.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>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>ecpz2srf59.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>uw77j35x4d.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>pwa73g5rt2.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>mlmmfzh3r3.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>e5fvkxwrpn.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>8c4e2ghe7u.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>zq492l623r.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3rd42ekr43.skadnetwork</string>
  </dict>
  <dict>
    <key>SKAdNetworkIdentifier</key>
    <string>3qcr597p9d.skadnetwork</string>
  </dict>
</array>

إذا لم تكن قد أنشأت حسابًا على AdMob وسجّلت تطبيقًا بعد، حان الوقت لإجراء ذلك.

في تطبيق حقيقي، استبدِل نموذج رقم تعريف التطبيق برقم تعريف التطبيقAdMob الفعلي. ويمكنك استخدام رقم تعريف النموذج إذا كنت تجري تجربة باستخدام حزمة SDK في أحد تطبيقات Hello World.

إعداد حزمة تطوير البرامج (SDK) لعرض الإعلانات للأجهزة الجوّالة

قبل تحميل الإعلانات، يمكنك استدعاء طريقة startWithCompletionHandler: في GADMobileAds.sharedInstance، والتي تعمل على إعداد SDK واستدعاء معالج الإكمال عند اكتمال الإعداد (أو بعد انتهاء مهلة 30 ثانية). يجب القيام بذلك مرة واحدة فقط، من الناحية المثالية عند تشغيل التطبيق. يجب الاتصال بـ startWithCompletionHandler: في أقرب وقت ممكن.

إليك مثال على كيفية استدعاء طريقة startWithCompletionHandler: في AppDelegate:

مثال على AppDelegate (مقتطف)

Swift

import GoogleMobileAds

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }
}

SwiftUI

import GoogleMobileAds

class AppDelegate: UIResponder, UIApplicationDelegate {

  func application(_ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    GADMobileAds.sharedInstance().start(completionHandler: nil)

    return true
  }
}

@main
struct YourApp: App {
  // To handle app delegate callbacks in an app that uses the SwiftUI lifecycle,
  // you must create an application delegate and attach it to your `App` struct
  // using `UIApplicationDelegateAdaptor`.
  @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

  var body: some Scene {
    WindowGroup {
      NavigationView {
        ContentView()
      }
    }
  }
}

Objective-C

@import GoogleMobileAds;

@implementation AppDelegate

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

  [GADMobileAds.sharedInstance startWithCompletionHandler:nil];
  return YES;
}

@end

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

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

بالنسبة إلى مطوّري SwiftUI، يُرجى اتّباع دليل SwiftUI.

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

تنفيذ إعلانات البانر

إعلان بيني

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

تنفيذ الإعلانات البينية

مدمجة مع المحتوى

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

تنفيذ الإعلانات المدمجة مع المحتوى

تم منح المكافأة

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

تنفيذ الإعلانات التي تضم مكافأة

إعلان بيني يضم مكافأة

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

على عكس الإعلانات التي تضم مكافأة، لا يُطلب من المستخدمين الموافقة لعرض الإعلانات البينية التي تضم مكافأة.

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

تنفيذ الإعلانات البينية التي تضم مكافأة

إعلان على شاشة فتح التطبيق

على شاشة فتح التطبيق هو شكل من أشكال الإعلانات يظهر عندما يفتح المستخدمون تطبيقك أو يعودون إليه. ويظهر الإعلان على شاشة التحميل.

تنفيذ الإعلانات على شاشة فتح التطبيق