Appearance
、
入门使用 
引入依赖 
Dart
dependencies:
  flutter_unad_ads: ^1.0.9初始化广告 
Dart
// 导包
import 'package:flutter_unad_ads/flutter_unad_ads.dart';
/// [appId] 应用ID
FlutterUNADAds.initAd(appId);个性化广告开关 
dart
/// 不调用默认为开,'1'打开,'0'关闭
FlutterUNADAds.setUserExtData(personalAdsType: '1');开屏广告 
- 全屏
Dart
/// [posId] 广告位 id
FlutterUNADAds.showSplashAd(posId);- 半屏广告 + Logo
Dart
/// [posId] 广告位 id
/// [logo] 如果传值则展示底部logo,不传不展示,则全屏展示
/// [timeout] 加载超时时间
FlutterUNADAds.showSplashAd(
  posId,
  logo: 'flutterads_logo',
  timeout: 3.5,
);新插屏广告 
Dart
/// [posId] 广告位 id
FlutterUNADAds.showFullScreenVideoAd(AdsConfig.newInterstitialId);激励视频 
Dart
/// [posId] 广告位 id
/// [customData] 设置服务端验证的自定义信息
/// [userId] 设置服务端验证的用户信息
FlutterUNADAds.showRewardVideoAd(
    AdsConfig.rewardVideoId,
    customData: 'customData',
    userId: 'userId',
);Banner 
Dart
/// [posId] 广告位 id
/// [width] 创建 Banner 广告位时选择的宽度,默认值是 300
/// [height] 创建 Banner 广告位时选择的高度,默认值是 150
/// [interval] 广告轮播间隔,0 或[30~120]之间的数字,单位为 s,默认为 0 不轮播
/// [show] 是否显示广告
/// [autoClose] 是否自动关闭,一般是在用户点击不感兴趣之后的操作
AdBannerWidget(
  posId: AdsConfig.bannerId,
  width: 300,
  height: 150,
  interval: 30,
  show: true,
  autoClose: true,
);Banner 广告外部需要嵌套一个带有约束布局的 Widget,如:AspectRatio、SizedBox、Container 等,示例如下:
- 嵌套 SizedBox(推荐)
Dart
SizedBox(
  width: 300,
  height: 150,
  child: AdBannerWidget(
    posId: AdsConfig.bannerId,
    width: 300,
    height: 150,
    interval: 30,
    show: true,
  ),
)信息流 
- 获取信息流广告列表
Dart
/// [posId] 广告位 id
/// [width] 宽度
/// [height] 高度
/// [count] 获取广告数量,建议 1~3 个
List<int> feedAdList = await FlutterUNADAds.loadFeedAd(
    AdsConfig.feedId,
    width: 375,
    height: 128,
    count: 3,
  );- 清除信息流广告列表
当你的广告不再需要时,请一定执行清除操作
Dart
/// [list] 信息流广告 id 列表
bool result = await FlutterUNADAds.clearFeedAd(feedAdList);- 页面中展示信息流广告
Dart
/// Feed 信息流广告组件
/// [posId]返回的广告 id,这里不是广告位id
/// [width]组件的宽度
/// [height]组件的高度
/// [show]是否显示
AdFeedWidget(
    posId: '${feedAdList[0]}',
    width: 375,
    height: 128,
    show: true,
  )
width和height需要根据你新建广告位的模板来设置
设置广告事件监听 
Dart
FlutterUNADAds.onEventListener((event) {
  // 普通广告事件
  String _adEvent = 'adId:${event.adId} action:${event.action}';
  if (event is AdErrorEvent) {
    // 错误事件
    _adEvent += ' errCode:${event.errCode} errMsg:${event.errMsg}';
  } else if (event is AdRewardEvent) {
    // 激励事件
        _adEvent +=
            'rewardType:${event.rewardType} rewardVerify:${event.rewardVerify} rewardAmount:${event.rewardAmount} rewardName:${event.rewardName} errCode:${event.errCode} errMsg:${event.errMsg} customData:${event.customData} userId:${event.userId}';
  }
  // 测试关闭 Banner(会员场景)
  if (event.action == AdEventAction.onAdClosed &&
      event.adId == AdsConfig.bannerId02) {
    _adEvent += '仅会员可以关闭广告';
  }
  print('onEventListener:$_adEvent');
});事件列表 
| 事件 | 说明 | 
|---|---|
| onAdLoaded | 广告加载成功 | 
| onAdPresent | 广告填充 | 
| onAdExposure | 广告曝光 | 
| onAdClosed | 广告关闭(开屏计时结束或者用户点击关闭) | 
| onAdClicked | 广告点击 | 
| onAdSkip | 广告跳过 | 
| onAdComplete | 广告播放或计时完毕 | 
| onAdError | 广告错误 | 
| onAdReward | 获得广告激励 | 
其他配置 
iOS 
信任 HTTP 请求( 
苹果公司在 iOS9 中升级了应用网络通信安全策略,默认推荐开发者使用 HTTPS 协议来进行网络通信,并限制 HTTP 协议的请求。为了避免出现无法拉取到广告的情况,我们推荐开发者在 info.plist 文件中增加如下配置来实现广告的网络访问
- 修改 info.plist
xml
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>请求应用跟踪透明度授权 
此步骤必须要做,不然上架审核时候会被拒绝
Dart
bool result = await FlutterUNADAds.requestIDFA;- 修改 info.plist
xml
<key>NSUserTrackingUsageDescription</key>
<string>为了向您提供更优质、安全的个性化服务及内容,需要您允许使用相关权限</string>GADApplicationIdentifier 
修改 info.plist
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-5297446075011848~6893150522</string>其他配置 
Android 
动态请求权限 
Dart
bool result = await FlutterUNADAds.requestPermissionIfNecessary;修改 AndroidManifest.xml 文件 
请参考原生说明第 4 部分
混淆 
请参考原生说明第 5 部分
原生 SDK 版本更新方法 
- Android
shell
// build.gradle(android.app)
android{
  configurations.all {
      resolutionStrategy {
      }
  }
}- iOS - 自己手动更新,自己的项目根目录下执行即可 
shell
// 可在 ios/Podfile.lock 中查看 SDK 当前版本
cd ios
rm -rf Podfile.lock
pod repo update
pod install其它问题 
iOS 
出现以下错误,请升级 cocoapods 到最新版本https://zhuanlan.zhihu.com/p/668171823?utm_id=0
DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead