البدء

هذا الدليل مُخصَّص للناشرين الذين يريدون تحقيق ربح من تطبيق 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 الحساب الإداري بدءًا من الإصدار 9.0.0. متابعة هذه الخطوات لاستيراد حزمة Swift:

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

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

    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 الدليل.

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

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

إعلان بيني

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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