شروع کنید، شروع کنید

ادغام Google Mobile Ads SDK در یک برنامه اولین قدم برای نمایش تبلیغات و کسب درآمد است. هنگامی که SDK را ادغام کردید، می توانید یک یا چند فرمت تبلیغاتی پشتیبانی شده را پیاده سازی کنید.

پیش نیازها

  • از Xcode 15.3 یا بالاتر استفاده کنید
  • iOS 12.0 یا بالاتر را هدف قرار دهید

SDK تبلیغات موبایل را وارد کنید

از یکی از روش های زیر برای وارد کردن Google Mobile Ads SDK استفاده کنید.

CocoaPods (ترجیحا)

ساده ترین راه برای وارد کردن SDK به پروژه iOS استفاده از CocoaPods است. Podfile پروژه خود را باز کنید و این خط را به هدف برنامه خود اضافه کنید:

pod 'Google-Mobile-Ads-SDK'

سپس از خط فرمان اجرا کنید:

pod install --repo-update

اگر با CocoaPods تازه کار هستید، برای اطلاعات در مورد نحوه ایجاد و استفاده از Podfiles به اسناد رسمی آنها مراجعه کنید.

مدیر بسته سوئیفت

Google Mobile Ads SDK از Swift Package Manager با شروع نسخه 9.0.0 پشتیبانی می کند. برای وارد کردن بسته سوئیفت مراحل زیر را دنبال کنید:

  1. در Xcode، بسته Swift Google Mobile Ads را با رفتن به File > Add Packages... نصب کنید.

  2. در درخواستی که ظاهر می شود، مخزن GitHub Swift Package Ads Google Mobile را جستجو کنید:

    https://github.com/googleads/swift-package-manager-google-mobile-ads.git
    
  3. نسخه بسته Swift Ads Google Mobile را که می‌خواهید استفاده کنید، انتخاب کنید. برای پروژه‌های جدید، توصیه می‌کنیم از نسخه اصلی تا بعدی استفاده کنید.

پس از اتمام کار، Xcode شروع به رفع وابستگی های بسته شما و دانلود آنها در پس زمینه می کند. برای جزئیات بیشتر در مورد نحوه افزودن وابستگی های بسته، به مقاله اپل مراجعه کنید.

دانلود دستی

  1. Google Mobile Ads SDK را دانلود کنید و چارچوب‌های زیر را در پروژه Xcode خود Embed & Sign :

    • GoogleMobileAds.xcframework
    • UserMessagingPlatform.xcframework
  2. در تنظیمات ساخت پروژه شما:

    • مسیر /usr/lib/swift را به مسیرهای جستجوی Runpath اضافه کنید.
    • پرچم پیوند دهنده -ObjC را به سایر پرچم های پیوند دهنده اضافه کنید.

Info.plist خود را به روز کنید

فایل Info.plist برنامه خود را برای اضافه کردن دو کلید به روز کنید:

  1. یک کلید GADApplicationIdentifier با مقدار رشته شماAd Manager app ID found in the Ad Manager UI and of the form ca-app-pub-################~##########.

  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>

برای عملکرد بهینه اولیه، مهم است که گروه‌های بازدهی خود را با برنامه‌های خاصی که در آنها استفاده می‌شوند مرتبط کنید. پیکربندی‌های گروه بازدهی که iOS را هدف قرار می‌دهند و با هیچ برنامه خاصی مرتبط نیستند، به همه برنامه‌های iOS موجود در حساب شما ارسال می‌شوند، که احتمالاً زمان مورد نیاز را طولانی‌تر می‌کند. برای مقداردهی اولیه

در یک برنامه واقعی، شناسه نمونه برنامه را با واقعی خود جایگزین کنید Ad Manager شناسه برنامه اگر فقط در حال آزمایش SDK در یک برنامه Hello World هستید، می توانید از شناسه نمونه استفاده کنید.

SDK تبلیغات موبایل را راه اندازی کنید

قبل از بارگیری تبلیغات، متد startWithCompletionHandler: را در GADMobileAds.sharedInstance فراخوانی کنید، که SDK را مقداردهی اولیه می‌کند و پس از تکمیل اولیه (یا پس از مهلت زمانی 30 ثانیه‌ای)، یک کنترل‌کننده تکمیل را فراخوانی می‌کند. این کار فقط باید یک بار انجام شود، ایده آل در هنگام راه اندازی برنامه. باید هر چه زودتر با startWithCompletionHandler: تماس بگیرید.

در اینجا مثالی از نحوه فراخوانی متد startWithCompletionHandler: در AppDelegate آورده شده است:

نمونه AppDelegate (گزیده)

سویفت

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()
      }
    }
  }
}

هدف-C

@import GoogleMobileAds;

@implementation AppDelegate

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

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

@end

یک قالب تبلیغ را انتخاب کنید

اکنون SDK تبلیغات موبایل وارد و مقداردهی اولیه شده است و شما آماده اجرای یک تبلیغ هستید. Ad Manager فرمت‌های تبلیغاتی مختلفی را ارائه می‌دهد، بنابراین می‌توانید یکی را انتخاب کنید که با تجربه کاربری برنامه‌تان مطابقت دارد.

برای توسعه دهندگان SwiftUI، راهنمای SwiftUI ما را دنبال کنید.

واحدهای تبلیغات بنری، تبلیغات مستطیلی را نشان می‌دهند که بخشی از طرح‌بندی برنامه را اشغال می‌کنند. آنها می توانند پس از مدت زمان مشخصی به طور خودکار بازخوانی شوند. این بدان معناست که کاربران یک تبلیغ جدید را در فواصل زمانی منظم مشاهده می کنند، حتی اگر در همان صفحه در برنامه شما بمانند. آنها همچنین ساده ترین قالب تبلیغاتی برای پیاده سازی هستند.

پیاده سازی تبلیغات بنری

بینابینی

واحدهای تبلیغات بینابینی تبلیغات تمام صفحه را در برنامه شما نشان می دهند. آنها را در وقفه ها و جابجایی های طبیعی در رابط برنامه خود قرار دهید، مانند پس از اتمام سطح در یک برنامه بازی.

اجرای تبلیغات بینابینی

بومی

تبلیغات بومی تبلیغاتی هستند که در آنها می‌توانید نحوه نمایش دارایی‌هایی مانند سرفصل‌ها و فراخوان‌های اقدام را در برنامه‌های خود سفارشی کنید. با طراحی خود تبلیغ، می توانید یک نمایش تبلیغاتی طبیعی و بدون مزاحمت ایجاد کنید که می تواند به تجربه کاربری غنی اضافه کند.

Google Ad Manager دو راه برای پیاده سازی تبلیغات بومی ارائه می دهد: سبک های بومی و تبلیغات بومی استاندارد از طریق رندر سفارشی.

سبک‌های بومی برای ساده‌سازی اجرای تبلیغات بومی طراحی شده‌اند، و اگر در قالب تازه کار هستید، انتخاب خوبی است. رندر سفارشی برای به حداکثر رساندن آزادی شما در ایجاد ارائه های خود طراحی شده است.

پیاده سازی سبک های بومی پیاده سازی تبلیغات بومی (رندر سفارشی)

پاداش داده شد

واحدهای تبلیغاتی دارای پاداش، کاربران را قادر می‌سازد تا برای کسب جوایز درون‌برنامه‌ای، مانند سکه، زندگی اضافی یا امتیاز، بازی انجام دهند، نظرسنجی کنند یا ویدیو تماشا کنند. می‌توانید پاداش‌های مختلفی را برای واحدهای تبلیغاتی مختلف تعیین کنید و مقادیر پاداش و مواردی را که کاربر دریافت کرده است را مشخص کنید.

اجرای تبلیغات با پاداش

بینابینی با پاداش

بینابینی پاداش‌دار نوع جدیدی از قالب‌های تبلیغاتی با انگیزه است که به شما امکان می‌دهد برای تبلیغاتی که به‌طور خودکار در طول انتقال طبیعی برنامه ظاهر می‌شوند، پاداش‌هایی مانند سکه یا زندگی اضافی ارائه دهید.

برخلاف آگهی‌های دارای پاداش، کاربران مجبور نیستند برای مشاهده یک بینابینی پاداش‌دار شرکت کنند.

به جای اعلان انتخاب در تبلیغات دارای پاداش، مطالب بینابینی دارای پاداش نیاز به یک صفحه مقدماتی دارند که پاداش را اعلام می کند و به کاربران این فرصت را می دهد که در صورت تمایل از انجام این کار انصراف دهند.

تبلیغات بینابینی با پاداش را پیاده سازی کنید

برنامه باز شد

برنامه باز یک قالب تبلیغاتی است که وقتی کاربران برنامه شما را باز می کنند یا به آن برمی گردند ظاهر می شود. آگهی روی صفحه بارگیری همپوشانی دارد.

پیاده سازی تبلیغات باز برنامه