تبلیغات بومی

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

وقتی یک تبلیغ بومی بارگیری می‌شود، برنامه شما یک شی تبلیغاتی دریافت می‌کند که حاوی دارایی‌های آن است و برنامه - به جای Google Mobile Ads SDK - مسئول نمایش آنهاست.

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

این صفحه نحوه استفاده از SDK برای بارگیری تبلیغات بومی را نشان می دهد. نکته: در کتاب راهنمای تبلیغات بومی ما درباره تبلیغات بومی بیشتر بیاموزید.

همچنین می‌توانید برخی از داستان‌های موفقیت مشتری را بررسی کنید: مطالعه موردی 1 ، مطالعه موردی 2 .

پیش نیازها

همیشه با تبلیغات آزمایشی تست کنید

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

ساده ترین راه برای بارگیری تبلیغات آزمایشی استفاده از شناسه واحد آگهی آزمایشی اختصاصی ما برای تبلیغات بومی در Android است:

ca-app-pub-3940256099942544/2247696110

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

برای اطلاعات بیشتر در مورد نحوه عملکرد تبلیغات آزمایشی SDK تبلیغات موبایلی Google، به آگهی‌های آزمایشی مراجعه کنید.

بارگذاری تبلیغات

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

یک AdLoader بسازید

کد زیر نحوه ساخت AdLoader را نشان می دهد که می تواند تبلیغات بومی را بارگیری کند:

جاوا

AdLoader adLoader = new AdLoader.Builder(context, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
        @Override
        public void onNativeAdLoaded(NativeAd nativeAd) {
            // Show the ad.
        }
    })
    .withAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            // Handle the failure by logging, altering the UI, and so on.
        }
    })
    .withNativeAdOptions(new NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build();

کاتلین

val adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110}")
    .forNativeAd { ad : NativeAd ->
        // Show the ad.
    }
    .withAdListener(object : AdListener() {
        override fun onAdFailedToLoad(adError: LoadAdError) {
            // Handle the failure.
        }
    })
    .withNativeAdOptions(NativeAdOptions.Builder()
            // Methods in the NativeAdOptions.Builder class can be
            // used here to specify individual options settings.
            .build())
    .build()

متد forNativeAd() مسئول آماده سازی AdLoader برای قالب NativeAd است. هنگامی که یک تبلیغ با موفقیت بارگیری شد، متد onNativeAdLoaded() شی شنونده فراخوانی می شود.

تنظیم AdListener با AdLoader (اختیاری)

هنگام ایجاد AdLoader ، تابع withAdListener یک AdListener برای لودر تنظیم می کند. این روش یک AdListener به‌عنوان پارامتر تکی خود در نظر می‌گیرد، که هنگام وقوع رویدادهای چرخه عمر تبلیغات، از AdLoader پاسخ‌های تماس دریافت می‌کند:

جاوا

.withAdListener(new AdListener() {
    // AdListener callbacks can be overridden here.
})

کاتلین

.withAdListener(object : AdListener() {
    // AdListener callbacks can be overridden here.
})

درخواست تبلیغات

هنگامی که ساخت یک AdLoader را به پایان رساندید، وقت آن است که از آن برای درخواست تبلیغات استفاده کنید. دو روش برای این کار وجود دارد: loadAd() و loadAds() .

loadAd()

این روش یک درخواست برای یک آگهی ارسال می کند.

جاوا

adLoader.loadAd(new AdRequest.Builder().build());

کاتلین

adLoader.loadAd(AdRequest.Builder().build())

loadAds()

این روش یک درخواست برای چندین آگهی (حداکثر پنج) ارسال می کند:

جاوا

adLoader.loadAds(new AdRequest.Builder().build(), 3);

کاتلین

adLoader.loadAds(AdRequest.Builder().build(), 3)

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

بارگیری تبلیغات متعدد (اختیاری)

متد loadAds() یک پارامتر اضافی می گیرد: تعداد تبلیغاتی که SDK باید برای بارگذاری درخواست تلاش کند. این تعداد محدود به 5 است و تضمین نمی‌شود که SDK تعداد دقیق آگهی‌های درخواستی را برگرداند.

تبلیغات بازگردانده شده Google همگی با یکدیگر متفاوت خواهند بود، اگرچه آگهی‌های موجودی رزرو شده یا خریداران شخص ثالث تضمین نمی‌شود که منحصر به فرد باشند.

اگر از میانجی‌گری استفاده می‌کنید، از روش loadAds() استفاده نکنید، زیرا درخواست‌های چند آگهی بومی در حال حاضر برای شناسه‌های واحد تبلیغاتی که برای میانجی‌گری پیکربندی شده‌اند کار نمی‌کنند.

تماس های تلفنی

پس از فراخوانی به loadAd() یک فراخوانی تکی به متدهای شنونده تعریف شده قبلی انجام می شود تا شیء تبلیغاتی بومی ارائه شود یا خطا گزارش شود.

پس از تماس با loadAds() ، چندین تماس از این قبیل انجام می شود (حداقل یک مورد و نه بیشتر از تعداد تبلیغات درخواستی). برنامه‌هایی که چندین آگهی درخواست می‌کنند باید AdLoader.isLoading() در اجرای callback خود فراخوانی کنند تا مشخص کنند که آیا فرآیند بارگیری به پایان رسیده است یا خیر.

در اینجا مثالی وجود دارد که نحوه بررسی isLoading() در پاسخ به تماس onNativeAdLoaded() نشان می دهد:

جاوا

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading()) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }
}).build();
adLoader.loadAds(new AdRequest.Builder().build(), 3);

کاتلین

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd {
        ...
        // some code that displays the ad.
        ...
        if (adLoader.isLoading) {
            // The AdLoader is still loading ads.
            // Expect more adLoaded or onAdFailedToLoad callbacks.
        } else {
            // The AdLoader has finished loading ads.
        }
    }.build()
adLoader.loadAds(AdRequest.Builder().build(), 3)

منابع را آزاد کنید

حتماً از متد destroy() در تبلیغات بومی بارگذاری شده استفاده کنید. این منابع استفاده شده را آزاد می کند و از نشت حافظه جلوگیری می کند.

اطمینان حاصل کنید که تمام مراجع NativeAd در متد onDestroy() فعالیت شما از بین رفته است.

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

یکی دیگر از بررسی های کلیدی این است که آیا اکتیویتی از بین رفته است یا خیر، در آگهی برگشتی destroy() فراخوانی کنید و بلافاصله برگردید:

جاوا

final AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
        .forNativeAd(new NativeAd.OnNativeAdLoadedListener() {
    @Override
    public void onNativeAdLoaded(NativeAd nativeAd) {
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed()` is a method on Activity.
        if (isDestroyed()) {
            nativeAd.destroy();
            return;
        }
        ...
    }
}).build();

کاتلین

lateinit var adLoader: AdLoader
...
adLoader = AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
    .forNativeAd { nativeAd ->
        // If this callback occurs after the activity is destroyed, you
        // must call destroy and return or you may get a memory leak.
        // Note `isDestroyed` is a method on Activity.
        if (isDestroyed) {
            nativeAd.destroy()
            return@forNativeAd
        }
        ...
    }.build()

بهترین شیوه ها

هنگام بارگذاری تبلیغات از این قوانین پیروی کنید.

  • برنامه‌هایی که از تبلیغات بومی در فهرست استفاده می‌کنند، باید فهرست تبلیغات را از قبل ذخیره کنند.

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

  • تا زمانی که بارگیری اولین درخواست تمام نشده است، loadAd() یا loadAds() را در AdLoader صدا نکنید.

شتاب سخت افزاری برای تبلیغات ویدیویی

برای اینکه تبلیغات ویدیویی با موفقیت در بازدیدهای تبلیغات بومی شما نمایش داده شود، شتاب سخت افزاری باید فعال باشد.

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

فعال کردن شتاب سخت افزاری

اگر برنامه شما با روشن شدن جهانی شتاب سخت افزاری به درستی رفتار نمی کند، می توانید آن را برای فعالیت های فردی نیز کنترل کنید. برای فعال یا غیرفعال کردن شتاب سخت افزاری، از ویژگی android:hardwareAccelerated برای عناصر <application> و <activity> در AndroidManifest.xml خود استفاده کنید. مثال زیر شتاب سخت افزاری را برای کل برنامه فعال می کند اما آن را برای یک فعالیت غیرفعال می کند:

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
    <!-- For activities that don't use ads, hardwareAcceleration can be false. -->
    <activity android:hardwareAccelerated="false" />
</application>

برای اطلاعات بیشتر در مورد گزینه های کنترل شتاب سخت افزاری ، راهنمای شتاب HW را ببینید. توجه داشته باشید که در صورت غیرفعال شدن Activity، نماهای تبلیغاتی منفرد را نمی توان برای شتاب سخت افزاری فعال کرد، بنابراین خود Activity باید شتاب سخت افزاری را فعال کند.

تبلیغ خود را نمایش دهید

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