هذا الدليل مخصّص للناشرين الذين يريدون تحقيق الربح من تطبيق iOS باستخدام AdMob ولا يستخدمون Firebase. إذا كنت تخطّط لتضمين Firebase في تطبيقك (أو إذا كنت تفكّر في ذلك)، يمكنك الاطّلاع على نسخة AdMob مع Firebase من هذا الدليل بدلاً من ذلك.
يُعدّ دمج حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" في تطبيقك الخطوة الأولى نحو عرض الإعلانات وتحقيق الإيرادات. بعد دمج حزمة SDK، يمكنك المتابعة لتنفيذ شكل واحد أو أكثر من أشكال الإعلانات المتوافقة.
المتطلبات الأساسية
- استخدام الإصدار 16.0 من Xcode أو إصدار أحدث
- استهداف الإصدار 12.0 من نظام التشغيل iOS أو الإصدارات الأحدث
- يُنصح بما يلي: إنشاء حساب على AdMob وتسجيل تطبيق
استيراد حزمة تطوير البرامج (SDK) لعرض الإعلانات على الأجهزة الجوّالة
استخدِم إحدى الطريقتَين التاليتَين لاستيراد "حزمة تطوير البرامج (SDK) لإعلانات Google على الأجهزة الجوّالة".
Swift Package Manager
لإضافة تبعية حزمة إلى مشروعك، اتّبِع الخطوات التالية:
في Xcode، ثبِّت حزمة Google Mobile Ads Swift Package من خلال الانتقال إلى ملف > إضافة تبعيات الحزمة....
في الطلب الذي يظهر، ابحث عن مستودع Google Mobile Ads Swift Package GitHub:
https://github.com/googleads/swift-package-manager-google-mobile-ads.git
اختَر إصدار حزمة Google Mobile Ads Swift التي تريد استخدامها. بالنسبة إلى المشاريع الجديدة، ننصحك باستخدام Up to Next Major Version.
CocoaPods
قبل المتابعة، راجِع مقالة استخدام CocoaPods للحصول على معلومات حول إنشاء ملفات Podfile واستخدامها.
لاستخدام CocoaPods، يُرجى اتّباع الخطوات التالية:
افتح Podfile الخاص بمشروعك وأضِف هذا السطر إلى إعدادات
target
الإنشاء في تطبيقك:pod 'Google-Mobile-Ads-SDK'
في الوحدة الطرفية، شغِّل:
pod install --repo-update
التنزيل يدويًا
نزِّل حزمة "SDK لإعلانات Google على الأجهزة الجوّالة" و
Embed & Sign
الأُطر التالية في مشروع Xcode:GoogleMobileAds.xcframework
UserMessagingPlatform.xcframework
في إعدادات الإصدار لمشروعك، اتّبِع الخطوات التالية:
- أضِف مسار
/usr/lib/swift
إلى مسارات البحث Runpath. - أضِف علامة ربط
-ObjC
إلى علامات الربط الأخرى.
- أضِف مسار
تعديل ملف Info.plist
عدِّل ملف Info.plist
في تطبيقك لإضافة مفتاحَين:
مفتاح
GADApplicationIdentifier
بقيمة سلسلة تمثّل معرّف تطبيقك على AdMob، ويمكن العثور عليه في واجهة مستخدم AdMob.مفتاح
SKAdNetworkItems
يتضمّن قيمSKAdNetworkIdentifier
خاصة بـ Google (cstr6suwn9.skadnetwork
) ومشترين محدّدين من جهات خارجية قدّموا هذه القيم إلى Google.
المقتطف الكامل
<key>GADApplicationIdentifier</key> <!-- Sample AdMob 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>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 بمعرّف تطبيقك على AdMob. أثناء الاختبار، استخدِم معرّف التطبيق النموذجي الموضّح في المثال السابق.
إذا لم يسبق لك إنشاء حساب على AdMob وتسجيل تطبيق، ننصحك بإجراء ذلك الآن.
إعداد حزمة تطوير البرامج (SDK) للإعلانات على الأجهزة الجوّالة
قبل تحميل الإعلانات، استدعِ طريقة start()
في GADMobileAds.sharedInstance
، ما يؤدي إلى تهيئة حزمة تطوير البرامج (SDK) واستدعاء معالج الإكمال مرة أخرى بعد اكتمال عملية التهيئة (أو بعد انتهاء المهلة البالغة 30 ثانية). يجب استدعاء start()
في أقرب وقت ممكن.
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];
اختيار شكل إعلان
تم الآن استيراد حزمة "SDK للإعلانات على الأجهزة الجوّالة" وإعدادها، وأنت جاهز لتنفيذ إعلان. توفّر AdMob عددًا من أشكال الإعلانات المختلفة، ما يتيح لك اختيار الشكل الأنسب لتجربة المستخدم في تطبيقك.
بانر
تعرض الوحدات الإعلانية لإعلانات البانر إعلانات مستطيلة تشغل جزءًا من تصميم التطبيق. ويمكن تحديثها تلقائيًا بعد فترة زمنية معيّنة. وهذا يعني أنّ المستخدِمين سيشاهدون إعلانًا جديدًا على فترات زمنية منتظمة، حتى إذا ظلّوا على الشاشة نفسها في تطبيقك. ويُعدّ هذا الشكل أبسط أشكال الإعلانات التي يمكن تنفيذها.
إعلان بيني
تعرض وحدات الإعلانات البينية إعلانات بملء الصفحة داخل تطبيقك. ويمكنك عرض هذه الإعلانات في لحظات التنقّل أو الفواصل التي تحدث بشكلٍ تلقائي في واجهة تطبيقك، على سبيل المثال، بعد اكتمال مستوىً معيّن في أحد تطبيقات الألعاب.
مدمجة مع المحتوى
الإعلانات المدمجة مع المحتوى هي إعلانات يمكنك تخصيص طريقة عرض مواد العرض فيها، مثل العناوين وعبارات الحث على اتّخاذ إجراء، في تطبيقاتك. من خلال تصميم الإعلان بنفسك، يمكنك إنشاء عروض إعلانية طبيعية وغير متداخلة يمكن أن تساهم في تقديم تجربة مستخدم غنية.
تنفيذ الإعلانات المدمجة مع المحتوى
تم منح المكافأة
تتيح وحدات "الإعلانات مقابل مكافأة" للمستخدمين تشغيل الألعاب أو المشاركة في استطلاعات أو مشاهدة فيديوهات للحصول على مكافآت داخل التطبيق، مثل الحصول على عملات معدنية أو محاولات إضافية أو نقاط. يمكنك ضبط مكافآت مختلفة لوحدات إعلانية مختلفة، وتحديد قيم المكافأة والعناصر التي حصل عليها المستخدم.
إعلان بيني يقدّم مكافأة
الإعلان البيني بمكافأة هو نوع جديد من أشكال الإعلانات المحفَّزة التي تتيح لك تقديم مكافآت، مثل العملات المعدنية أو محاولات إضافية للإعلانات التي تظهر تلقائيًا أثناء عمليات النقل العادية للتطبيقات.
على عكس الإعلانات مقابل مكافأة، لا يُطلب من المستخدمين الموافقة على عرض إعلان بيني مقابل مكافأة.
وبدلاً من رسالة طلب الموافقة داخل "الإعلانات مقابل مكافأة"، تتطلّب "الإعلانات البينية مقابل مكافأة" شاشة تمهيدية تُعلن عن المكافأة وتمنح المستخدمين فرصة للإيقاف إذا أرادوا إجراء ذلك.
تنفيذ الإعلانات البينية التي تضمّ مكافأة
إعلان على شاشة فتح التطبيق
"الإعلانات على شاشة فتح التطبيق" هي شكل إعلان يظهر عندما يفتح المستخدمون تطبيقك أو يعودون إليه. يظهر الإعلان على شاشة التحميل.
تنفيذ "الإعلانات على شاشة فتح التطبيق"