1-) FLUTTER - Google Reklamları Banner Geçiş Reklamı vs AdMob Eklemek
flutter pub add google_mobile_ads
yenisinde bu paketi kullan ama bu makalede yok |
kaynak : https://pub.dev/packages/admob_flutter/example
implementation 'com.google.android.gms:play-services-ads:19.4.0'
veya
implementation 'com.google.android.gms:play-services-ads:22.0.0'
EKRAN GÖRÜNTÜSÜ
*** İlk olarak uygulamanızı yayınlayın. sonra buradan uygulamanızı ekleyin link : https://apps.admob.com/ ***
*** ardından reklam birimi oluşturun . Örnek olarak Banner ile başlayalım... Size 2 tane id vericek...***
test manifest id : ca-app-pub-3940256099942544~3347511713
test banner id : ca-app-pub-3940256099942544/6300978111
0-) Terminale
flutter pub add admob_flutter yaz ve entere bas ardından flutter pub get yaz
1-) AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" android:required="false" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
</application>
2-) main.dart
void main() {
WidgetsFlutterBinding.ensureInitialized();
// Initialize without device test ids
Admob.initialize();
runApp(MyApp());
}
3-) digerwidget.dart
GlobalKey<ScaffoldState> scaffoldState = GlobalKey();
late AdmobBannerSize bannerSize;
late AdmobInterstitial interstitialAd;
late AdmobReward rewardAd;
@override
void initState() {
super.initState();
reklamBaslat();
}
void reklamBaslat() {
bannerSize = AdmobBannerSize.BANNER;
interstitialAd = AdmobInterstitial(
adUnitId: getInterstitialAdUnitId()!,
listener: (AdmobAdEvent event, Map<String, dynamic>? args) {
if (event == AdmobAdEvent.closed) interstitialAd.load();
handleEvent(event, args!, 'Interstitial');
},
);
rewardAd = AdmobReward(
adUnitId: getRewardBasedVideoAdUnitId()!,
listener: (AdmobAdEvent event, Map<String, dynamic>? args) {
if (event == AdmobAdEvent.closed) rewardAd.load();
handleEvent(event, args!, 'Reward');
},
);
interstitialAd.load();
rewardAd.load();
// başlatmak için show kullan
final isLoaded = await interstitialAd.isLoaded;
if (isLoaded ?? false) {
interstitialAd.show();
}
}
String getBannerAdUnitId() {
if (Platform.isIOS) {
return 'ca-app-pub-3940256099942544/2934735716';
} else if (Platform.isAndroid) {
return 'ca-app-pub-3940256099942544/6300978111'; // sadece bunu yaptım
}
return "";
}
String getInterstitialAdUnitId() { // geçiş tabanlı reklam
if (Platform.isIOS) {
return 'ca-app-pub-3940256099942544/4411468910';
} else if (Platform.isAndroid) {
return 'ca-app-pub-3940256099942544/1033173712';
}
return "";
}
String getRewardBasedVideoAdUnitId() { // ödül tabanlı reklam
if (Platform.isIOS) {
return 'ca-app-pub-3940256099942544/1712485313';
} else if (Platform.isAndroid) {
return 'ca-app-pub-3940256099942544/5224354917';
}
return null;
}
void showSnackBar(String content) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(content),
duration: Duration(milliseconds: 1500),
),
);
}
void handleEvent(
AdmobAdEvent event, Map<String, dynamic> args, String adType) {
switch (event) {
case AdmobAdEvent.loaded:
showSnackBar('New Admob $adType Ad loaded!');
break;
case AdmobAdEvent.opened:
showSnackBar('Admob $adType Ad opened!');
break;
case AdmobAdEvent.closed:
showSnackBar('Admob $adType Ad closed!');
break;
case AdmobAdEvent.failedToLoad:
showSnackBar('Admob $adType failed to load. :(');
break;
case AdmobAdEvent.rewarded:
showDialog(
context: context,
builder: (BuildContext context) {
return WillPopScope(
onWillPop: () async {
ScaffoldMessenger.of(context).hideCurrentSnackBar();
return true;
},
child: AlertDialog(
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Text('Reward callback fired. Thanks Andrew!'),
Text('Type: ${args['type']}'),
Text('Amount: ${args['amount']}'),
],
),
),
);
},
);
break;
default:
}
}
4-) BANNER(SABİT ALTTA KUTUCUK ŞEKLİNDE) KULLANIMI
Container(
child: AdmobBanner(
adUnitId: getBannerAdUnitId(),
adSize: bannerSize,
listener: (AdmobAdEvent event, Map<String, dynamic> args) {
handleEvent(event, args, 'Banner');
},
onBannerCreated: (AdmobBannerController controller) {
// Dispose is called automatically for you when Flutter removes the banner from the widget tree.
// Normally you don't need to worry about disposing this yourself, it's handled.
// If you need direct access to dispose, this is your guy!
// controller.dispose();
},
),
),
4.1-) BANNER(SABİT ALTTA KUTUCUK ŞEKLİNDE) KULLANIMI(BU EN İYİSİ)
return SafeArea(
), ],
// yukarıdaki gici column içine alınır scoffold. aşağıdaki çağrılır
Widget AdContainer() {
|
5-) interstitialAd GEÇİŞ REKLAM KULLANIMI
child: TextButton(
onPressed: () async {
final isLoaded = await interstitialAd.isLoaded;
if (isLoaded ?? false) {
interstitialAd.show();
} else {
showSnackBar(
'Interstitial ad is still loading...');
}
},
child: Text(
'Show Interstitial',
style: TextStyle(color: Colors.white),
),
),
child: TextButton(
onPressed: () async {
if (await rewardAd.isLoaded) {
rewardAd.show();
} else {
showSnackBar('Reward ad is still loading...');
}
},
child: Text(
'Show Reward',
style: TextStyle(color: Colors.white),
),
),
*************DİĞER BİLGİLER*************
GERÇEK REKLAM BİLGİLERİ
AndroidManifest.xml
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-4274612173345332~6322206475"/>
ca-app-pub-4274612173345332/7659300882
TEST REKLAM BİLGİLERİ
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
ca-app-pub-3940256099942544/6300978111
*************İOS İÇİN BUNLARI EKLE *************
info.plist
<key>GADApplicationIdentifier</key> <string>ca-app-pub-4274612173345332~1212687274</string> <key>io.flutter.embedded_views_preview</key> <true/> <key>NSUserTrackingUsageDescription</key> <string>This identifier will be used to deliver personalized ads to you.</string> |
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
Admob.initialize();
await Admob.requestTrackingAuthorization();
İZİN İSTEMEK İÇİN : https://pub.dev/packages/app_tracking_transparency YANİ EKLE flutter pub add app_tracking_transparency
if(Platform.isIOS){
String _authStatus = 'Unknown';
|
2-) APP STOREDA BUNLARI AÇMAN LAZIM
https://www.youtube.com/watch?v=ExwHuTt2vWQ&ab_channel=TihomirRAdeff