رفتن به مطلب اصلی
Version: 4.x.x

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

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

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

برای افزودن کتاب‌خانه‌ی ادیوری ابتدا باید قطعه کد زیر را در فایل pubspecs.yaml پروژه خود اضافه کنید.

dependencies:
adivery: ^4.0.3

سپس با اجرای دستور زیر کتابخانه های پروژه خود را بروزرسانی کنید.

$ flutter pub get

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

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

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

import 'package:adivery/adivery.dart';
import 'package:adivery/adivery_ads.dart';

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

void initState() {
super.initState();
AdiveryPlugin.initialize(APP_ID);
}

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

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

برای فراخوانی prepareInterstitialAd ، PLACEMENT_ID را با کلید تبلیغ‌گاه که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید.

InterstitialAd(PLACEMENT_ID);

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

_showInterstitial() {
AdiveryPlugin.isLoaded(PLACEMENT_ID)
.then((isLoaded) => showPlacement(isLoaded, placementId));
}
void showPlacement(bool isLoaded, String placementId) {
if (isLoaded) {
AdiveryPlugin.show(placementId);
}
}

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

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

AdiveryPlugin.prepareRewardedAd(PLACEMENT_ID);

برای نمایش تبلیغ جایزه‌ای مانند کد زیر عمل کنید

_showRewarded() {
AdiveryPlugin.isLoaded(PLACEMENT_ID)
.then((isLoaded) => showPlacement(isLoaded, PLACEMENT_ID));
}
void showPlacement(bool isLoaded, String placementId) {
if (isLoaded) {
AdiveryPlugin.show(placementId);
}
}

برای اطلاع از دریافت جایزه می‌توانید از listener ادیوری استفاده کنید.

AdiveryPlugin.addListener(
onError: onError,
onRewardedClosed: onRewardedClosed,
);
void onRewardedClosed(String placementId, bool isRewardedd){
if (isRewarded){
setState(()=> {
// در اینجا جایزه را به کاربر بدهید
})
}
}

اطلاع از وضعیت تبلیغ میان‌صفحه‌ای و جایزه‌ای#

برای اطلاع از وضعیت تبلیغ‌های میان‌صفحه‌ای و جایزه‌ای می‌توانید از دستور addListener استفاده کنید.

AdiveryPlugin.addListener(
onError: onError,
onInterstitialLoaded: onInterstitialLoaded,
onRewardedClosed: onRewardedClosed,
onRewardedLoaded: onRewardedLoaded,
// دیگر توابع را در صورت نیاز در اینجا قرار دهید.
);
void onRewardedLoaded(String placementId){
print("rewarded ad loaded");
}
void onInterstitialLoaded(String placement) {
print("interstitial loaded");
}
void onRewardedClosed(String placement, bool isRewarded) {
print("ad rewarded: " + isRewarded.toString());
if (isRewarded){
}
}
void onError(String placement, String error) {
print("onError" + error);
}

در تابع فوق می‌توانید پارامتر های زیر را که همگی اختیاری هستند را ورودی بدهید.

  • onInterstitialLoaded: (placementId) => {}
  • onInterstitialClicked: (placementId) => {}
  • onInterstitialShown: (placementId) => {}
  • onInterstitialClosed: (placementId) => {}
  • onRewardedLoaded: (placementId) => {}
  • onRewardedClicked: (placementId) => {}
  • onRewardedShown: (placementId) => {}
  • onRewardedClosed :(placementId, isRewarded) => {}
  • onError: (placementId, reason) => {}

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

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

برای ایجاد تبلیغ بنری مقدار PLACEMENT_ID را با کلید تبلیغ‌گاه که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید.

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

  • بنر سایز ۵۰×۳۲۰: BannerAdSize.BANNER
  • بنر سایز ۱۰۰×۳۲۰: BannerAdSize.LARGE_BANNER
  • بنر سایز ۲۵۰×۳۰۰: BannerAdSize.MEDIUM_RECTANGLE
BannerAd(PLACEMENT_ID,BANNER_TYPE,
onAdLoaded: (ad) {
},
onAdClicked: (ad) {
},
)

تبلیغ بنری در فلاتر از جنس Widget است.

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

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

void _loadNativeAd(){
NativeAd nativeAd = NativeAd(PLACEMENT_ID,
onAdLoaded: _onNativeAdLoaded
);
nativeaAd.loadAd();
}
void _onNativeAdLoaded(){
setState(() {});
}

برای ایجاد NativeAd مقدار PLACEMENT_ID را با کلید تبلیغ‌گاه که از داشبورد ناشرین دریافت می‌کنید جایگزین کنید. در تابع onAdLoaded تبلیغ بطور کامل دریافت شده و می‌توانید ظاهر برنامه را بروزرسانی کنید.

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

Widget _nativeAd() {
if (nativeAd != null && nativeAd.isLoaded) {
return Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.end,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Flexible(
flex: 2,
child: Column(children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
Flexible(
flex: 1,
child: RaisedButton(
onPressed: () {
nativeAd.recordClick();
},
child: Text(nativeAd.callToAction),
),
),
Flexible(
flex: 2,
child: Text(
nativeAd.headline,
style: TextStyle(
color: Colors.black,
fontWeight: FontWeight.bold,
fontSize: 16),
textAlign: TextAlign.end,
),
)
],
),
Text(
nativeAd.description,
textAlign: TextAlign.end,
)
]),
),
Flexible(
flex: 1,
fit: FlexFit.loose,
child: Column(
children: <Widget>[
nativeAd.icon,
Text(nativeAd.advertiser)
],
),
),
]),
nativeAd.image,
],
);
} else {
return Container();
}
}

دقت داشته باشید لازم است تا در هنگام کلیک کاربر بر روی گزینه CallToAction دستور زیر را فراخوانی کنید تا کلیک کاربر در سیستم ادیوری ثبت شود.

nativeAd.recordClick();