راه‌اندازی تبلیغات ادیوری در اندروید

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

افزودن کتاب‌خانه‌ی ادیوری به پروژه

برای افزودن کتاب‌خانه‌ی ادیوری ابتدا باید تنظیمات مخزن maven زیر را به فایل build.gradle پروژه یا ماژولی که شامل تنظیمات repositories اپلیکیشن شما است اضافه کنید.

allprojects {
    repositories {
        google()
        /** The default repository for Android Studio projects */
        jcenter()
        /** The repository required for Adivery */
        maven {
            url 'https://dl.bintray.com/adivery/maven'
        }
    }
}

سپس کتاب‌خانه‌ی ادیوری را به فایل build.gradle ماژول اپلیکیشن خود اضافه کنید. توصیه می‌کنیم همیشه آخرین نسخه‌ی کتاب‌خانه را استفاده کنید تا از آخرین بهبود‌ها و امکانات بهره‌مند شوید.

dependencies {
    /**
     * Any other dependencies your module has are placed in this dependency configuration
     */
    implementation 'com.adivery:sdk:3.3.2'
}

کتابخانه‌ی ادیوری به طور خودکار تنظیمات AndroidManifest.xml و proguard-rules.pro را اضافه می‌کند و نیاز به ایجاد تغییری توسط شما نیست. تنها دسترسی‌ای که به اپلیکیشن شما اضافه خواهد شد، دسترسی استفاده از اینترنت است.

راه اندازی کتاب‌خانه‌ی ادیوری

ابتدا مطمئن شوید کتاب‌خانه‌ی ادیوری را در Activity خود import کرده‌اید.

import com.adivery.sdk.*;

سپس در متد onCreate دستور configure را به شکل زیر فرا بخوانید. مقدار APP_ID را با شناسه‌ی اپلیکیشن خود که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید.

@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);
    Adivery.configure(getApplication(), APP_ID);
    // ...
}

نمایش تبلیغ میان‌صفحه‌ای

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

برای فراخوانی requestInterstitialAd به عنوان ورودی اول Activity فعلی را بدهید. همچنین مقدار PLACEMENT_ID را با شناسه‌ی تبلیغ‌گاه مورد نظر که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید.

AdiveryInterstitialCallback callback = new AdiveryInterstitialCallback() {
    @Override
    public void onAdLoaded(AdiveryLoadedAd ad) {
        /** Store and use this ad object to show your ad when appropriate */
    }
};

Adivery.requestInterstitialAd(this, PLACEMENT_ID, callback);

پس از دریافت تبلیغ در متد onAdLoaded می‌توانید آن را ذخیره کنید و در زمان مناسب مشابه نمونه‌ی زیر نمایش دهید.

ad.show();

نمایش تبلیغ جایزه‌ای

نمایش تبلیغ جایزه‌ای مشابه نمایش تبلیغ میان‌صفحه‌ای است با این تفاوت که می‌توانید هنگامی که کاربر تبلیغ را مشاهده کرد از طریق متد onAdRewarded مطلع شوید و جایزه‌ی مورد نظر را به او بدهید. برای جزئیات بیشتر نحوه‌ی نمایش تبلیغ میان‌صفحه‌ای را مطالعه کنید.

AdiveryRewardedCallback callback = new AdiveryRewardedCallback() {
    @Override
    public void onAdLoaded(AdiveryLoadedAd ad) {
        /** Store and use this ad object to show your ad when appropriate */
    }

    @Override
    public void onAdRewarded() {
        /** User has watched the ad and can receive the reward */
    }
};

Adivery.requestRewardedAd(this, PLACEMENT_ID, callback);

نمایش تبلیغ بنری

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

برای فراخوانی requestBannerAd به عنوان ورودی اول Activity یا Context را بدهید. همچنین مقدار PLACEMENT_ID را با شناسه‌ی تبلیغ‌گاه مورد نظر که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید.

مقادیر ممکن برای BANNER_TYPE با توجه به نوع تبلیغ‌گاه تعریف شده در داشبورد ناشرین:

  • بنر سایز ۵۰×۳۲۰: BannerType.BANNER
  • بنر سایز ۱۰۰×۳۲۰: BannerType.LARGE_BANNER
  • بنر سایز ۲۵۰×۳۰۰: BannerType.MEDIUM_RECTANGLE
ViewGroup adContainer = findViewById(R.id.ad_container);

AdiveryBannerCallback callback = new AdiveryBannerCallback() {
    @Override
    public void onAdLoaded(View ad) {
        /** Add this ad object to whatever layout you have set up for this placement */
        adContainer.addView(ad);
    }
};

Adivery.requestBannerAd(this, PLACEMENT_ID, BANNER_TYPE, callback);

نمایش تبلیغ همسان

برای پیاده‌سازی تبلیغ همسان می‌توانید از کلاس AdiveryNativeAdView مشابه نمونه‌ی زیر استفاده کنید.

<com.adivery.sdk.AdiveryNativeAdView
  android:id="@+id/native_ad_view"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  app:adivery_native_ad_layout="@layout/ad_layout_example" />

مشخصه‌ی adivery_native_ad_layout نشان دهنده‌ی layout تبلیغ همسان شماست. یک نمونه از layout همسان را در زیر می‌بینید.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="300dp"
  android:layout_height="wrap_content"
  android:orientation="vertical">
  <ImageView
    android:id="@+id/adivery_image"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop" />
  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:padding="4dp">
    <Button
      android:id="@+id/adivery_call_to_action"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="4dp" />
    <TextView
      android:id="@+id/adivery_headline"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_margin="4dp"
      android:layout_weight="1" />
    <ImageView
      android:id="@id/adivery_icon"
      android:layout_width="36dp"
      android:layout_height="36dp"
      android:layout_margin="4dp" />
  </LinearLayout>
</LinearLayout>

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

  • المان TextView با شناسه‌ی @+id/adivery_headline که عنوان تبلیغ است.
  • المان TextView با شناسه‌ی @+id/adivery_description که توضیحات تبلیغ است.
  • المان TextView با شناسه‌ی @+id/adivery_advertiser که نام برند یا اپلیکیشن مورد تبلیغ است.
  • المان Button با شناسه‌ی @+id/adivery_call_to_action که دکمه‌ی فراخوان تبلیغ است.
  • المان ImageView با شناسه‌ی @+id/adivery_image که عکس سایز بزرگ تبلیغ است با نسبت ابعاد 16:9 و جهت افقی.
  • المان ImageView با شناسه‌ی @+id/adivery_icon که آیکون برند یا اپلیکیشن مورد تبلیغ است. این عکس در ابعاد کوچک و به شکل مربع خواهد بود. همچنین ممکن است بخش‌هایی از عکس transparent باشد.

پس از طراحی layout و اتصال آن به AdiveryNativeAdView به صورت زیر می‌توانید درخواست تبلیغ همسان را بدهید و نمایش دهید:

AdiveryNativeCallback callback = new AdiveryNativeCallback() {
    @Override
    public void onAdLoaded(AdiveryNativeAd ad) {
        AdiveryNativeAdView adView = view.findViewById(R.id.native_ad_view);
        adView.setNativeAd(ad);
    }
};

Adivery.requestNativeAd(this, PLACEMENT_ID, callback);

برای فراخوانی requestNativeAd به عنوان ورودی اول Context فعلی را بدهید. همچنین مقدار PLACEMENT_ID را با شناسه‌ی تبلیغ‌گاه مورد نظر که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید. در تابع onAdLoaded تبلیغ دریافت شده را در AdiveryNativeAdView مورد نظر نمایش دهید.

رفع مشکلات

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

Adivery.setLoggingEnabled(true);