🔥🔥🔥 Flutter 广告插件 -- 字节跳动、穿山甲(支持开屏、插屏、激励视频、全屏视频)

Overview

logo

一款优质的 Flutter 广告插件(字节跳动、穿山甲)

插件特点

  • 🔨 接入简单快速(封装原生端配置,仅需引入即可开始)
  • 📡 事件统一返回(将原生端各种重要回调事件统一返回,方便业务处理和埋点统计等需求)
  • 🎁 注重优化体验(无闪烁 Logo 开屏、权限申请、隐私跟踪申请等)
  • 🏆 极客代码封装(原生端代码不凑合,两端统一基础框架、广告事件封装抽象、易扩展新广告形式、方便开发个性化需求)

支持功能

  • 开屏广告
  • 插屏广告
    • 半插屏
    • 全屏视频(新插屏)
  • 激励视频
  • 全屏视频
  • 🔲 Banner
  • 🔲 信息流

下载体验

入门使用

引入依赖

  • 版本约定

    • 1.x.x 是非 Null Safety 版本,对应 master 分支
    • 2.x.x 是 Null Safety 版本,对应 2x 分支

    现在阶段会同时维护这 2 个版本,再往后可能仅维护一个空安全版本

  • Pub 引入

dependencies:
  flutter_pangle_ads: ^1.1.0 # 非 Null Safety 版本
  flutter_pangle_ads: ^2.1.0 # Null Safety 版本
  • Git 引入
flutter_pangle_ads:
  git: 
    url: git@github.com:FlutterAds/flutter_pangle_ads.git
    ref: master
  • 克隆后本地引入
flutter_pangle_ads:
  path: [与主项目的相对路径 | 插件的绝对路径]

初始化广告

/// [appId] 应用ID
FlutterPangleAds.initAd(appId);

设置广告事件监听

FlutterPangleAds.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 +=
            ' rewardVerify:${event.rewardVerify} rewardAmount:${event.rewardAmount} rewardName:${event.rewardName} errCode:${event.errCode} errMsg:${event.errMsg} customData:${event.customData} userId:${event.userId}';
  }
  print('onEventListener:$_adEvent');
});

事件列表

事件 说明
onAdLoaded 广告加载成功
onAdPresent 广告填充
onAdExposure 广告曝光
onAdClosed 广告关闭(开屏计时结束或者用户点击关闭)
onAdClicked 广告点击
onAdSkip 广告跳过
onAdComplete 广告播放或计时完毕
onAdError 广告错误
onAdReward 获得广告激励

这里做了统一的抽象,iOS 和 Android 原生 SDK 名称不同,如果觉得对应不上,可以提 Issues(一定要加上 log 截图)

开屏广告

/// [posId] 广告位 id
/// [logo] 如果传值则展示底部logo,不传不展示,则全屏展示
FlutterPangleAds.showSplashAd(posId, 'flutterads_logo');
  • 全屏广告
FlutterQqAds.showSplashAd(posId);

插屏广告

/// [posId] 广告位 id
/// [width] 请求模板广告素材的尺寸宽度(对应 expressViewWidth 参数)
/// [height] 请求模板广告素材的尺寸高度(对应 expressViewWidth 参数)
FlutterPangleAds.showInterstitialAd(
    AdsConfig.interstitialId,
    width: 300,
    height: 300,
);

激励视频

/// [posId] 广告位 id
/// [customData] 设置服务端验证的自定义信息
/// [userId] 设置服务端验证的用户信息
FlutterPangleAds.showRewardVideoAd(
    AdsConfig.rewardVideoId,
    customData: 'customData',
    userId: 'userId',
);

全屏视频

  • 全屏视频
  • 新插屏
/// [posId] 广告位 id
FlutterPangleAds.showRewardVideoAd(AdsConfig.fullScreenVideoId);

其他配置

信任HTTP请求(仅 iOS)

苹果公司在iOS9中升级了应用网络通信安全策略,默认推荐开发者使用HTTPS协议来进行网络通信,并限制HTTP协议的请求。为了避免出现无法拉取到广告的情况,我们推荐开发者在info.plist文件中增加如下配置来实现广告的网络访问

  • 修改 info.plist
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

信任HTTP请求

请求应用跟踪透明度授权(仅 iOS)

此步骤必须要做,不然上架审核时候会被拒绝

bool result = await FlutterPangleAds.requestIDFA;
  • 修改 info.plist
<key>NSUserTrackingUsageDescription</key>
<string>为了向您提供更优质、安全的个性化服务及内容,需要您允许使用相关权限</string>

请求应用跟踪透明度授权

  • 效果

预览效果

动态请求权限(仅 Android)

bool result = await FlutterPangleAds.requestPermissionIfNecessary;

原生 SDK 版本更新方法

如果是大版本,我会第一时间适配更新,小版本可以自己更新,方法如下:

  • Android

    方法1:可以给我提 Issues 提示我更新,此插件版本号 x.y.z,会更新 z 版本迭代

    方法2:可以自己指定版本,方法如下:

// build.gradle(android.app)
android{
  configurations.all {
      resolutionStrategy {
          force 'com.pangle.cn:ads-sdk:版本号'
      }
  }
}
  • iOS

    自己手动更新,自己的项目根目录下执行即可

// 可在 ios/Podfile.lock 中查看 SDK 当前版本
cd ios
rm -rf Podfile.lock
pod repo update
pod install

分支说明

分支 说明
develop 开发分支,接受 PR
master 稳定分支,非 Null Safety
2x 稳定分支,Null Safety

遇到问题

如果你遇到问题请提 Issues 给我(提问前建议先搜索尝试,没有再提问)

支持开源

支持开源项目最好的方式就是用 1 秒点个免费的 Star

FlutterAds 系列插件

Comments
  • Property 'splashButtonType' not found on object of type 'BUAdSlot *'

    Property 'splashButtonType' not found on object of type 'BUAdSlot *'

    image

    Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 2.2.3, on macOS 12.2 21D49 darwin-arm, locale zh-Hans-CN) [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3) [✓] Xcode - develop for iOS and macOS [✓] Chrome - develop for the web [!] Android Studio ✗ Unable to find bundled Java version. [✓] Android Studio (version 4.2) [✓] Android Studio (version 4.2) [✓] IntelliJ IDEA Ultimate Edition (version 2021.2.1) [✓] VS Code (version 1.64.2) [✓] Connected device (2 available)

    ! Doctor found issues in 1 category.

    集成的版本 :flutter_pangle_ads: ^2.4.0 # Null Safety

    xcode版本 : Version 13.2.1 (13C100)

    opened by logos-flutter 9
  • 广告事件监听 对不上

    广告事件监听 对不上

    情况是这样的:播放 激励视频 使用 event is AdRewardEvent 结果是:进不去这个事件,而且我自己根据 adId 判断是否 激励视频(AdRewardEvent )转换的 AdRewardEvent adRewardEvent=event; 发现AdRewardEvent 中的参数 全部都为空

    建议监听分开实现 统一复杂性太高,不方便维护

    opened by dev-zl 9
  • 信息流广告出现频繁弹出的问题

    信息流广告出现频繁弹出的问题

    用的是最新版本2.5.0

    附件为用户提供的视频。

    信息流广告并不在这个页面上,而是之前的页面,是我处理的哪里不对导致的吗?

    离开之前的信息流页面要做什么特别的处理吗?

    还有文档上提到要清除adsid,什么时候清除更好呢?

    麻烦解答一下~

    https://user-images.githubusercontent.com/3458134/177278604-575fac08-bf7d-4162-90d7-732e271ff26b.mp4

    opened by rockingdice 5
  • java.lang.UnsatisfiedLinkError: dlopen failed: library

    java.lang.UnsatisfiedLinkError: dlopen failed: library "libpangleflipped.so" not found

    您好,在使用贵插件过程中,Android端遇到这个问题,导致开屏广告没有显示,IOS端可以完美运行

    请问,我应该怎么才能解决呢?非常感谢

    Syncing files to device sdk gphone x86...
    D/PluginDelegate( 7940): MethodChannel onMethodCall method:initAd arguments:{useTextureView=false, supportMultiProcess=false, appId=5265015, directDownloadNetworkType=[1, 4], allowShowNotify=true}
    I/Zeus/init( 7940): ZeusManager init, context = android.app.Application@46a381a, hParam = ZeusParam{mEnable=true, mDebug=true, mFastDex2Oat=false, mInstallThreads=4, mCheckMatchHostAbi=true}
    W/TTPluginManager( 7940): Unexpected error for init zeus.
    W/TTPluginManager( 7940): java.lang.UnsatisfiedLinkError: dlopen failed: library "libpangleflipped.so" not found
    W/TTPluginManager( 7940): 	at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
    W/TTPluginManager( 7940): 	at java.lang.Runtime.loadLibrary0(Runtime.java:1008)
    W/TTPluginManager( 7940): 	at java.lang.System.loadLibrary(System.java:1664)
    W/TTPluginManager( 7940): 	at com.bytedance.pangle.flipped.FlippedV2Impl.<clinit>(SourceFile:22)
    W/TTPluginManager( 7940): 	at com.bytedance.pangle.b.a(SourceFile:1026)
    W/TTPluginManager( 7940): 	at com.bytedance.pangle.g.a(SourceFile:85)
    W/TTPluginManager( 7940): 	at com.bytedance.pangle.Zeus.init(SourceFile:81)
    W/TTPluginManager( 7940): 	at com.bytedance.sdk.openadsdk.api.plugin.f.c(TTPluginManager.java:165)
    W/TTPluginManager( 7940): 	at com.bytedance.sdk.openadsdk.api.plugin.f.<init>(TTPluginManager.java:83)
    W/TTPluginManager( 7940): 	at com.bytedance.sdk.openadsdk.api.plugin.f.a(TTPluginManager.java:90)
    W/TTPluginManager( 7940): 	at com.bytedance.sdk.openadsdk.api.plugin.g.init(TTPluginSdkInitializer.java:50)
    W/TTPluginManager( 7940): 	at com.bytedance.sdk.openadsdk.TTAdSdk.init(TTAdSdk.java:59)
    W/TTPluginManager( 7940): 	at com.zero.flutter_pangle_ads.PluginDelegate.initAd(PluginDelegate.java:189)
    W/TTPluginManager( 7940): 	at com.zero.flutter_pangle_ads.PluginDelegate.onMethodCall(PluginDelegate.java:85)
    W/TTPluginManager( 7940): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262)
    W/TTPluginManager( 7940): 	at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:178)
    W/TTPluginManager( 7940): 	at io.flutter.embedding.engine.dart.DartMessenger.lambda$handleMessageFromDart$0$DartMessenger(DartMessenger.java:206)
    W/TTPluginManager( 7940): 	at io.flutter.embedding.engine.dart.-$$Lambda$DartMessenger$6ZD1MYkhaLxyPjtoFDxe45u43DI.run(Unknown Source:12)
    W/TTPluginManager( 7940): 	at android.os.Handler.handleCallback(Handler.java:938)
    W/TTPluginManager( 7940): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    W/TTPluginManager( 7940): 	at android.os.Looper.loop(Looper.java:223)
    W/TTPluginManager( 7940): 	at android.app.ActivityThread.main(ActivityThread.java:7656)
    W/TTPluginManager( 7940): 	at java.lang.reflect.Method.invoke(Native Method)
    W/TTPluginManager( 7940): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    W/TTPluginManager( 7940): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
    D/PluginDelegate( 7940): MethodChannel onMethodCall method:requestPermissionIfNecessary arguments:null
    W/PluginDefaultAdManager( 7940): Not ready, no manager
    D/TTPluginManager( 7940): Create initializer
    V/Zeus/init( 7940): PluginManager parsePluginsJson
    I/Zeus/init( 7940): PluginManagerparsePluginsJson. find com.byted.pangle
    I/Zeus/init( 7940): PluginManager parsePluginsJson success
    W/le.legulegu_ap( 7940): Accessing hidden field Landroid/content/pm/ApplicationInfo;->primaryCpuAbi:Ljava/lang/String; (greylist, reflection, allowed)
    W/Zeus/so ( 7940): NativeLibHelper inferHostAbiAuto, primaryCpuAbi=x86
    W/Zeus/so ( 7940): NativeLibHelper inferHostAbiAuto, processMode=32
    W/Zeus/so ( 7940): NativeLibHelper inferHostAbiAuto2, sHostAbi=x86
    I/Zeus/init( 7940): ZeusSpUtils isHostAbiUpdate HOST_ABI=x86, x86, result=false
    I/Zeus/init( 7940): Plugin getInstalledMaxVersion, pkg=com.byted.pangle, maxVer=-1
    I/Zeus/init( 7940): ZeusSpUtils getPluginApiVersion pluginPKg = com.byted.pangle, pluginApiVersion = 4022
    I/Zeus/init( 7940): Plugin checkVersionValid, pkg=com.byted.pangle, ver=0, valid=false
    I/Zeus/init( 7940): Plugin initPlugins result=Plugin{pkg=com.byted.pangle, ver=0, life=1}
    I/Zeus/init( 7940): ZeusSpUtils setHostAbiUpdated HOST_ABI=x86 --> x86
    I/Zeus/init( 7940): ZeusSpUtils getPluginApiVersion pluginPKg = com.byted.pangle, pluginApiVersion = 4022
    I/Zeus/init( 7940): ZeusSpUtils setPluginApiVersion 4022 --> 4022
    W/le.legulegu_ap( 7940): Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, reflection, allowed)
    W/le.legulegu_ap( 7940): Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, reflection, allowed)
    W/le.legulegu_ap( 7940): Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, reflection, allowed)
    W/le.legulegu_ap( 7940): Accessing hidden method Landroid/media/AudioManager;->getOutputLatency(I)I (greylist, reflection, allowed)
    W/cr_media( 7940): Requires BLUETOOTH permission
    D/HostConnection( 7940): HostConnection::get() New Host Connection established 0xf2e22f30, tid 8034
    D/HostConnection( 7940): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_YUV_Cache ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_sync_buffer_data ANDROID_EMU_read_color_buffer_dma GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_0 
    D/EGL_emulation( 7940): eglCreateContext: 0xf2e238d0: maj 3 min 0 rcv 3
    D/EGL_emulation( 7940): eglMakeCurrent: 0xf2e238d0: ver 3 0 (tinfo 0xc0067af0) (first time)
    I/VideoCapabilities( 7940): Unsupported profile 4 for video/mp4v-es
    W/cr_MediaCodecUtil( 7940): HW encoder for video/avc is not available on this device.
    D/EGL_emulation( 7940): eglCreateContext: 0xf2e23b00: maj 3 min 0 rcv 3
    I/le.legulegu_ap( 7940): Waiting for a blocking GC ProfileSaver
    D/EGL_emulation( 7940): eglMakeCurrent: 0xf2e26490: ver 3 0 (tinfo 0xf31791b0) (first time)
    W/Gralloc4( 7940): allocator 3.x is not supported
    I/flutter ( 7940): 0
    I/le.legulegu_ap( 7940): NativeAlloc concurrent copying GC freed 39704(2135KB) AllocSpace objects, 150(6504KB) LOS objects, 49% free, 2917KB/5834KB, paused 83us total 369.703ms
    W/Zeus/load( 7940): PluginLoader loadPlugin, UN_INSTALLED, com.byted.pangle
    E/TTPluginManager( 7940): Load plugin failed
    E/PluginDelegate( 7940): fail:  code = 4201 msg = No initializer
    W/PluginDefaultAdManager( 7940): Not ready, no manager
    W/PluginDefaultAdManager( 7940): Not ready, no manager
    
    
    opened by benweizhu 4
  • 信息流代码位使用自定义模板报错

    信息流代码位使用自定义模板报错

    穿山甲后台代码为模板为自定义模板,调用信息流接口loadFeedAd之后再使用AdFeedWidget: PlatformException(40029, 两种情况:1. SDK版本低;使用的sdk版本过低,还不支持个性化模板渲染功能。解决办法:升级到平台最新版本sdk。2. 接口使用错误;创建的代码位类型是模板渲染/非模板渲染,但是请求方法是非模板渲染/模板渲染的方法。解决办法:使用模板渲染的方法去请求模板渲染类型或者使用非模板渲染的方法去请求非模板类型的广告,如果代码位在平台上是模板渲染,可以参考文档中个性化模板XX广告的部分,demo中参考带有express部分的代码。如果代码位不是模板渲染,则不要调用含有express字样的接口。参考文档:https://partner.oceanengine.com/doc?id=5dd0fe716b181e00112e3eb8, 两种情况:1. SDK版本低;使用的sdk版本过低,还不支持个性化模板渲染功能。解决办法:升级到平台最新版本sdk。2. 接口使用错误;创建的代码位类型是模板渲染/非模板渲染,但...

    opened by yundGo 4
  • 激励广告展示失败,但是没有错误码

    激励广告展示失败,但是没有错误码

    1、使用的是测试app、测试激励视频广告、ios模拟器 2、其他广告已正常显示:开屏、banner 3、flutter 3.3 , flutter_pangle_ads 2.6.1 , SDK版本号 - Ads-CN (4.7.1.0)、macos 12.5.1 4、输出:

    -[RewardVideoPage nativeExpressRewardedVideoAd:didFailWithError:]

    image

    请问下,为什么激励视频广告展示不出来,然后控制台打印不出来error code

    opened by sunjianan9900 3
  • iOS 16 beta 5( Xcode 14 beta 5 编译), 打开激励视频的时候会闪退

    iOS 16 beta 5( Xcode 14 beta 5 编译), 打开激励视频的时候会闪退

    用 Xcode 14 beta 5 编译, 打开激励视频的时候会闪退

    编译环境:Xcode 14 beta 5 (Macbook pro m1) 运行环境: iOS 16 beta 5 (iPhone X)

    Podfile.lock

      - flutter_pangle_ads (2.5.0):
        - Ads-CN
        - Flutter
      - Ads-CN (4.6.0.7):
        - Ads-CN/BUAdSDK (= 4.6.0.7)
      - Ads-CN/BUAdSDK (4.6.0.7):
        - Ads-CN/Domestic
      - Ads-CN/BUFoundation (4.6.0.7):
        - BURelyFoundation (= 0.0.1.58)
      - Ads-CN/CSJAdSDK (4.6.0.7):
        - Ads-CN/BUFoundation
      - Ads-CN/Domestic (4.6.0.7):
        - Ads-CN/BUFoundation
        - Ads-CN/CSJAdSDK
    

    logs:

    [general] *** -[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x22478ea90) [/System/Library/Frameworks/Foundation.framework]' for key 'NS.keys', even though it was not explicitly included in the client allowed classes set: '{(
        "'NSDictionary' (0x2247872b8) [/System/Library/Frameworks/CoreFoundation.framework]"
    )}'. This will be disallowed in the future.
    * thread #50, name = 'NetworkCacheThread-0-tid:90375', stop reason = EXC_GUARD (code=2305843022098599245, subcode=0x0)
        frame #0: 0x0000000104a50148 Runner`___lldb_unnamed_symbol356691 + 8
    Runner`___lldb_unnamed_symbol356691:
    ->  0x104a50148 <+8>:  ret
        0x104a5014c <+12>: brk    #0x1
    Runner`___lldb_unnamed_symbol356692:
        0x104a50150 <+0>:  stp    x28, x27, [sp, #-0x60]!
        0x104a50154 <+4>:  stp    x26, x25, [sp, #0x10]
    Target 0: (Runner) stopped.
    Lost connection to device.
    
    opened by nne998 3
  • 初始化失败  java.lang.NoClassDefFoundError: Failed resolution of: Lcom/bytedance/framwork/core/sdkmonitor/SDKMonitor$ICallback;

    初始化失败 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/bytedance/framwork/core/sdkmonitor/SDKMonitor$ICallback;

    请大佬帮忙看下,我在想 是不是 https://artifact.bytedance.com/repository/pangle 这个地址失效了 flutter_pangle_ads: ^2.4.0

    Flutter 2.2.3 • channel stable • https://github.com/flutter/flutter.git Framework • revision f4abaa0735 (5 months ago) • 2021-07-01 12:46:11 -0700 Engine • revision 241c87ad80 Tools • Dart 2.13.4

    I/Zeus/install( 996): Plugin synchronized begin, plugin=Plugin{pkg=com.byted.pangle, ver=0, life=1} I/Zeus/install( 996): Plugin checkValid com.byted.pangle:4022 true I/Zeus/install( 996): PluginInstaller watcher[install:com.byted.pangle]-start V/Zeus/reporter( 996): eventName: install_start V/Zeus/reporter( 996): categoryData:{ V/Zeus/reporter( 996): "status_code": "30000", V/Zeus/reporter( 996): "plugin_package_name": "com.byted.pangle", V/Zeus/reporter( 996): "version_code": "4022", V/Zeus/reporter( 996): "net_type": "5", V/Zeus/reporter( 996): "process_name": "xxxxx", V/Zeus/reporter( 996): "plugin_api_version": "-1", V/Zeus/reporter( 996): "zeus_sdk_version": "0.0.1-beta.53-bugfix.19-pangle" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): metricData:{ V/Zeus/reporter( 996): "duration": "-1" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): logExtrData:{ V/Zeus/reporter( 996): "throwable": "", V/Zeus/reporter( 996): "timestamp": "1638368783299", V/Zeus/reporter( 996): "message": "" V/Zeus/reporter( 996): } I/art ( 996): Rejecting re-init on previously-failed class java.lang.Class<com.bytedance.pangle.log.b>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/bytedance/framwork/core/sdkmonitor/SDKMonitor$ICallback; I/art ( 996): at com.bytedance.pangle.log.a com.bytedance.pangle.log.a.a() (SourceFile:17) I/art ( 996): at void com.bytedance.pangle.log.d.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:112) I/art ( 996): at void com.bytedance.pangle.g$1.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:80) I/art ( 996): at void com.bytedance.pangle.b.b.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:62) I/art ( 996): at void com.bytedance.pangle.plugin.b.a(java.lang.String, int, java.lang.String, int, long, java.lang.String, java.lang.Throwable) (SourceFile:275) I/art ( 996): at boolean com.bytedance.pangle.plugin.b.a(java.io.File, java.lang.String, int) (SourceFile:57) I/art ( 996): at boolean com.bytedance.pangle.plugin.Plugin.install(java.io.File, com.bytedance.pangle.e.a.e) (SourceFile:483) I/art ( 996): at boolean com.bytedance.pangle.plugin.a.a() (SourceFile:40) I/art ( 996): at void com.bytedance.pangle.plugin.a.run() (SourceFile:28) I/art ( 996): at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133) I/art ( 996): at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607) I/art ( 996): at void java.lang.Thread.run() (Thread.java:761) I/art ( 996): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.bytedance.framwork.core.sdkmonitor.SDKMonitor$ICallback" on path: DexPathList[[zip file "/data/app/xxx.com.xxxx-2/base.apk"],nativeLibraryDirectories=[/data/app/xxxx.com.xxx-2/lib/x86, /data/app/xxxx.com.xxxx-2/base.apk!/lib/x86, /system/lib, /vendor/lib]] I/art ( 996): at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56) I/art ( 996): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380) I/art ( 996): at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) I/art ( 996): at com.bytedance.pangle.log.a com.bytedance.pangle.log.a.a() (SourceFile:17) I/art ( 996): at void com.bytedance.pangle.log.d.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:112) I/art ( 996): at void com.bytedance.pangle.g$1.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:80) I/art ( 996): at void com.bytedance.pangle.b.b.a(java.lang.String, org.json.JSONObject, org.json.JSONObject, org.json.JSONObject) (SourceFile:62) I/art ( 996): at void com.bytedance.pangle.plugin.b.a(java.lang.String, int, java.lang.String, int, long, java.lang.String, java.lang.Throwable) (SourceFile:275) I/art ( 996): at boolean com.bytedance.pangle.plugin.b.a(java.io.File, java.lang.String, int) (SourceFile:57) I/art ( 996): at boolean com.bytedance.pangle.plugin.Plugin.install(java.io.File, com.bytedance.pangle.e.a.e) (SourceFile:483) I/art ( 996): at boolean com.bytedance.pangle.plugin.a.a() (SourceFile:40) I/art ( 996): at void com.bytedance.pangle.plugin.a.run() (SourceFile:28) I/art ( 996): at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1133) I/art ( 996): at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:607) I/art ( 996): at void java.lang.Thread.run() (Thread.java:761) I/art ( 996): I/Zeus/DefaultReporterImpl( 996): skip default report I/Zeus/install( 996): PluginInstaller watcher[install:com.byted.pangle]-cleanDir cost=11 I/Zeus/install( 996): PluginInstaller watcher[install:com.byted.pangle]-checkSignature cost=48 I/Zeus/so ( 996): NativeLibHelper getAllSoZipEntries, zipFile=/data/user/0/xxx.com.xxxx/app_tt_pangle_bykv_file/pangle_com.byted.pangle/next/a236f56217cf2add0df7e0b9c87f6c60-4022-4022.apk, soEntries={arm64-v8a=[lib/arm64-v8a/libPglmetasec_ml.so, lib/arm64-v8a/libttmplayer_lite.so, lib/arm64-v8a/libavmdl_lite.so, lib/arm64-v8a/libtobEmbedEncrypt.so], armeabi-v7a=[lib/armeabi-v7a/libttmplayer_lite.so, lib/armeabi-v7a/libPglmetasec_ml.so, lib/armeabi-v7a/libavmdl_lite.so, lib/armeabi-v7a/libtobEmbedEncrypt.so]} E/Zeus/so ( 996): NativeLibHelper isPluginApkMatchHostAbi [false], /data/user/0/xxxx.com.xxx/app_tt_pangle_bykv_file/pangle_com.byted.pangle/next/a236f56217cf2add0df7e0b9c87f6c60-4022-4022.apk V/Zeus/reporter( 996): eventName: zeus_error V/Zeus/reporter( 996): categoryData:{ V/Zeus/reporter( 996): "log_tag": "Zeus/so", V/Zeus/reporter( 996): "net_type": "5", V/Zeus/reporter( 996): "process_name": "xxx.com.xxx", V/Zeus/reporter( 996): "plugin_api_version": "-1", V/Zeus/reporter( 996): "zeus_sdk_version": "0.0.1-beta.53-bugfix.19-pangle" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): metricData:{} V/Zeus/reporter( 996): logExtrData:{ V/Zeus/reporter( 996): "message": "NativeLibHelper isPluginApkMatchHostAbi [false], /data/user/0/xxx.com.xxx/app_tt_pangle_bykv_file/pangle_com.byted.pangle/next/a236f56217cf2add0df7e0b9c87f6c60-4022-4022.apk", V/Zeus/reporter( 996): "throwable": "" V/Zeus/reporter( 996): } I/Zeus/DefaultReporterImpl( 996): skip default report V/Zeus/reporter( 996): eventName: install_finish V/Zeus/reporter( 996): categoryData:{ V/Zeus/reporter( 996): "status_code": "32007", V/Zeus/reporter( 996): "plugin_package_name": "com.byted.pangle", V/Zeus/reporter( 996): "version_code": "4022", V/Zeus/reporter( 996): "net_type": "5", V/Zeus/reporter( 996): "process_name": "xxx.com.xxx", V/Zeus/reporter( 996): "plugin_api_version": "-1", V/Zeus/reporter( 996): "zeus_sdk_version": "0.0.1-beta.53-bugfix.19-pangle" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): metricData:{ V/Zeus/reporter( 996): "duration": "-1" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): logExtrData:{ V/Zeus/reporter( 996): "throwable": "com.bytedance.pangle.plugin.b$a: 插件包包含so不符合宿主ABI类型\n\tat com.bytedance.pangle.plugin.b.a(SourceFile:2149)\n\tat com.bytedance.pangle.plugin.Plugin.install(SourceFile:483)\n\tat com.bytedance.pangle.plugin.a.a(SourceFile:40)\n\tat com.bytedance.pangle.plugin.a.run(SourceFile:28)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)\n\tat java.lang.Thread.run(Thread.java:761)\n", V/Zeus/reporter( 996): "timestamp": "1638368783391", V/Zeus/reporter( 996): "message": "" V/Zeus/reporter( 996): } I/Zeus/DefaultReporterImpl( 996): skip default report E/Zeus/install( 996): PluginInstaller com.byted.pangle install failed. E/Zeus/install( 996): com.bytedance.pangle.plugin.b$a: 插件包包含so不符合宿主ABI类型 E/Zeus/install( 996): at com.bytedance.pangle.plugin.b.a(SourceFile:2153) E/Zeus/install( 996): at com.bytedance.pangle.plugin.Plugin.install(SourceFile:483) E/Zeus/install( 996): at com.bytedance.pangle.plugin.a.a(SourceFile:40) E/Zeus/install( 996): at com.bytedance.pangle.plugin.a.run(SourceFile:28) E/Zeus/install( 996): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) E/Zeus/install( 996): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) E/Zeus/install( 996): at java.lang.Thread.run(Thread.java:761) E/Zeus/install( 996): Caused by: com.bytedance.pangle.plugin.b$a: 插件包包含so不符合宿主ABI类型 E/Zeus/install( 996): at com.bytedance.pangle.plugin.b.a(SourceFile:2149) E/Zeus/install( 996): ... 6 more V/Zeus/reporter( 996): eventName: zeus_error V/Zeus/reporter( 996): categoryData:{ V/Zeus/reporter( 996): "log_tag": "Zeus/install", V/Zeus/reporter( 996): "net_type": "5", V/Zeus/reporter( 996): "process_name": "xxx.com.xxx", V/Zeus/reporter( 996): "plugin_api_version": "-1", V/Zeus/reporter( 996): "zeus_sdk_version": "0.0.1-beta.53-bugfix.19-pangle" V/Zeus/reporter( 996): } V/Zeus/reporter( 996): metricData:{} V/Zeus/reporter( 996): logExtrData:{ V/Zeus/reporter( 996): "message": "PluginInstaller com.byted.pangle install failed.", V/Zeus/reporter( 996): "throwable": "com.bytedance.pangle.plugin.b$a: 插件包包含so不符合宿主ABI类型\n\tat com.bytedance.pangle.plugin.b.a(SourceFile:2153)\n\tat com.bytedance.pangle.plugin.Plugin.install(SourceFile:483)\n\tat com.bytedance.pangle.plugin.a.a(SourceFile:40)\n\tat com.bytedance.pangle.plugin.a.run(SourceFile:28)\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)\n\tat java.lang.Thread.run(Thread.java:761)\nCaused by: com.bytedance.pangle.plugin.b$a: 插件包包含so不符合宿主ABI类型\n\tat com.bytedance.pangle.plugin.b.a(SourceFile:2149)\n\t... 6 more\n" V/Zeus/reporter( 996): } I/Zeus/DefaultReporterImpl( 996): skip default report I/Zeus/install( 996): Plugin INSTALL_FAILEDcom.byted.pangle:4022 W/Zeus/install( 996): Plugin delete file by failedCount > 0 com.byted.pangle:4022 D/TTPluginManager( 996): Plugin install result: [com.byted.pangle],false W/Zeus/load( 996): PluginLoader loadPlugin, UN_INSTALLED, com.byted.pangle E/TTPluginManager( 996): Load plugin failed E/PluginDelegate( 996): fail: code = 4201 msg = No initializer W/PluginDefaultAdManager( 996): Not ready, no manager W/PluginDefaultAdManager( 996): Not ready, no manager W/PluginDefaultAdManager( 996): Not ready, no manager W/PluginDefaultAdManager( 996): Not ready, no manager W/PluginDefaultAdManager( 996): Not ready, no manager I/flutter ( 996): false

    question 
    opened by dev-zl 3
  • 提示成功,但并未展示,后续又有提示广告物料预加载失败

    提示成功,但并未展示,后续又有提示广告物料预加载失败

      Future<void> showSplashAd([String? logo]) async {
        try {
          bool result = await FlutterPangleAds.showSplashAd(
            '888015697',
            logo: logo,
            timeout: 3.5,
          );
          print("展示开屏广告${result ? '成功' : '失败'}");
        } on PlatformException catch (e) {
          print("展示开屏广告失败 code:${e.code} msg:${e.message} details:${e.details}");
        }
      }
    

    D/PluginDelegate(13814): MethodChannel onMethodCall method:showSplashAd arguments:{posId=888015697, logo=null, timeout=3.5} I/flutter (13814): 展示开屏广告成功 D/libMEOW (13814): meow new tls: 0xb4000076bd6a3ac0 D/libMEOW (13814): applied 1 plugins for [com.example.pangle_ad_example]: D/libMEOW (13814): plugin 1: [libMEOW_gift.so]: D/libMEOW (13814): meow delete tls: 0xb4000076bd6a3ac0 D/ViewContentFactory(13814): initViewContentFetcherClass I/ContentCatcher(13814): ViewContentFetcher : ViewContentFetcher D/ViewContentFactory(13814): createInterceptor took 0ms D/IS_CTS_MODE(13814): false D/MULTI_WINDOW_SWITCH_ENABLED(13814): false I/ContentCatcher(13814): Interceptor : Catcher list invalid for [email protected]_pangle_ads.page.AdSplashActivity@75604654 I/ContentCatcher(13814): Interceptor : Get featureInfo from config image_pick_mode I/ContentCatcher(13814): Interceptor : Get featureInfo from config pick_mode D/DecorView: getWindowModeFromSystem windowmode is 1 D/Splash_FullLink(13814): loadAd Type 2 E/NetApiImpl(13814): V/DelegateRunnable(13814): run: pool = log waitTime = 0 taskCost = 0 name= upload_dpl V/AdLocationUtils(13814): Location cache time = 1800000 I/GlobalInfo(13814): sdk_ad_location I/AdLocationUtils(13814): Use the last valid location V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    V/DelegateRunnable(13814): run: pool = log waitTime = 0 taskCost = 3 name= uploadLogEvent V/DelegateRunnable(13814): run: pool = io waitTime = 1 taskCost = 0 name= getSecdid V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    I/GlobalInfo(13814): sdk_clien_ip_address V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    D/TNCManager(13814): handleHostMapping, nomatch: api-access.pangolin-sdk-toutiao.com D/ViewRootImplAdSplashActivity: hardware acceleration = true, sRendererEnabled = true, forceHwAccelerated = false D/DecorView: getWindowModeFromSystem windowmode is 1 D/DecorView: updateDecorCaptionStatus displayWindowDecor is false V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    D/TNCManager(13814): handleHostMapping, nomatch: api-access.pangolin-sdk-toutiao.com V/DelegateRunnable(13814): run: pool = log waitTime = 0 taskCost = 3 name= uploadLogEvent E/ignored (13814): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference E/ignored (13814): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference V/DelegateRunnable(13814): run: pool = io waitTime = 0 taskCost = 61 name= unknown E/NetApiImpl(13814): V/AdLocationUtils(13814): Location cache time = 1800000 I/GlobalInfo(13814): sdk_ad_location I/AdLocationUtils(13814): Use the last valid location V/DelegateRunnable(13814): run: pool = io waitTime = 0 taskCost = 0 name= getSecdid V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    I/GlobalInfo(13814): sdk_clien_ip_address V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    D/TNCManager(13814): handleHostMapping, nomatch: api-access.pangolin-sdk-toutiao.com V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    V/DelegateRunnable(13814): run: pool = log waitTime = 0 taskCost = 0 name= uploadLogEvent V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    W/System.err(13814): java.lang.SecurityException: Permission denial W/System.err(13814): at android.os.Parcel.createExceptionOrNull(Parcel.java:2456) W/System.err(13814): at android.os.Parcel.createException(Parcel.java:2440) W/System.err(13814): at android.os.Parcel.readException(Parcel.java:2423) W/System.err(13814): at android.os.Parcel.readException(Parcel.java:2365) W/System.err(13814): at com.xiaomi.mirror.IMirrorAppService$Stub$Proxy.isWorking(IMirrorAppService.java:187) W/System.err(13814): at com.xiaomi.mirror.MirrorManager.isWorking(MirrorManager.java:259) W/System.err(13814): at com.bytedance.sdk.component.panglarmor.SoftDecTool.b(Native Method) W/System.err(13814): at com.bytedance.dutexplorer.tmapcloak.obj_bytdance_call(Native Method) W/System.err(13814): at com.bytedance.sdk.component.panglarmor.SoftDecTool.a(Unknown Source:15) W/System.err(13814): at com.bytedance.sdk.component.panglarmor.SoftDecTool$2.run(Unknown Source:170) W/System.err(13814): at android.os.Handler.handleCallback(Handler.java:938) W/System.err(13814): at android.os.Handler.dispatchMessage(Handler.java:99) W/System.err(13814): at android.os.Looper.loopOnce(Looper.java:210) W/System.err(13814): at android.os.Looper.loop(Looper.java:299) W/System.err(13814): at android.os.HandlerThread.run(HandlerThread.java:67) V/DelegateRunnable(13814): run: pool = log waitTime = 0 taskCost = 3 name= uploadLogEvent D/TNCManager(13814): handleHostMapping, nomatch: api-access.pangolin-sdk-toutiao.com E/ignored (13814): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference E/ignored (13814): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference D/splashLoad(13814): 广告物料预加载失败....reason: 0 message: 广告位ID不合法40006 D/SplashAdCacheManager(13814): reason: 0 message: 广告位ID不合法40006 E/SplashAdCacheManager(13814): SplashAdCacheManager 已经加载过了 adSlot.getCodeId() 888015697 E/SplashAdCacheManager(13814): SplashAdCacheManager 是否需要加载其他rit开屏广告 E/SplashAdCacheManager(13814): mloadSplashParaHashMap == null || mloadSplashParaHashMap.size() == 0 V/GlobalInfo(13814): use cache key= sdk_ip_address value = 305d6ea8626b6257289c39b0784fcfa64c56e6d1e444638a2GUhhztCFyrJKPtP0Er7QeA== V/GlobalInfo(13814):
    V/GlobalInfo(13814): use cache key= sdk_ip_v6 value = 3fac74943ee5fcdb7e767e95ec3cb32c0bbf271ce90422a2bfN6hsUqR2v8rY7w70Xrjb1Sxo6ucCuxPSQskS0ZaEHpsZ2U58i5l940gj8k34WJv V/GlobalInfo(13814):
    V/DelegateRunnable(13814): run: pool = log waitTime = 1 taskCost = 1 name= uploadLogEvent V/DelegateRunnable(13814): run: pool = io waitTime = 0 taskCost = 50 name= unknown D/DecorView: onWindowFocusChanged hasWindowFocus false D/DecorView: onWindowFocusChanged hasWindowFocus true D/View (13814): [Warning] assignParent to null: this = DecorView@4c8076a[AdSplashActivity]

    opened by lizhuoyuan 2
  • banner一直报错40006

    banner一直报错40006

    请问下,banner的初始化是在哪里完成的?

    我看其他的广告位通过PangleAds(appId)可以对应的appId,直接引入posId就能正常展示。但是banner直接传入的是posId,这个版位的appId是哪里初始化的呢

    我在想是不是报错和初始化banner有关系,因为我用了事例的appId和posId是没有问题的。

    opened by fuufuuf 2
  • 优化 iOS 开屏点击广告后,进入应用后没有点击事件响应了

    优化 iOS 开屏点击广告后,进入应用后没有点击事件响应了

    描述

    点击开屏广告后,接下来进入 App 后 Flutter 层的点击事件无法响应了,但是可以响应滑动事件。

    平台

    • [x] iOS
    • [ ] Android

    截图/演示

    https://user-images.githubusercontent.com/8764899/133041508-aad200d8-6fa2-4515-a028-745eb72d6c3f.mov

    opened by yy1300326388 1
Releases(2.6.1)
  • 2.6.1(Sep 6, 2022)

    • [修复] iOS 开屏广告点击后不跳转的问题
    • [修复] Android 激励视频通知两次激励的问题

    感谢两位朋友的反馈 感谢 yy 的赞赏 ❤️ 用心开源,感谢 Star ⭐️

    Full Changelog: https://github.com/FlutterAds/flutter_pangle_ads/compare/2.6.0...2.6.1

    Source code(tar.gz)
    Source code(zip)
  • 2.6.0(Sep 2, 2022)

    • [升级] 适配 4700 SDK 版本#30
    • [新增] 新增进阶激励视频支持#31
    • [升级] iOS SDK 到 v4.7.0.8
    • [升级] Android SDK 到 Pro 版 v4.7.1.2

    ❤️ 用心开源,感谢 Star ⭐️

    Full Changelog: https://github.com/FlutterAds/flutter_pangle_ads/compare/2.5.0...2.6.0

    Source code(tar.gz)
    Source code(zip)
  • 2.5.0(Mar 18, 2022)

    • [修复] splashButtonType 新版 SKD 不存在的问题 #20
    • 升级 iOS SDK 到 v4.3.0.4
    • 升级 Android SDK 到 Pro 版 v4.3.0.8
    • 1x 已不再维护了🤗

    ❤️ 用心开源,感谢 Star ⭐️

    Source code(tar.gz)
    Source code(zip)
  • 2.4.0(Nov 30, 2021)

  • 1.4.0(Nov 30, 2021)

  • 2.3.1(Oct 28, 2021)

  • 1.3.1(Oct 28, 2021)

  • 2.3.0(Sep 14, 2021)

    • 修复 iOS 点击开屏广告后 Flutter 页面点击事件无响应的问题 #8(全网唯一修复 💪🏻)
    • 增加 Android 下载确认弹窗配置
    • Banner 增加 autoClose 字段决定是否可以关闭广告,以适配会员才可以关闭的场景
    • 优化 Android 开屏加载素材尺寸
    • 优化基础架构
    • 升级 Android SDK 到 Pro 版 v4.0.0.1

    ❤️ 用心开源,感谢 Star ⭐️

    Source code(tar.gz)
    Source code(zip)
  • 1.3.0(Sep 13, 2021)

    • 修复 iOS 点击开屏广告后 Flutter 页面点击事件无响应的问题 #8(全网唯一修复 💪🏻)
    • 增加 Android 下载确认弹窗配置
    • Banner 增加 autoClose 字段决定是否可以关闭广告,以适配会员才可以关闭的场景
    • 优化 Android 开屏加载素材尺寸
    • 优化基础架构
    • 升级 Android SDK 到 Pro 版 v4.0.0.1

    ❤️ 用心开源,感谢 Star ⭐️

    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Sep 4, 2021)

    • 增加 Banner 广告支持
    • 优化开屏广告支持超时时间设置 #3
    • 开屏 API 变更,logo 参数由位置参数变为可选命名参数,注意修改 #3
    • 升级 Android SDK 到 v3.9.0.5
    • 项目增加 CI/CD 检查和自动发布,提高项目质量

    ❤️ 用心开源,感谢 Star ⭐️

    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Sep 4, 2021)

    • 增加 Banner 广告支持
    • 优化开屏广告支持超时时间设置 #3
    • 开屏 API 变更,logo 参数由位置参数变为可选命名参数,注意修改 #3
    • 升级 Android SDK 到 v3.9.0.5
    • 项目增加 CI/CD 检查和自动发布,提高项目质量

    ❤️ 用心开源,感谢 Star ⭐️

    Source code(tar.gz)
    Source code(zip)
  • 2.1.0(Aug 28, 2021)

  • 1.1.0(Aug 28, 2021)

Owner
致力于构建优质的 Flutter 广告插件
null
MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab changing, and more. You can enjoy a smooth transition from legacy native code to Flutter with it.

中文 README MixStack MixStack lets you connects Flutter smoothly with Native pages, supports things like Multiple Tab Embeded Flutter View, Dynamic tab

Yuewen Engineering 80 Dec 19, 2022
Googleads-mobile-flutter - A Flutter plugin for the Google Mobile Ads SDK

Google Mobile Ads for Flutter This repository contains the source code for the Google Mobile Ads Flutter plugin, which enables publishers to monetize

Google Ads 251 Jan 2, 2023
Flutter GetX模板代码生成 Gradle模式开发---Used to generate the template code of GetX framework

getx_template 语言: English | 中文简体 GetX usage Gold digging: Flutter GetX use --- simple charm! Renderings Plug-in effect Take a look at the effect diagr

小呆呆666 241 Dec 23, 2022
Flutter plugin to listen to the process text intent stream.

Flutter Process Text Plugin Show some ❤️ and ⭐ the repo Why use Flutter Process Text? Flutter Process Text Plugin is known for : Flutter Process Text

Divyanshu Shekhar 14 Jul 1, 2022
Flutter plugin to listen to the process text intent stream.

Flutter Process Text Plugin Compatibility ✅ Android ❌ iOS (active issue: iOS support) Show some ❤️ and ⭐ the repo Why use Flutter Process Text? Flutte

Devs On Flutter 14 Jul 1, 2022
A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.

just_waveform This plugin extracts waveform data from an audio file that can be used to render waveform visualisations. Usage final progressStream = J

null 53 Dec 4, 2022
Flutter plugin for notification read & reply

Reflex Flutter plugin for notification read & reply. Compatibility ✅ Android ❌ iOS (active issue: iOS support for reflex) Show some ❤️ and ⭐ the repo

Devs On Flutter 14 Dec 20, 2022
Flutter plugin to listen to all incoming notifications (posted or removed) with the possibility to reply to them

notification_listener_service A flutter plugin for interacting with Notification Service in Android. NotificationListenerService is a service that rec

Iheb Briki 10 Dec 15, 2022