感谢大佬提供这么🐮的插件,传送门https://github.dev/FlutterAds/flutter_qq_ads
安装依赖
flutter_qq_ads: ^2.5.0
依赖安装后,尝试运行,如果出现了各种错误,按以下文档对安卓和ios项目做一点简单的配置修改
android
修改android/app/build.gradle
- compileSdkVersion
- minSdkVersion
- targetSdkVersion
- multiDexEnabled
如下示例,其中...为省略部分
...android {compileSdkVersion 31...defaultConfig {...minSdkVersion 19targetSdkVersion 31multiDexEnabled = true...}...}...dependencies {...implementation 'androidx.multidex:multidex:2.0.1'...}
修改android/build.gradle
- ext.kotlin_version
如下示例,其中...为省略部分
buildscript {ext.kotlin_version = '1.5.31'...}
修改android/src/main/AndroidManifest.xml
- 添加联网权限
<uses-permission android:name="android.permission.INTERNET"/> application添加androidx.multidex.MultiDexApplication
如下示例,其中...为省略部分
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="work.tool.flutter_pet_translate"><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:name="androidx.multidex.MultiDexApplication"android:label="..."android:icon="...">......
配置修改完成后再次尝试运行,不出意外就成功了。如果仍然有报错,按错误信息去stackoverflow或者github issue搜索,相信会找到相关的解决方案。
胜利就在眼前,千万不要放弃。
iOS
修改ios/Runner/Info.plist
信任HTTP请求
<key>NSAppTransportSecurity</key><key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>
应用跟踪透明度授权
NSUserTrackingUsageDescription<key>NSUserTrackingUsageDescription</key><string>为了向您提供更优质、安全的个性化服务及内容,需要您允许使用相关权限</string>
在项目中调用
参考插件的example,创建
ads_config.dart和ads.dart,配置类
ads_config.dart,主要用来存放优量汇媒体ID和广告ID,针对不同的操作系统,使用对应的ID,以开屏广告位ID为例static String get splashId {if (Platform.isAndroid) {return '8022311121246224';} else {return '5052818319908354';}}
简单封装操作类
ads.dart,为了调试方便,使用logger将调用结果做了输出,没有logger的话可以直接删掉相关代码 ```shell import ‘package:flutter/services.dart’; import ‘package:flutter_qq_ads/flutter_qq_ads.dart’;
import ‘ads_config.dart’; import ‘../common/logger.dart’;
var ads = Ads();
class Ads { // 结果信息 String _result = ‘’;
/// 设置广告监听
Future
/// 请求应用跟踪透明度授权
Future
/// 展示插屏广告
Future
/// 展示激励视频广告
Future
/// 初始化广告 SDK
Future
/// 展示开屏广告
/// [logo] 展示如果传递则展示logo,不传递不展示
Future
<a name="qt4e4"></a>#### 调用```shell@overridevoid initState() {super.initState();if (Platform.isIOS) {ads.requestIDFA().then((value) {});}ads.init().then((value) {if (value) {ads.showSplashAd(AdsConfig.logo);}});}
