本文用于纪念因AndroidX浪费的一天
无废话,见流程
事前准备:前往https://apps.admob.com注册google广告,获得admob ID,如果你懒得准备,可以直接使用文中的ID,那是Google广告的公共测试ID,仅供测试
1 打开pubspec.yaml导入
dependencies:
firebase_admob: ^0.9.0+1
不要忘记get
2 打开项目下的android工程,找到AndroidManifest.xml,添加
//重点!要作为application的属性添加,位置错了无效!
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713"/>
<meta-data
android:name="com.google.android.gms.ads.AD_MANAGER_APP"
android:value="true"/>
3 保证处于可以更新AS的网络状态。打开位于flutter项目下的android工程,在android工程界面按顺序点击 Build=>ReBuild Project。如果出现莫名其妙,不直观的错误,尤其是v4包冲突,那么可能是因为没有转换成AdnroidX项目造成的,备份后尝试下列操作:
向gradle.properties添加以下内容:
android.enableJetifier=true
android.useAndroidX=true
如果上面的操作没有解决问题,点击菜单Refactor,如果有Migrate to AndroidX选项则点击
可能会要求升级到gradle5.1.1,进行升级
反复 Build=>ReBuild Project至无错误
4 回到flutter项目中,进行初始化
FirebaseAdMob.instance
.initialize(appId: "你的ID");
并使用虚拟机或真机测试。测试可能会出现闪退,并且无任何错误信息,需要切换至logcat中查看错误信息
5 例:使用激励广告rewarded video
RewardedVideoAd.instance.listener =
(RewardedVideoAdEvent event,
{String rewardType, int rewardAmount}) {
switch (event) {
case RewardedVideoAdEvent.loaded:
RewardedVideoAd.instance.show();
break;
case RewardedVideoAdEvent.failedToLoad:
//读取失败!
break;
case RewardedVideoAdEvent.opened:
break;
case RewardedVideoAdEvent.leftApplication:
break;
case RewardedVideoAdEvent.closed:
break;
case RewardedVideoAdEvent.rewarded:
print("*********奖励 $rewardAmount");
break;
case RewardedVideoAdEvent.started:
break;
case RewardedVideoAdEvent.completed:
print("*********播放结束");
break;
}
};
MobileAdTargetingInfo targetingInfo =
MobileAdTargetingInfo(
keywords: <String>[
'leisure',
'game',
'relaxation',
'puzzle'
],
contentUrl: 'https://flutter.io',
childDirected: false,
testDevices: <String>[重要!这里写测试设备码],
// Android emulators are considered test devices
nonPersonalizedAds: true);
RewardedVideoAd.instance.load(
adUnitId: "ca-app-pub-3940256099942544/5224354917",
targetingInfo: targetingInfo);
6 使用过程中会提示没有google账户,按照流程安装firebase和google账户
7 ad failed to load : 0
目前来看,引发这个问题大部分是因为使用新账户时广告系统还未建立完善,过几个小时才会好起来,不过也有过了一天也不行,并且测试账户也没广告的状况,这个时候需要登录admob网站,查看首页是否要求输入账户信息,输入后过几个小时就可以正常了,建议使用测试设备进行测试
其他样例以及更详细的介绍请前往https://pub.dev/packages/firebase_admob