البدء

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

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

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

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

استيراد حزمة تطوير البرامج (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، ثبِّت حزمة Google Mobile Ads Swift من خلال الانتقال إلى ملف > إضافة حِزم....

  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. في إعدادات إنشاء مشروعك:

    • أضِف مسار /usr/lib/swift إلى مسارات البحث في مسار التشغيل.
    • أضِف علامة الربط -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>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>3qy4746246.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>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>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>ppxm28t8ap.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>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>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>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.

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

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

إعلان بيني

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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