感谢大佬提供这么🐮的插件,传送门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 19
targetSdkVersion 31
multiDexEnabled = 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"/>
<application
android: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
@override
void initState() {
super.initState();
if (Platform.isIOS) {
ads.requestIDFA().then((value) {});
}
ads.init().then((value) {
if (value) {
ads.showSplashAd(AdsConfig.logo);
}
});
}