1. خانه
  2. پیاده‌سازی تبلیغات پیش‌نمایشی (Pre-roll) در پروژه اندروید

پیاده‌سازی تبلیغات پیش‌نمایشی (Pre-roll) در پروژه اندروید

گام 1: تنظیمات اولیه پروژه

ابتدا تنظیمات اولیه پروژه را از لینک زیر مطالعه کرده و مراحل را انجام دهید:

گام 2: اضافه کردن کتابخانه Google IMA

در sdk تپسل برای نمایش تبلیغات پیش‌نمایشی در پلیرهای مختلف از کتابخانه Google IMA استفاده شده است. کدهای زیر را در قسمت dependencies موجود در فایل app/build.gradle قرار بدین :

compile 'com.google.ads.interactivemedia.v3:interactivemedia:3.8.7'
compile 'com.google.android.gms:play-services-ads:15.0.1'

 

گام 3: نمایش تبلیغ

ابتدا یک instance از کلاس TapsellVast بسازید :

TapsellVast tapsellVast = new TapsellVast(context, "fa");

ورودی اول تابع context برنامه شما می‌باشد. ورودی دوم زبان نمایش متون تبلیغ می‌باشد. برای فارسی از “fa” و برای انگلیسی “en” استفاده کنید.

زمانی که ویدیو اصلی (content) قرار است پخش شود ، قبل از پخش آن با تابع زیر تبلیغ را درخواست و پخش کنید :

tapsellVast.requestAds(videoAdPlayer, adUiContainer, adTagUrl, contentProgressProvider);

ورودی اول نوع ir.tapsell.sdk.vast.VideoAdPlayer می‌باشد که یک interface می‌باشد که برای کنترل کردن پلیر تبلیغ می‌باشد. نحوه ساختن آنرا در گام 5 توضیح می‌دهیم.

ورودی دوم از نوع ViewGroup می‌باشد که در آن View پلیر شما قرار دارد.

ورودی سوم از نوع String می‌باشد که در گام 4 نحوه دریافت آن توضیح داده شده است.

ورودی چهارم از نوع ir.tapsell.sdk.vast.ContentProgressProvider می‌باشد که یک interface می‌باشد که برای دریافت میزان پیشروی ویدیو می‌باشد. نحوه ساختن آنرا در گام 6 توضیح خواهیم داد.

گام 4: دریافت AdTagUrl

با اجرای تابع زیر، می‌توانید adTagUrl  را که در گام قبل از آن استفاده کردیم، دریافت کنید :

String vastUrl = TapsellVast.getVastUrl(context, zoneId, prerollType, vastVersion);

هر درخواست شامل یک ورودی zoneId است که مشخص کننده تبلیغ‌گاه (zone) مربوط به پخش تبلیغ است. برای استفاده از ناحیه پیش‌فرض می‌توانید از مقدار null استفاده نمایید. اطلاعات بیشتر درباره zone را می‌توانید از تیم فنی تپسل دریافت کنید. ورودی‌های prerollType و  vastVersion از نوع int بوده و به ترتیب مشخص کننده‌ی نوع تبلیغ (کوتاه/بلند) و نسخه vast ( معمولا ۲ یا ۳) است. مقادیر قابل قبول برای این دو متغیر در جداول ۱ و ۲ آمده است.

جدول ۱ مقادیر مختلف پارامتر prerollType در درخواست آدرس تبلیغ پیش‌نمایشی
مقدار توضیحات
PREROLL_TYPE_SHORT نمایش ویدئو تبلیغاتی کوتاه (5 ثانیه)
PREROLL_TYPE_LONG نمایش ویدئو تبلیغاتی متوسط (30 ثانیه)
جدول ۲ مقادیر مختلف پارامتر vastVersion در درخواست آدرس تبلیغ پیش‌نمایشی
مقدار توضیحات
VAST_VERSION_2 استفاده از نسخه 2 VAST
VAST_VERSION_3 استفاده از نسخه 3 VAST

گام 5: ساختن آبجکت VideoAdPlayer

یکی از ورودی‌های معرفی شده در گام ۳ ، آبجکت VideoAdPlayer می‌باشد. ویدیو پلیر شما باید توابع این interface را پیاده کند و با توجه به هر method عملیات لازم را انجام دهد. توضیحات توابعی که باید پیاده سازی کنید در جدول زیر آمده است :

جدول ۳ توابع VideoAdPlayer که باید پیاده سازی شوند
نام تابع توضیحات
()void playAd شروع پخش تبلیغ ویدیویی که در loadAd بارگذاری شده بود
(String url)void loadAd بارگذاری ویدیو تبلیغ موحود در لینک url
()void stopAd توقف پخش تبلیغی که در حال پخش است
()void pauseAd مکث پخش تبلیغی که در حال پخش است
()void resumeAd همان playAd می‌باشد!
void addCallback(VideoAdPlayerCallback callback) اضافه کردن کالبک (این کالبک ها باید توسط شما صدا زده شود)
void removeCallback(VideoAdPlayerCallback callback) حذف کالبک (این کالبک ها باید توسط شما صدا زده شود)
VideoProgressUpdate getAdProgress() میزان پیشروی ویدیو و طول ویدیو را در قالب یک آبجکت VideoAdProgressUpdate برگردانید.

گام 6: ساختن آبجکت ContentProgressProvider

یکی از ورودی‌های معرفی شده در گام ۳ ، آبجکت ContentProgressProvider می‌باشد. ویدیو پلیر شما باید توابع این interface را پیاده کند و با توجه به هر method عملیات لازم را انجام دهد. توضیحات توابعی که باید پیاده سازی کنید در جدول زیر آمده است :

جدول۴ توابع ContentProgressProvider که باید پیاده سازی شوند
نام تابع توضیحات
VideoProgressUpdate getContentProgress() میزان پیشروی ویدیو و طول ویدیو را در قالب یک آبجکت VideoAdProgressUpdate برگردانید.

گام 7: اضافه کردن کالبک

برای اطلاع از رویداد های دریافت تبلیغ پیش‌نمایشی از TapellVastAdsListener استفاده کنید. تابع setTapsellVastAdsListener را از آبجکت TapesellVast صدا کنید. به صورت زیر :

tapsellVast.setTapsellVastAdsListener(new TapsellVastAdsListener() {
    @Override
    public void onAdError(String message) {
        // An error occurred on ads request 
    }

    @Override
    public void onAdEvent(AdEvent adEvent) {
       
        switch (adEvent) {
            case CONTENT_PAUSE_REQUESTED:
                // CONTENT_PAUSE_REQUESTED is fired immediately before
                // a video ad is played.
                break;
            case CONTENT_RESUME_REQUESTED:
                // CONTENT_RESUME_REQUESTED is fired when the ad is
                // completed and you should start playing your content.
                break;
            case PAUSED:
                // Fired when ad is paused
                break;
            case RESUMED:
                // Fired when ad is resumed
                break;
            default:
                break;
        }
    }
});

گام 8: صدا کردن چند تابع دیگر

  • زمانی که پخش ویدیو اصلی شما در ویدیو پلیر تمام شد، این تابع را فراخوانی کنید :
tapsellVast.contentComplete();
  • اگر به هر دلیلی ویدیو پلیر شما اقدام به pause کرد (مثلا در onPause و onResume اکتیویتی شما) ، لطفا توابع زیر را به ترتیب برای pause و resume فراخوانی کنید :
// call after pausing video player when playing ad
tapsellVast.pause();
// call after resuming player to play ad
tapsellVast.resume();

گام نهایی: اضافه کردن قوانین Proguard

قوانین پروگارد لازم برای sdk تپسل را در لینک زیر ببینید و در فایل پروگارد مربوط به پروژتون قرار بدین :

نمونه پیاده‌سازی

یک نمونه پیاده‌سازی تبلیعات پیش‌نمایشی تپسل با ساده‌ترین پلیر اندروید، در Android Studio در repository زیر آمده است. ( پیاده‌سازی ویدیو پیش‌نمایشی در پکیج vast قرار دارد)

 

 

لطفا نظرات خود درباره محتوی مستندات و مشکلاتی که در پیاده‌سازی SDK تپسل با آنها مواجه شدید را به ما اطلاع دهید.

مرحله قبل: پیاده‌سازی تبلیغات ویدئویی (Interstitial/Rewarded Video) و بنری تمام صفحه (Interstitial Banner) در پروژه اندروید
مرحله بعد: پیاده‌سازی تبلیغات ویدئویی هم‌نما (Native Video) در پروژه اندروید

آیا این این آموزش مفید بود؟