Pakete, Repositories und App-Kategorien suchen

Cover von flutter_unionad
Paketdetailsv3.0.0

flutter_unionad

ByteDance Chuan Shan Jia Werbung Flutter-Version

AndroidiOS
30-Tage-Downloads
1060
Likes
44
Pub-Punkte
110

Paket installieren

flutter pub add flutter_unionad

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

flutter_unionad ist ein Flutter-Plugin, das die Integration der ByteDance-Werbeplattform ChuanShanJia (UnionAd) in Flutter-Anwendungen für Android und iOS ermöglicht. Es bietet eine einfache Schnittstelle zum Anzeigen von Native Ads, Banner Ads und Interstitial Ads, wodurch Entwickler ihre Apps mit hochleistungsfähigen, plattformübergreifenden Werbeinhalten monetarisieren können. Das Paket vereinfacht den Anschluss an die UnionAd-SDK, die Verwaltung von Berechtigungen und die Handhabung von Lebenszyklusereignissen von Anzeigen. Es wird von der Community gepflegt und unterstützt Echtzeit-Updates von Anzeigen über offizielle ByteDance-SDKs.

Anwendungsfälle

  • Monetarisierung von Flutter-Apps mit In-App-Werbung
  • Anzeigen von Native- und Banneranzeigen in mobilen Apps
  • Integration von Interstitial-Werbung zwischen App-Bildschirmen
  • Unterstützung der plattformübergreifenden Anzeigenlieferung unter Android und iOS
  • Echtzeit-Tracking der Werbeleistung aktivieren

Hauptmerkmale

  • Cross-Plattform-Unterstützung für Android und iOS
  • Einfache Integration mit dem UnionAd SDK
  • Unterstützung mehrerer Anzeigenformate, darunter Native-, Banner- und Interstitial-Anzeigen
  • Echtzeit-Ladung und Aktualisierung von Anzeigen
  • Community-gemaint, mit aktiven GitHub-Aktualisierungen

Geeignet für

  • Flutter-Entwickler, die Apps mit UnionAd monetarisieren möchten
  • Apps für chinesische und globale Märkte
  • Entwickler, die das Werbenetzwerk von ByteDance nutzen
  • Projekte, die eine leichte Anzeigenintegration erfordern
  • Teams, die Open-Source-, transparente Werbelösungen wünschen

Hinweise

  • Einhaltung der Allgemeinen Geschäftsbedingungen von UnionAd erforderlich
  • Möglicherweise sind zusätzliche Konfigurationen für die GDPR/CCPA-Konformität erforderlich
  • Abhängig von externen SDK-Aktualisierungen
  • Eingeschränkte Dokumentation im Vergleich zu offiziellen SDKs
  • Nicht offiziell von ByteDance gepflegt

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

字节跳动穿山甲广告 Flutter版本

简介

flutter_unioad是一款集成了穿山甲Android和iOSSDK的Flutter插件,方便直接调用穿山甲SDK方法开发,已支持null safety,体验demo,可通过GTAds实现多个广告平台接入、统一管理。

官方文档

版本更新

更新日志

注意事项

⚠️ 版本更新必看,不然可能广告加载可能会出现异常 插件更新调整

⚠️ 由于融合SDK与旧版部分api不兼容,2.0.0改动较大,更新后注意查看文档说明

⚠️ 用gromore来创建广告位,使用gromore id来展示广告

⚠️ 如需需要集成聚合其他广告SDK,需要根据当前插件使用的版本引入对应版本的Adapter库,离线SDK,根据官方文档进行配置

⚠️ 鸿蒙开屏、信息流、横幅广告需要使用ohos分支代码

本地开发环境

[✓] Flutter (Channel stable, 3.22.1, on macOS 14.5 23F79 darwin-x64, locale zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
[✓] Xcode - develop for iOS and macOS (Xcode 15.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.1.2)
[✓] VS Code (version 1.89.1)
[✓] Connected device (3 available)
[✓] Network resources

集成步骤

1、pubspec.yaml
flutter_unionad: ^latest

引入

import 'package:flutter_unionad/flutter_unionad.dart';
2、Android

SDK已配置插件中无需额外配置,只需要在android目录中AndroidManifest.xml配置

<manifest ···
    xmlns:tools="http://schemas.android.com/tools"
    ···>
  <application
        android:usesCleartextTraffic="true"
        tools:replace="android:label">
3、IOS

SDK已配置插件中,其余根据SDK文档配置,因为使用PlatformView,在Info.plist加入

<key>io.flutter.embedded_views_preview</key>
    <true/>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
4、鸿蒙next
需要把下面这个文件拷贝到你的鸿蒙项目根目录下

.ohpmrc

使用

1、SDK初始化

⚠️如果要修改个性化,重新调用初始化方法

await FlutterUnionad.register(
    //穿山甲广告 Android appid 必填
    androidAppId: "5098580",
    //穿山甲广告 ios appid 必填
    iosAppId: "5098580",
    //appname 必填
    appName: "unionad_test",
    //使用聚合功能一定要打开此开关,否则不会请求聚合广告,默认这个值为false
    //true使用GroMore下的广告位
    //false使用广告变现下的广告位
    useMediation: true,
    //是否为计费用户 选填
    paid: false,
    //用户画像的关键词列表 选填
    keywords: "",
    //是否允许sdk展示通知栏提示 选填
    allowShowNotify: true,
    //是否显示debug日志
    debug: true,
    //是否支持多进程 选填
    supportMultiProcess: false,
    //主题模式 默认FlutterUnionAdTheme.DAY,修改后需重新调用初始化
    themeStatus: _themeStatus,
    //允许直接下载的网络状态集合 选填
    directDownloadNetworkType: [
    FlutterUnionadNetCode.NETWORK_STATE_2G,
    FlutterUnionadNetCode.NETWORK_STATE_3G,
    FlutterUnionadNetCode.NETWORK_STATE_4G,
    FlutterUnionadNetCode.NETWORK_STATE_WIFI
    ],
    androidPrivacy: AndroidPrivacy(
        //是否允许SDK主动使用地理位置信息 true可以获取,false禁止获取。默认为true
        isCanUseLocation: false,
        //当isCanUseLocation=false时,可传入地理位置信息,穿山甲sdk使用您传入的地理位置信息lat
        lat: 0.0,
        //当isCanUseLocation=false时,可传入地理位置信息,穿山甲sdk使用您传入的地理位置信息lon
        lon: 0.0,
        // 是否允许SDK主动使用手机硬件参数,如:imei
        isCanUsePhoneState: false,
        //当isCanUsePhoneState=false时,可传入imei信息,穿山甲sdk使用您传入的imei信息
        imei: "",
        // 是否允许SDK主动使用ACCESS_WIFI_STATE权限
        isCanUseWifiState: false,
        // 当isCanUseWifiState=false时,可传入Mac地址信息
        macAddress: "",
        // 是否允许SDK主动使用WRITE_EXTERNAL_STORAGE权限
        isCanUseWriteExternal: false,
        // 开发者可以传入oaid
        oaid: "b69cd3cf68900323",
        // 是否允许SDK主动获取设备上应用安装列表的采集权限
        alist: false,
        // 是否能获取android ID
        isCanUseAndroidId: false,
        // 开发者可以传入android ID
        androidId: "",
        // 是否允许SDK在申明和授权了的情况下使用录音权限
        isCanUsePermissionRecordAudio: false,
        // 是否限制个性化推荐接口
        isLimitPersonalAds: false,
        // 是否启用程序化广告推荐 true启用 false不启用
        isProgrammaticRecommend: false,
        userPrivacyConfig: {
            //控制oaid获取频率,"0"表示关闭,“1"或者其他值表示打开。
            "mcod":"0",
            //关闭后台监听应用安装、更新、卸载行为
            "installUninstallListen": "0",
        }
    ),
    iosPrivacy: IOSPrivacy(
        //允许个性化广告
        limitPersonalAds: false,
        //允许程序化广告
        limitProgrammaticAds: false,
        //允许CAID
        forbiddenCAID: false,
    ),
    //流量分组
    userInfo: UnionadUserInfo(
        //设备ID。由开发者定义并传入聚合SDK,后续M支持基于设备ID维度统计数据、或针对个别设备进行测试
        userId: "unionad_123",
        //年龄
        age: 19,
        //性别 0女 1男 2未知 3不使用
        gender: 2,
        //渠道。建议使用以下字符规则:大小写字母数字和下划线[A-Za-z0-9_]
        channel: "flutter",
        //子渠道。建议使用以下字符规则:大小写字母数字和下划线[A-Za-z0-9_]
        subChannel: "flutter_unionad",
        //分组
        userValueGroup: "QQ",
        //自定义参数 Map<String, String>
        customInfos: {
            "QQ": "123",
            "WeChat": "456",
        }
    ),
    //配置拉取失败时导入本地配置 https://www.csjplatform.com/supportcenter/5885
    //android导入/android/app/src/main/assets/下,文件必须为json文件,传入文件名
    //ios导入/ios/下,文件必须为json文件,传入文件名
    localConfig: "site_config_5098580",
);

2、获取SDK版本
await FlutterUnionad.getSDKVersion();
3、请求权限
  FlutterUnionad.requestPermissionIfNecessary(
      callBack: FlutterUnionadPermissionCallBack(
            notDetermined: () {
                print("权限未确定");
            },
            restricted: () {
                print("权限限制");
            },
            denied: () {
                print("权限拒绝");
            },
            authorized: () {
                print("权限同意");
            },
       ),
  );

Android获取定位、照片权限,只返回成功

Android相关权限为非必须权限,可选择在AndroidManifest.xml中声明

IOS 版本14及以上获取ATT权限,根据返回结果具体操作业务逻辑

4、开屏广告
FlutterUnionadSplashAdView(
    //android 开屏广告广告id 必填 889033013 102729400
    androidCodeId: "102729400",
    //ios 开屏广告广告id 必填
    iosCodeId: "102729400",
    //是否支持 DeepLink 选填
    supportDeepLink: true,
    // 期望view 宽度 dp 选填
    width: MediaQuery.of(context).size.width,
    //期望view高度 dp 选填
    height: MediaQuery.of(context).size.height - 100,
    //是否影藏跳过按钮(当影藏的时候显示自定义跳过按钮) 默认显示
    hideSkip: false,
    //超时时间
    timeout: 3000,
    callBack: FlutterUnionadSplashCallBack(
        onShow: () {
            print("开屏广告显示");
            setState(() => _offstage = false);
        },
        onClick: () {
            print("开屏广告点击");
        },
        onFail: (error) {
            print("开屏广告失败 $error");
            Navigator.pop(context);
        },
        onFinish: () {
            print("开屏广告倒计时结束");
            Navigator.pop(context);
        },
        onSkip: () {
            print("开屏广告跳过");
            Navigator.pop(context);
        },
        onTimeOut: () {
            print("开屏广告超时");
        },
    ),
),
5、banner广告
FlutterUnionadBannerView(
    //andrrid banner广告id 必填
    androidCodeId: "102735527",
    //ios banner广告id 必填
    iosCodeId: "102735527",
    // 期望view 宽度 dp 必填
    width: 600.5,
    //期望view高度 dp 必填
    height: 120.5,
    //广告事件回调 选填
    callBack: FlutterUnionadBannerCallBack(onShow: () {
            print("banner广告加载完成");
        }, onDislike: (message) {
            print("banner不感兴趣 $message");
        }, onFail: (error) {
            print("banner广告加载失败 $error");
        }, onClick: () {
            print("banner广告点击");
        },
    ),
),
6、信息流广告
//个性化模板信息流广告
FlutterUnionadNativeAdView(
    //android 信息流广告id 必填
    androidCodeId: "102730271",
    //ios banner广告id 必填
    iosCodeId: "102730271",
    //是否支持 DeepLink 选填
    supportDeepLink: true,
    // 期望view 宽度 dp 必填
    width: 375.5,
    //期望view高度 dp 必填
    height: 0,
    callBack: FlutterUnionadNativeCallBack(
        onShow: () {
            print("信息流广告显示");
        },
        onFail: (error) {
            print("信息流广告失败 $error");
        },
        onDislike: (message) {
            print("信息流广告不感兴趣 $message");
        },
        onClick: () {
            print("信息流广告点击");
        },
    ),
),

8、激励视频广告

预加载激励视频广告

FlutterUnionad.loadRewardVideoAd(
    //是否个性化 选填
    androidCodeId: "102733764",
    //Android 激励视频广告id  必填
    iosCodeId: "102733764",
    //ios 激励视频广告id  必填
    rewardName: "200金币",
    //奖励名称 选填
    rewardAmount: 200,
    //奖励数量 选填
    userID: "123",
    //  用户id 选填
    orientation: FlutterUnionadOrientation.VERTICAL,
    //视屏方向 选填
    mediaExtra: null,
    //扩展参数 选填
);

显示激励视频广告

 await FlutterUnionad.showRewardVideoAd();

监听激励视频结果

 FlutterUnionad.FlutterUnionadStream.initAdStream(
      //激励广告
        flutterUnionadRewardAdCallBack: FlutterUnionadRewardAdCallBack(
        onShow: (){
          print("激励广告显示");
        },
        onClick: (){
          print("激励广告点击");
        },
        onFail: (error){
          print("激励广告失败 $error");
        },
        onClose: (){
          print("激励广告关闭");
        },
        onSkip: (){
          print("激励广告跳过");
        },
        onVerify: (rewardVerify,rewardAmount,rewardName){
          print("激励广告奖励  $rewardVerify   $rewardAmount  $rewardName");
        },
        onReady: () async{
          print("激励广告预加载准备就绪");
          await FlutterUnionad.showRewardVideoAd();
        }, 
        onCache: () async {
          print("激励广告物料缓存成功。建议在这里进行广告展示,可保证播放流畅和展示流畅,用户体验更好。");
        },
        onUnReady: (){
          print("激励广告预加载未准备就绪");
        }, 
        onRewardArrived: (rewardVerify, rewardType, rewardAmount, rewardName,
          errorCode, error, propose) {
            print(
            "阶段激励广告奖励  验证结果=$rewardVerify 奖励类型<FlutterUnionadRewardType>=$rewardType 奖励=$rewardAmount"
            "奖励名称$rewardName 错误码=$errorCode 错误$error 建议奖励$propose");
            }),
      ),
    );
9、draw视频广告
FlutterUnionadDrawFeedAdView(
    androidCodeId: "102734241",
    iosCodeId: "102734241",
    //是否支持 DeepLink 选填
    width: 600.5,
    // 期望view 宽度 dp 必填
    height: 800.5,
    callBack: FlutterUnionadDrawFeedCallBack(
        onShow: () {
            print("draw广告显示");
        },
        onFail: (error) {
            print("draw广告加载失败 $error");
        },
        onClick: () {
            print("draw广告点击");
        },
        onDislike: (message) {
            print("draw点击不喜欢 $message");
        },
        onVideoPlay: () {
            print("draw视频播放");
        },
        onVideoPause: () {
            print("draw视频暂停");
        },
        onVideoStop: () {
            print("draw视频结束");
        },
    ),
);
11、新模版渲染插屏广告 分为全屏和插屏

预加载新模版渲染插屏广告

FlutterUnionad.loadFullScreenVideoAdInteraction(
    //android 全屏广告id 必填
    androidCodeId: "102735530",
    //ios 全屏广告id 必填
    iosCodeId: "102735530",
    //视屏方向 选填
    orientation: FlutterUnionadOrientation.VERTICAL,
);

显示新模版渲染插屏广告

  await FlutterUnionad.showFullScreenVideoAdInteraction();

新模版渲染插屏广告结果监听

FlutterUnionad.FlutterUnionadStream.initAdStream(
      // 新模板渲染插屏广告回调
        flutterUnionadNewInteractionCallBack: FlutterUnionadNewInteractionCallBack(
              onShow: () {
                print("新模板渲染插屏广告显示");
              },
              onSkip: () {
                print("新模板渲染插屏广告跳过");
              },
              onClick: () {
                print("新模板渲染插屏广告点击");
              },
              onFinish: () {
                print("新模板渲染插屏广告结束");
              },
              onFail: (error) {
                print("新模板渲染插屏广告错误 $error");
              },
              onClose: () {
                print("新模板渲染插屏广告关闭");
              },
              onReady: () async{
                print("新模板渲染插屏广告预加载准备就绪");
                //显示新模板渲染插屏
                await FlutterUnionad.showFullScreenVideoAdInteraction();
              },
              onUnReady: (){
                print("新模板渲染插屏广告预加载未准备就绪");
              },
            ),
    );
13、日间/夜间模式

获取主题模式

// 0正常模式 1夜间模式
 _themeStatus = await FlutterUnionad.getThemeStatus();

切换主题模式

修改初始化中themeStatus参数,重新调用初始化

14 ecpm说明
/// [adnName] ADN的名称,与平台配置一致,自定义ADN时为ADN唯一标识
/// [customAdnName] 自定义ADN的名称,与平台配置一致,非自定义ADN为nil
/// [slotID] 代码位
/// [levelTag] 价格标签,多阶底价下有效
/// [ecpm] 返回价格,nil为无权限
/// [biddingType] 广告类型
/// [errorMsg] 额外错误信息,一般为空(扩展字段)
/// [requestID] adn提供的真实广告加载ID,可为空
/// [creativeID] adn提供的真实广告创意ID,可为空
/// [adRitType] 广告位类型
/// [segmentId] 流量分组ID
/// [abtestId] AB实验分组ID
/// [channel] 渠道名称
/// [subChannel] 子渠道名称
/// [scenarioId] 场景ID
/// [subRitType] 混用类型,banner/fullVideo/rewardVideo/feed/draw/interstitial

常见问题

常见问题

插件链接

插件 地址
字节-穿山甲广告插件 flutter_unionad
腾讯-优量汇广告插件 flutter_tencentad
百度-百青藤广告插件 baiduad
字节-Gromore聚合广告 gromore
Sigmob广告 sigmobad
聚合广告插件(迁移至GTAds) flutter_universalad
GTAds聚合广告 GTAds
字节穿山甲内容合作插件 flutter_pangrowth
文档预览插件 file_preview
滤镜 gpu_image
开源不易,觉得有用的话可以请作者喝杯奶茶🧋
打赏

联系方式

  • Email: gstory0404@gmail.com

  • blog:https://www.gstory.cn/

  • QQ群: 649574038

Kategorien

Abhängigkeiten

Abhängigkeiten 4 Einträge

  • unionad_android^1.0.0
  • unionad_interface^1.0.0
  • unionad_ios^1.0.0
  • unionad_ohos^1.0.0

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.