Google Mobile Ads SDK همچنین از سبک های جستجوی سفارشی پشتیبانی می کند. اگر برنامه شما قبلاً از Google Mobile Ads SDK استفاده میکند، توصیه میکنیم به جای آن از نسخه AFSMA SDK استفاده کنید.
اگر از نسخه 18.1.0 یا جدیدتر به نسخه 19.0.0 یا بالاتر ارتقا می دهید، لطفاً راهنمای مهاجرت ما را ببینید.
پیش نیازها
این راهنمای پیاده سازی فرض می کند که شما با موارد زیر آشنا هستید:
- تبلیغات جستجوی سفارشی AdSense با سبک های جستجوی سفارشی
- توسعه اپلیکیشن اندروید
AFS Native SDK را وارد کنید
SDK را اضافه کنید
برای افزودن AFS Native SDK به برنامه خود، موارد زیر را انجام دهید:
فایل build.gradle
را در دایرکتوری ماژول برنامه خود باز کنید. یک قانون ساخت جدید تحت dependencies
برای آخرین نسخه SDK اضافه کنید:
dependencies {
implementation 'com.google.android.gms:play-services-afs-native:19.1.0'
}
مطمئن شوید که build.gradle
سطح بالای شما حاوی ارجاعی به مخزن google()
یا maven { url "https://maven.google.com" }
.
این دستورالعمل ها را دنبال کنید تا افزونه Google Play Standalone Version Matcher را در پروژه خود بگنجانید. زمانی که AFS Native SDK با نسخه ناسازگار Google Play Services استفاده میشود، بهجای اینکه به برنامه اجازه ساخت بدهد، اما بهطور بالقوه باعث خرابیهای زمان اجرا شود، استفاده از این افزونه باعث ایجاد خطای gradle build میشود. یا، failOnVersionConflict()
ResolutionStrategy را در پروژه خود اعمال کنید تا زمانی که از نسخه های ناسازگار سرویس های Google Play در پروژه شما استفاده می شود، خطای ساخت ایجاد شود. تغییرات را ذخیره کنید و روی Sync Project with Gradle Files در نوار ابزار کلیک کنید.
از AndroidX به جای کتابخانه های پشتیبانی اندروید استفاده کنید
با شروع نسخه 17.0.0
SDK، برنامه شما باید از کتابخانههای Jetpack (AndroidX) به جای کتابخانههای پشتیبانی Android استفاده کند. الزامات سازگاری:
-
com.android.tools.build:gradle
را روی نسخه 3.2.1 یا جدیدتر تنظیم کنید. -
compileSdkVersion
را روی 28 یا بالاتر تنظیم کنید. - برنامه خود را برای استفاده از Jetpack (AndroidX) به روز کنید. دستورالعملهای انتقال به AndroidX را دنبال کنید.
کلاس ها
برای ارائه تبلیغات بومی AFS در برنامه خود، کلاس های زیر را اجرا کنید:
- این کلاس مسئول درخواست تبلیغات ناهمزمان، ذخیره و بازیابی تبلیغات و رندر تبلیغات است.
- هر زمینه تبلیغاتی به یک
SearchAdController
جداگانه نیاز دارد. به عنوان مثال، اگر صفحهای دارید که تبلیغات را در کنار فهرستی از نتایج جستجو نشان میدهد و صفحه دیگری که تبلیغات را در کنار جزئیات یک محصول خاص نشان میدهد، باید دو نمونه جداگانه ازSearchAdController
ایجاد کنید، یکی برای هر مورد. - سازنده باید کد دارایی وب شما (شناسه ناشر)، شناسه سبک برای اعمال در تبلیغات برگشتی و
SearchAdOptions
را ارائه کند.Context
ارائه شده در سازنده بایدActivity
باشد که حاویSearchAdController
و جایی است کهView
تبلیغ را در آن قرار می دهید. - با
loadAds
تماس بگیرید تا جستجوی کاربر جدید را نشان دهید و درخواست تبلیغات ناهمزمان را آغاز کنید. هر آگهی بارگیری شده از تماس های قبلی باloadAds
، هنگام برقراری تماس جدید، از حافظه پنهان تبلیغات داخلی پاک می شود. - برای نمایش خلاقیت های تبلیغاتی، یک
View
باcreateAdView
ایجاد کنید. - پس از بارگیری تبلیغات، با یک
View
که قبلاً باcreateAdView
ایجاد شده بود، باpopulateAdView
تماس بگیرید تا یک تبلیغ ذخیره شده در حافظه پنهان در آنView
ارائه شود. علاوه برView
که قرار است پر شود، یکadKey
، یک رشته دلخواه برای شناسایی منحصر به فرد آگهی ارائه دهید. این آگهی تبلیغاتی خاص بازگردانده شده از حافظه پنهان را با آنadKey
مرتبط میکند، بنابراین وقتی همانadKey
به یک فراخوان آینده بهpopulateAdView
ارسال میشود، همان آگهی بازگردانده میشود. برای مثال، اگرpopulateAdView
برای اولین بار باadKey="keyA"
فراخوانی شود و تبلیغی برای کفش های پیاده روی ارائه کند، هر تماس بعدی باpopulateAdView
باadKey="keyA"
همان تبلیغ را برای کفش های پیاده روی پر می کند. (با برقراری تماس جدید باloadAds
همه تبلیغات ذخیره شده در حافظه پنهان و کلیدهای تبلیغات مرتبط پاک می شوند.)
- این شی را به سازنده
SearchAdController
ارسال کنید تا نحوه درخواست و نمایش تبلیغات را سفارشی کنید. برای ایجاد یک شیSearchAdOptions
build()
را درSearchAdOptions.Builder
فراخوانی کنید.
View
- با فراخوانی
createAdView()
درSearchAdController
، یک شیView
برای نگهداری تبلیغات ایجاد کنید. حداکثر یک آگهی را در یک زمان نمایش می دهد، اما همانView
می توان برای نمایش تبلیغات مختلف در طول زمان بازیافت کرد.
- روش
loadAds
را درSearchAdController
باSearchAdRequest
فراخوانی کنید تا یک درخواست تبلیغات ناهمزمان آغاز شود. برای ایجاد یک شیSearchAdRequest
build()
را درSearchAdRequest.Builder
فراخوانی کنید.
- این رابط را پیاده سازی کنید و آن را به سازنده
SearchAdController
ارسال کنید تا تماس های چند حالته را ثبت کند. - توجه: در صورت درخواست لغو شده، تماسهای
AdListener
فراخوانی نمیشوند (تماسی باloadAds
که قبل از حل شدن اولین تماس توسط تماس دیگری باloadAds
انجام شده است).
اجرای نمونه
مثال زیر ایجاد SearchAdController
در یک نمونه Activity
نشان می دهد.
// MainActivity.java implementation
// (MainActivity is a subclass of Activity)
SearchAdController adController;
// adContainer where we will place our ads in this example.
ViewGroup adContainer;
protected void onCreate(Bundle bundle){
super.onCreate(bundle);
adContainer = (ViewGroup) findViewById(...);
// Specify ad options (not required).
SearchAdOptions.Builder adOptionsBuilder = new SearchAdOptions.Builder();
adOptionsBuilder.setAdType(SearchAdOptions.AD_TYPE_TEXT);
adOptionsBuilder.setPrefetch(true);
adOptionsBuilder.setNumAdsRequested(3);
// Provide a callback to trigger when ads are loaded.
AdListener adListener = new AdListener() {
public void onAdLoaded() {
createAndShowAd();
}
};
// Instantiate the SearchAdController.
adController = new SearchAdController(this, "your-client-id", "your-style-id",
adOptionsBuilder.build(), adListener);
}
هنگامی که کاربر یک پرس و جو را آغاز می کند، یک SearchAdRequest
ایجاد کنید و loadAds
در SearchAdController
فراخوانی کنید تا یک درخواست تبلیغات ناهمزمان شروع شود.
// Create the request.
SearchAdRequest.Builder requestBuilder = new SearchAdRequest.Builder();
requestBuilder.setQuery("user query here");
// Load the ads.
adController.loadAds(requestBuilder.build());
پاسخ تماس onAdLoaded
خود را برای پر کردن یک آگهی بارگذاری شده در نمای تبلیغاتی پیاده سازی کنید.
private void createAndShowAd() {
// Create a new view that will contain the ad.
View adView = adController.createAdView();
// Attach the new view to the view hierarchy.
adContainer.addView(adView);
// Display the ad inside the adView. We need to provide an adKey to
// indicate which ad is to be displayed in the adView. In this example,
// since we only have one ad, we can provide any constant string. However,
// if you intend to display multiple ads, each ad you wish to display
// should be given a unique adKey of your choosing.
adController.populateAdView(adView, "demoAd");
}
اکنون یک تبلیغ مرتبط با درخواست داده شده در adView
ظاهر می شود.
بررسی خطاها
SearchAdController
به یک شی AdListener
با روش onAdLoaded()
نیاز دارد تا به برنامه شما اطلاع دهد که تبلیغات آماده نمایش هستند. همچنین باید متد onAdFailedToLoad()
را پیاده سازی کنید تا بتوانید خطاها را شناسایی و تصحیح کنید. به عنوان مثال، ممکن است از AdListener
زیر برای رفع اشکال پیاده سازی خود استفاده کنید:
AdListener adListener = new AdListener() {
public void onAdLoaded() {
// Called when an ad is loaded.
Toast.makeText(MainActivity.this, "Ad Loaded",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Loaded");
}
public void onAdLeftApplication() {
// Called when an ad leaves the application
// (to go to the browser for example).
Toast.makeText(MainActivity.this, "Ad Left Application",
Toast.LENGTH_SHORT).show();
Log.d(MainActivity.class.getSimpleName(), "Ad Left Application");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Called when an ad request failed.
Toast.makeText(MainActivity.this, "Ad Failed to Load: " + errorCode,
Toast.LENGTH_SHORT).show();
Log.e(MainActivity.class.getSimpleName(), "Ad Failed to Load: " +
errorCode);
}
};
ثابتهای مورد استفاده در متد onAdFailedToLoad()
در AdListener تعریف شدهاند.