پیادهسازی تبلیغات ویدئویی (Interstitial/Rewarded Video) و بنری تمام صفحه (Interstitial Banner) در پروژه Qt
پیادهسازی تبلیغات بنری همنما (Native Banner) در پروژه Qt
پیادهسازی تبلیغات ویدیویی همنما (Native Video) در پروژه Qt
پیادهسازی تبلیغات بنری استاندارد در پروژه Qt
پروژه نمونه
QT += gui gui-privateیک نمونه پیادهسازی پلاگین Qt تپسل در repository زیر آمده است.ios: SOURCES +=
TapsellSDKAndHelpers/tapsellIos.cpp \ios: HEADERS +=
TapsellSDKAndHelpers/tapsellIos.hios: OBJECTIVE_SOURCES +=
TapsellSDKAndHelpers/TSTapsell.mmios: OBJECTIVE_HEADERS +=
TapsellSDKAndHelpers/TSTapsell.hQMAKE_INFO_PLIST = TapsellSDKAndHelpers/info.plist
android: QT += androidextras
android: SOURCES +=
TapsellSDKAndHelpers/tapsellAndroid.cppandroid: HEADERS +=
TapsellSDKAndHelpers/tapsellAndroid.handroid: DISTFILES +=
android/AndroidManifest.xml
android/gradle/wrapper/gradle-wrapper.jar
android/gradlew
android/res/values/libs.xml
android/build.gradle
android/gradle/wrapper/gradle-wrapper.properties
android/gradlew.bat
android/src/ir/tapsell/sdk/Tapsell.javaANDROID_PACKAGE_SOURCE_DIR = $$PWD/android
وارد قسمت تنظیمات پروژه شوید :
در قسمت Build Android APK گزینه Create Templates را انتخاب کنید :
سپس گزینه Finish را انتخاب کنید ، با این کار پوشه android باید ساخته شود :
android/libs از محل پروژه خود ، کپی کنید.
فایل Tapsell.java موجود در پلاگین تپسل را در پوشهandroid/src/ir/tapsell/sdk از محل پروژه خود ، کپی کنید.
فایل AndroidManifest.xml پروژه اندروید (واقع در پوشهandroid از محل پروژه) را باز کرده و تکه کد زیر را درون تگ <application>...</application> قرار دهید :
// AndroidManifest.xml <activity android:name="ir.tapsell.sdk.TapsellAdActivity" android:label="TapsellAdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:windowSoftInputMode="adjustPan"> </activity>همچنین مطمئن شوید persmission های زیر را دارد :
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
در قسمت Build Steps گزینه Add Build Step را انتخاب نموده و پس از آن گزینه Custom Process Step را انتخاب کنید. دقت کنید که این Build Step باید در بین Build Step های qmake و Make باشد.(شما می توانید ترتیب این Build Step ها را مشخص کنید)
حال در قسمت Command کد زیر را وارد کنید:
python
حال در قسمت Arguments کد زیر را وارد کنید:
%{sourceDir}/TapsellSDKAndHelpers/embed.py %{buildDir}/<YOUR_PROJECT_NAME>.xcodeproj %{sourceDir}/TapsellSDKAndHelpers/TapsellSDKv3.framework
در قطعه کد بالا بجای <YOUR_PROJECT_NAME> اسم پروژه خود را قرار دهید و توجه کنید که شما باید پایتون را به صورت نصب شده بر روی سیستم خود داشته باشید.
در پایان Build Steps پروژه شما باید وضعیتی شبیه به تصویر مقابل داشته باشد:

پیادهسازی تبلیغات ویدئویی (Interstitial/Rewarded Video) و بنری تمام صفحه (Interstitial Banner) در پروژه Qt
#include "tapsell.h"برای مقداردهی اولیه ، تابع زیر را با ورودی کلید اپ خود صدا بزنید. ( دقت کنید که قبل از هر کاری این تابع را صدا بزنید در غیر این صورت تابعهای دیگر کار نخواهند کرد)
Tapsell::initialize(appKey);ورودی appKey کلید تپسلی است که در گام قبل از پنل تپسل دریافت کردید. نمایش یک تبلیغ ویدئویی در اپلیکیشن به دو صورت ممکن است صورت پذیرد. یک روش، نمایش تبلیغ بصورت stream می باشد. در این حالت، همزمان که کاربر درحال مشاهده بخشی از تبلیغ است، ادامه آن از اینترنت لود می گردد. ممکن است به دلیل کندی سرعت اینترنت، در این حالت کاربر با مکث های متعددی در هنگام دریافت و مشاهده تبلیغ مواجه شود. برای اینکه کاربر در هنگام نمایش تبلیغ منتظر نماند و تجربه کاربر در استفاده از اپلیکیشن بهبود یابد،روش دیگری نیز در SDK تپسل تعبیه شده است که در آن ابتدا فایل ویدئوی تبلیغاتی بطور کامل بارگذاری شده و سپس تبلیغ نمایش داده می شود. همچنین در تپسل، تبلیغ می تواند در ناحیههای مختلفی از برنامه شما (مانند فروشگاه، انتهای هر مرحله، ابتدای مرحله جهت دریافت امتیاز دوبرابر، دریافت بنزین/لایف و ...) پخش شود. در تپسل به این ناحیهها zone گفته می شود. ناحیههای هر اپلیکیشن در پنل تپسل تعریف می شوند.
با اجرای تابع زیر، می توانید یک درخواست تبلیغ به تپسل ارسال کرده و یک تبلیغ دریافت نمایید:
Tapsell::requestAd(QString zoneId, bool isCached, std::function<void(QString)> onAdAvailable, std::function<void()> onNoAdAvailable, std::function<void()> onNoNetwork, std::function<void(QString)> onError, std::function<void(QString)> onExpiring);
هر درخواست شامل یک ورودی zoneId است که باید آن را از داشبورد تپسل در صفحه اپلیکیشن خود دریافت کنید. دقت کنید که برای این پارامتر نباید از مقدار null استفاده کنید. ورودی cached یک متغیر bool (با مقدار True/False) می باشد که نشان می دهد که آیا تبلیغ باید ابتدا دانلود شده و سپس به کاربر نشان داده شود یا خیر.
تنها در ناحیههایی که کاربر با احتمال زیادی پس از باز کردن اپلیکیشن تبلیغ آن را مشاهده میکند، از تبلیغ Cached استفاده کنید. جهت توضیحات بیشتر درباره روش انتخاب متد دریافت مناسب، اینجا را مطالعه کنید.
نتیجه درخواست تبلیغ به تابع های callback ورودی بازگردانده می شود. یک نمونه پیاده سازی تابع های callback لازم در ادامه آمده است.
در onAdAvailable شناسه یک تبلیغ به شما برگردانده می شود که می بایست جهت نمایش تبلیغ آن را ذخیره نمایید. جهت توضیحات بیشتر به قطعه کد پیاده سازی اکشن که در ادامه آمده است توجه نمایید. (در این مثال از lambda expression استفاده کردیم. از std::function هم می توانید استفاده کنید)
Tapsell::requestAd(ZONE_ID, false, [](QString adId) { qDebug() << "onAdAvailable"; AD_ID = adId; }, []() { qDebug() << "onNoAdAvailable"; }, []() { qDebug() << "onNoNetwork"; }, [](QString error) { qDebug() << "onError: " << error; }, [](QString adId) { qDebug() << "onExpiring " << adId; });
توضیحات اکشن های مختلف و شرایط اجرا شدن آن ها در جدول ۱ آمده است.
| تابع | توضیحات (زمان اجرا) |
|---|---|
| onError(QString error) | هنگامی که هر نوع خطایی در پروسهی دریافت تبلیغ بوجود بیاید |
| onAdAvailable(QString adId) | زمانی که تبلیغ دریافت شده و آمادهی نمایش باشد. |
| onNoAdAvailable() | در صورتی که تبلیغی برای نمایش وجود نداشته باشد. |
| onNoNetwork() | زمانی که دسترسی به شبکه موجود نباشد. |
| onExpiring(QString adId) | زمانی که تبلیغ منقضی شود. هر تبلیغ مدت زمان مشخصی معتبر است و در صورتی که تا قبل از آن نمایش داده نشود منقضی شده و دیگر قابل نمایش نخواهد بود. |
Tapsell::showAd(QString zoneId, QString adId, bool back_disabled, bool immersive_mode, int rotation_mode, bool showExitDialog); Tapsell::showAd(QString zoneId, QString adId, bool back_disabled, bool immersive_mode, int rotation_mode, bool showExitDialog, std::function<void(QString)> onOpened, std::function<void(QString)> onClosed);
Tapsell::showAd(ZONE_ID, AD_ID, false, false, ROTATION_UNLOCKED, true, [](QString adId) { qDebug() << "onOpened"; }, [](QString adId) { qDebug() << "onClosed"; });دو ورودی onOpened و onClosed از جنس تابع هستند و این callback ها زمان اجرا و پایان نمایش تبلیغ صدا زده می شوند.
| متغیر (نوع) | توضیحات |
|---|---|
| back_disabled (bool) |
در هنگام پخش تبلیغ دکمهی بازگشت گوشی فعال باشد یا خیر |
| immersive_mode(bool) |
فعالسازی حالت Immersive در هنگام پخش تبلیغ (فقط در اندروید) |
| rotation_mode (int) |
تعیین وضعیت گوشی در هنگام پخش تبلیغ به یکی از سه حالت:
ROTATION_LOCKED_PORTRAIT
ROTATION_LOCKED_LANDSCAPE
ROTATION_UNLOCKED
ROTATION_LOCKED_REVERSED_PORTRAIT
ROTATION_LOCKED_REVERSED_LANDSCAPE |
| showExitDialog(bool) |
نمایش دیالوگ اخطار در هنگام بازگشت از تبلیغات جایزهدار |
Tapsell::showAd(ZONE_ID, AD_ID, false, false, ROTATION_UNLOCKED, true, [](QString adId) { qDebug() << "onOpened"; }, [](QString adId) { qDebug() << "onClosed"; });در صورتیکه در اپلیکیشن خود از تبلیغات جایزهدار استفاده میکنید، جهت دریافت نتیجه نمایش تبلیغها، باید یک اکشن مطابق زیر به SDK تپسل بدهید.
Tapsell::setRewardListener([](QString zoneId, QString adId, bool completed, bool rewarded) { qDebug() << "Reward! " << completed << ", " << rewarded; });پس از نمایش تبلیغ، اکشن onAdShowFinished اجرا میشود و نتیجه نمایش تبلیغ بازگردانده میشود. درصورتیکه تبلیغ نمایش داده شده جایزهدار باشد، متغیر rewarded در این شی دارای مقدار true خواهد بود. همچنین درصورتیکه تبلیغ تا انتها دیده شود، متغیر completed در ای شین دارای مقدار true خواهد بود. در صورتی که تبلیغ جایزهدار باشد و مشاهده ویدئو تا انتها انجام شده باشد، باید جایزه درون برنامه (سکه، اعتبار، بنزین یا ...) را به کاربر بدهید. یک نمونه پیادهسازی SDK تپسل در Qt در repository زیر آمده است. لطفا نظرات خود درباره محتوای این فایل و مشکلاتی که در پیادهسازی SDK تپسل با آنها مواجه شدید را به ما اطلاع دهید.
#include "tapsell.h"برای مقداردهی اولیه ، تابع زیر را با ورودی کلید اپ خود صدا بزنید.
Tapsell::initialize(appKey);ورودی appKey کلید تپسلی است که در گام قبل از پنل تپسل دریافت کردید. در تبلیغات همنما، شما قادر هستید ویژگیهای ظاهری هر یک از اجزای تبلیغ (اندازه، محل قرارگیری، رنگ فونت و…) را بصورتی که هماهنگ با محتوای اپلیکیشن شما باشد تعیین کنید.
برای این منظور، شما یک درخواست تبلیغ به SDK تپسل ارسال می کنید، محتوای یک تبلیغ همنمای ویدیویی را دریافت کنید و آن را به نحوه مورد نظر خود نمایش دهید.
جهت ارسال درخواست تبلیغ همنما، از تابع زیر استفاده کنید.
Tapsell::requestNativeBannerAd(QString zoneId,std::function<void(QString,QString,QString,QString,QString,QString)> onAdAvailable, std::function<void()> onNoAdAvailable,std::function<void()> onNoNetwork,std::function<void(QString)> onError);
ورودی zoneId، شناسه تبلیغگاه از نوع ویدیویی همنما است که باید آن را از داشبورد تپسل دریافت کنید.
نتیجه درخواست تبلیغ به تابعهای ورودی بازگردانده می شود. یک نمونه پیاده سازی تابعهای لازم در ادامه آمده است.
Tapsell::requestNativeVideoAd(NATIVE_VIDEO_ZONEID, [&](QString adId,QString title, QString description, QString iconUrl, QString ctaText, QString videoUrl) { qDebug() << "onNativeVideoAdAvailable"; }, [](){ qDebug() << "onNoNativeVideoAdAvailable"; }, [](){ qDebug() << "onNoNetwork"; }, [](QString error) { qDebug() << "onError: " << error; });برای نمایش تبلیغ، میبایست از داده های موجود در تابع onAdAvailable استفاده کنید. توضیح این داده ها در جدول زیر آمده است :
| مشخصه | توضیحات |
|---|---|
| adId | شناسه تبلیغ |
| title | عنوان تبلیغ |
| description | توضیحات تبلیغ |
| ctaText | متن دعوت کننده از کاربر به کلیک/نصب |
| videoUrl | لینک ویدیو تبلیغ |
| iconUrl | لینک آیکون تبلیغ |
زمانی که پخش ویدیو تمام شد، باید تابع onNativeVideoAdShown از کلاس Tapsell را فراخوانی کنید ؛ این تابع یک رشته به عنوان ورودی میگیرد که شناسه مربوط به تبلیغی است که نمایش داده شده است.
Tapsell::onNativeVideoAdShown(adId);برای باز کردن تبلیغ، هنگامی که کاربر روی آن کلیک میکند، از تابع زیر استفاده کنید. این تابع یک رشته به عنوان ورودی میگیرد که شناسه مربوط به تبلیغی است که روی آن کلیک شده است.
Tapsell::onNativeVideoAdClicked(adId);یک نمونه پیادهسازی SDK تپسل در Qt در repository زیر آمده است. لطفا نظرات خود درباره محتوای این فایل و مشکلاتی که در پیادهسازی SDK تپسل با آنها مواجه شدید را به ما اطلاع دهید.

