OpenSet Android SDK接入文档(AndroidStudio)
接入前注意事项(请先阅读注意事项再进行sdk对接)
1、SDK有两种对接方式,一种是maven,一种是arr包引入,开发者按需对接
2、SDK会依赖一些第三方库,通过maven方式对接的默认会自动依赖对应的第三方库。通过arr包对接的则需要手动引入第三方库的依赖。具体的引入方式文档会有说明。
3、如果Maven引入的第三方库和你自己项目中引入的三方库重复同时版本不同,并且想使用自己引入的版本,则自己exclude。需要注意的是所有依赖的第三方库都是必须的,可以替换版本,但不能移除。否则会造成广告无法播放,闪退等问题。
4、原则上不允许同时对接多家聚合广告,如果有需求并且两家引入的相同的第三方广告sdk造成冲突的,请联系我方技术人员。
5、原则上请使用每次官网上最新版本的AdSet SDK和适配的第三方广告SDK。并且第三方SDK版本和适配器版本必须一一匹配。如果不得已下(例如同时对接多家聚合广告并且两家最新适配的第三方广告SDK版本不一样的)需要使用跟当前AdSet SDK版本不匹配的第三方广告SDK版本。请联系我方技术人员
6、每次对接和更新应该详细查看混淆的忽略文件内容。版本更新和新增第三方广告SDK都有可能对混淆文件进行调整。
7、suppor和androidx的对接会有所区别,对接时请注意。
8、快手有ad版本和ct版本的sdk,如果只需要广告,则引入ad版本即可,ad版本更新会更快,并且包更小。如果需要使用短视频短剧等功能,再引入ct包,ct包包含短视频短剧以及广告,包更大,更新频率慢。ad和ct不能同时使用,只能选择一个。
9、虽然初始化以及每种广告都有设置UserId的方法,但是不管在什么广告类型设置,不管在代码中任务位置设置,都是全局生效的,即在banner中设置了userid,在激励广告中也是同一个userid,除非再设置一次进行重置,所以对于需要服务端回调并且回调中带有场景值等透传信息的,在播放对应广告前应该先调用setUserId设置一下userid,并且在这次广告看完之前不允许再设置新的userid。
10、startLoad方法可以预加载广告放在首页调用。但用户今日没有看广告的需求则不建议调用。startload只是预加载,最终播放广告还需要调用showAd方法
11、除了开屏广告,其他的广告类型都有startLoad方法对广告进行预加载。全局只需要调用一次即可。没有状态回调。
12、所有广告必须在主线程调用
SDK接入配置
方法一:maven接入(推荐)
1、在项目根目录的build.gradle文件中引入 adset、荣耀和gromore仓库
buildscript {
repositories {
.
.
.
maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url 'https://developer.hihonor.com/repo' }
maven {
allowInsecureProtocol = true
url "http://maven.shenshiads.com/nexus/repository/adset/"
}
}
}
allprojects {
repositories {
maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url 'https://developer.hihonor.com/repo' }
maven {
allowInsecureProtocol = true
url "http://maven.shenshiads.com/nexus/repository/adset/"
}
}
}
2、在module的build.gradle中引入sdk和第三方ADN
android {
...
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
implementation 'com.shenshi:ad-openset-sdk:6.4.0.6'
implementation 'com.shenshi:ad-tanx-adapter:3.5.4.1'
implementation 'com.shenshi:ad-beizi-adapter:4.90.4.11.2'
implementation 'com.shenshi:ad-guangdiantong-adapter:4.580.1450.1'
implementation 'com.shenshi:ad-kuaishou-ad-adapter:3.3.65.3'
implementation 'com.shenshi:ad-kuaishou-ct-adapter:3.3.63.5'
implementation 'com.shenshi:ad-sigmob-adapter:4.17.1.2'
implementation 'com.shenshi:ad-gromore-adapter:6.1.2.5.1'
implementation 'com.shenshi:ad-baidu-adapter:9.352.2'
implementation 'com.shenshi:ad-hailiang-adapter:3.465.10.431.2'
implementation 'com.shenshi:ad-zhangyu-adapter:1.6.0.2.2'
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.28'
}
方式二:arr引入
1、官网下载SDK包后解压,将adapter文件夹和adn文件夹内容以及外面的oaid包全部复制到项目的libs文件夹中,如果没有libs文件夹,则自己在modlue下创建一个,adn中ks-ad和ks-ct只能使用一个。
注意,这里adn文件夹中缺少tanx的包,是因为tanx只支持maven引入,没有离线的arr包。所以需要在gradle中单独引入,下面会说明
2、在项目的根目录引入以下内容
buildscript {
repositories {
.
.
.
maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url 'https://developer.hihonor.com/repo' }
}
}
allprojects {
repositories {
maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url 'https://developer.hihonor.com/repo' }
}
}
3、在module的build文件中引入以下内容
android {
...
defaultConfig {
...
multiDexEnabled true
}
}
dependencies {
implementation fileTree("libs")
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
implementation 'io.github.aliyun-sls:aliyun-log-android-sdk:2.7.0'
implementation 'com.hihonor.mcs:ads-identifier:1.0.2.301'
implementation("com.tanx:TanxUISDK:3.4.5") {
exclude group: 'com.squareup.okhttp3'
}
implementation 'com.android.support:multidex:1.0.3'
implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.28'
}
权限和配置
1、将解压后的xml文件夹复制到res文件夹下面
2、打开AndroidManifest.xml文件,将以下内容复制到指定的位置
<manifest ...>
...
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<application
...
android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:allowBackup"
>
...
<provider
android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
android:authorities="${applicationId}.TTMultiProvider"
android:exported="false" />
<provider
android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
android:authorities="${applicationId}.TTFileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<provider
android:name="com.qq.e.comm.GDTFileProvider"
android:authorities="${applicationId}.gdt.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
<provider
android:name="com.sigmob.sdk.SigmobFileV4Provider"
android:authorities="${applicationId}.sigprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/sigmob_provider_paths" />
</provider>
</application>
</manifest>
混淆配置
#-------------- AdSet start-------------
-keep class com.kc.openset.**{*;}
-keep class com.od.**{*;}
-dontwarn com.kc.openset.**
-keep @com.qihoo.SdkProtected.OSETSDK.Keep class **{*;}
-keep,allowobfuscation interface com.qihoo.SdkProtected.OSETSDK.Keep
#-------------- AdSet end-------------
#-------------- gromoe start-------------
-keep class com.bytedance.sdk.openadsdk.** { *; }
-keep public interface com.bytedance.sdk.openadsdk.downloadnew.** {*;}
-keep class com.ss.**{*;}
-dontwarn com.ss.**
-keep class bykvm*.**
-keep class com.bytedance.msdk.adapter.**{ public *; }
-keep class com.bytedance.msdk.api.** {
public *;
}
-keep class com.bytedance.msdk.base.TTBaseAd{*;}
-keep class com.bytedance.msdk.adapter.TTAbsAdLoaderAdapter{
public *;
protected <fields>;
}
#-keep class com.bykv.**{*;}
#-keep class com.byted.live.lite.**{*;}
#-keep class com.bytedance.**{*;}
#-keep class com.pandora.common.**{*;}
#-keep class com.ss.**{*;}
#-------------- gromoe end -------------
#-------------- 快手 start-------------
-keep class org.chromium.** {*;}
-keep class org.chromium.** { *; }
-keep class aegon.chrome.** { *; }
-keep class com.kwai.**{ *; }
-dontwarn com.kwai.**
-dontwarn com.kwad.**
-dontwarn com.ksad.**
-dontwarn aegon.chrome.**
#-------------- 快手 end-------------
#-------------- sigmob start-------------
-dontoptimize
-keep class sun.misc.Unsafe { *; }
-keep class com.sigmob.**.**{*;}
-keep interface com.sigmob.**.**{*;}
-keep class com.czhj.**{*;}
-keep interface com.czhj.**{*;}
# androidx
-keep class com.google.android.material.** {*;}
-keep class androidx.** {*;}
-keep public class * extends androidx.**
-keep interface androidx.** {*;}
-dontwarn com.google.android.material.**
-dontnote com.google.android.material.**
-dontwarn androidx.**
# android.support.v4
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
#-------------- sigmob end-------------
#-------------- oaid start-------------
# 注意不同版本混淆不一样,如果你接入的是sdk默认的1.0.25版本就用下面的,其他版本自行检查
-keep class com.bun.supplier.** {*;}
-dontwarn com.bun.supplier.core.**
-keep class XI.**{*;}
-keep class com.bun.miitmdid.**{*;}
-keep class com.asus.msa.**{*;}
-keep class com.bun.**{*;}
-keep class com.huawei.hms.ads.identifier.**{*;}
-keep class com.netease.nis.sdkwrapper.**{*;}
-keep class com.samsung.android.deviceidservice.**{*;}
-keep class com.zui.**{*;}
-keep class XI.**{*;}
#-------------- oaid end-------------
#-------------- 广点通 start-------------
-keep class com.qq.e.** {*;}
-dontwarn com.qq.e.**
#-------------- 广点通 end-------------
#-------------- 百度 start-------------
-ignorewarnings
-dontwarn com.baidu.mobads.sdk.api.**
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class com.baidu.mobads.** { *; }
-keep class com.style.widget.** {*;}
-keep class com.component.** {*;}
-keep class com.baidu.ad.magic.flute.** {*;}
-keep class com.baidu.mobstat.forbes.** {*;}
#-------------- 百度 end-------------
#-------------- okhttp3 start-------------
# OkHttp3
# https://github.com/square/okhttp
# okhttp
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.* { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
# okhttp 3
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
-keepattributes InnerClasses
# Okio
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public class java.nio.* { *; }
#----------okhttp end--------------
#----------log start--------------
-keep class com.aliyun.sls.android.producer.** { *; }
-keep interface com.aliyun.sls.android.producer.* { *; }
#----------log end--------------
#----------倍孜 start--------------
-dontwarn com.beizi.fusion.**
-dontwarn com.beizi.ad.**
-keep class com.beizi.fusion.** {*; }
-keep class com.beizi.ad.** {*; }
-keep class com.qq.e.** {
public protected *;
}
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-dontwarn org.apache.**
#----------倍孜 end--------------
#----------Glide start--------------
-dontwarn com.bumptech.glide.**
-keep class com.bumptech.glide.**{*;}
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
**[] $VALUES;
public *;
}
#----------Glide end--------------
#----------阿里TanxAd start--------------
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*;}
-keep class com.bumptech.glide.**{*;}
-keep class com.alimm.tanx.**{*;}
# 有进程间通信,保证service相关不被混淆
#-keep public class * extends android.app.Service
#-keep public class * extends android.content.BroadcastReceiver
# 自动曝光数据的防混淆
-keep class * implements java.io.Serializable{
<fields>;
<methods>;
}
#----------阿里TanxAd end--------------
#----------华为荣耀 start--------------
-keep class com.hihonor.ads.** {*; }
#----------华为荣耀 end--------------
#-------------- 章鱼 start-------------
-dontwarn com.octopus.ad.**
-keep class com.octopus.ad.** {*;}
#-------------- 章鱼 end-------------
测试id
appkey | E6097975B89E83D6 |
---|
开屏广告位id | 7D5239D8D88EBF9B6D317912EDAC6439 |
插屏广告位id | 1D273967F51868AF2C4E080D496D06D0 |
banner广告位id | 107EB50EDFE65EA3306C8318FD57D0B3 |
激励视频广告位id | 09A177D681D6FB81241C3DCE963DCB46 |
全屏视频广告位id | D879C3DED01D5CE319CD2751474BA8E4 |
信息流(原生)广告位id | 89FEEA66F9228ED3F6420294B89A902B |
draw视频流广告位id | 7D5239D8D88EBF9B6D317912EDAC6439 |
短视频内容模块id | C5F4F13C421B10664D9D21EDB52C8C5D |
双排短视频内容模块id | 77C8E2D8F5C1D88CBF0D118F7F1FC50B |
横屏长视频内容模块id | E144B8229BC47DF6A8FBBBB21074F9F2 |
短剧视频内容模块id | C80DDB16A8F5D77B7EE1012C984C84DE |
短剧视频内容模块2id | C4AD0620230B028DCB87D0B304651C5A |
信息流内容模块id | 4EC4251D616C69030A161A930A938596 |
信息流内容模块2id | EBE266AAE65F52C37A28BF2D586132EB |
悬浮窗模块id | C20D0FDCA88E06E6718A33279AAD2B4D |
初始化SDK
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
Log.e("aaaaaa", "进程名:" + getProcessName());
try {
WebView.setDataDirectorySuffix(getProcessName());
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public void onCreate() {
super.onCreate();
OSETSDK.getInstance().setUserId("aaaa");
OSETSDK.getInstance().init(Application, APPKEY, OSETInitListener);
}
}
OSETSDK | 初始化 |
---|
setUserId(String var1) | 设置用户id(对接的app的用户唯一id,没有可不传) |
getVersionCode() | 获取AdSet SDK 版本号 |
getVersionName() | 获取AdSet SDK 版本名 |
init(Application var1, String var2,OSETInitListener var3) | SDK初始化 (var1:Application、var2:AppKey、var3:回调监听) |
OSETInitListener | 初始化结果状态回调接口 |
---|
onError(String var1) | 初始化失败 (var1:失败信息) |
onSuccess() | 初始化成功 |
广告模块
开屏广告
xml文件添加
<!--不可设置visibility=gone-->
<FrameLayout
android:id="@+id/fl"
android:layout_width="match_parent"
android:layout_height="match_parent"></FrameLayout>
java代码
layout = findViewById(R.id.fl);
OSETSplash.getInstance()
.setUserId(Common.USER_ID)
.show(Activity, fl, 广告位id,OSETFullScreenListener)
OSETSplash | 开屏广告 |
---|
show(Activity var1,ViewGroup var2,String var3, OSETSplashListener var4) | 播放开屏广告(var1:Activity, var2:开屏广告容器,var3 开屏广告位id,var4 开屏广告状态监听) |
OSETSplashListener | 开屏广告状态监听 |
---|
onShow | 广告曝光哦 |
onError(String var1,String var2) | 广告加载/曝光失败(var1:错误码,var2:错误信息) |
onClick | 广告点击 |
onClose | 广告关闭 |
banner广告
java代码
OSETBanner.getInstance()
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_Banner)
.loadAd(this, osetBannerListener);
OSETBanner | Banner广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置banner广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
loadAd(Activity var1, OSETBannerListener var2) | 加载Banner广告(var1:Activity, var2:Banner广告回调监听) |
OSETBannerListener | Banner广告回调监听 |
---|
onShow(View var1) | 广告曝光(var1:广告view) |
onClose(View var1) | 广告关闭(var1:广告view) |
onClick(View var1) | 广告点击(var1:广告view) |
onLoad(View var1) | 广告加载成功(var1:广告view) |
onError(String var1, String var2) | 广告点击(var1:错误码, var2:错误信息) |
插屏广告
播放广告
OSETInterstitial
.getInstance()
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_INTERSTITIAL)
.showAd(Activity,OSETInterstitialListener);
OSETInterstitial | 插屏广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
showAd(Activity var1,OSETInterstitialListener var2) | 播放插屏广告(var1 Activity, var2 广告回调监听) |
OSETInterstitialListener | 插屏广告回调监听 |
---|
onShow() | 广告曝光 |
onClick() | 广告点击 |
onClose() | 广告关闭 |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
插屏横屏广告
缓存广告
OSETInterstitialHorizontal.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_INTERSTITIAL_HORIZONTAL)
.showAd(Activity,OSETInterstitialListener);
OSETInterstitialHorizontal | 插屏横屏广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
showAd(Activity var1,OSETInterstitialListener var2) | 播放横屏插屏广告(var1 Activity, var2 广告回调监听) |
OSETInterstitialListener | 插屏横屏广告回调监听 |
---|
onShow() | 广告曝光 |
onClick() | 广告点击 |
onClose() | 广告关闭 |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
全屏视频广告
缓存广告
OSETFullVideo.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_FULL_VIDEO)
.showAd(Activity,OSETFullVideoListener);
OSETFullVideo | 全屏广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
showAd(Activity var1,OSETInterstitialListener var2) | 播放全屏广告(var1 Activity, var2 广告回调监听) |
OSETFullVideoListener | 全屏广告回调监听 |
---|
onShow() | 广告曝光 |
onVideoStart() | 视频开始播放 |
onClick() | 广告点击 |
onVideoEnd() | 视频播放结束 |
onClose() | 广告关闭 |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
激励视频广告
缓存广告
OSETRewardVideo.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_REWARD_VIDEO)
.showAd(Activity,OSETRewardListener);
OSETRewardVideo | 激励广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
showAd(Activity var1,OSETRewardListener var2) | 播放激励广告(var1:Activity, var2:广告回调监听) |
OSETRewardListener | 激励广告回调监听 |
---|
onShow(String var1) | 广告曝光(广告唯一id) |
onVideoStart(String var1) | 视频开始播放 |
onClick() | 广告点击 |
onReward(String var1,int var2) | 广告关闭(广告唯一id) |
onVideoEnd(String var1) | 视频播放结束 |
onClose(String var1) | 广告关闭(广告唯一id) |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
原生广告
java代码
OSETNative.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_FULL_VIDEO)
.loadAd(Activity,OSETNativeListener);
OSETNative | 模板信息流广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
startLoad() | 广告预加载,全局调用一次即可 |
loadAd(Activity var1,OSETNativeListener var2) | 加载原生广告(var1:Activity, var2:广告回调监听) |
OSETNativeListener | 模板信息流广告回调监听 |
---|
onShow(View var1) | 广告曝光(广告view) |
onRenderFail(View var1) | 广告渲染失败 |
onRenderSuccess(View var1) | 广告渲染成功(广告view) |
onClick(View var1) | 广告点击(广告view) |
onLoad(View var1) | 广告加载成功(广告view) |
onClose(View var1) | 广告关闭(广告view) |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
原生自渲染广告
请参考demo中native_view_layout文件的控价类型,控件类型不能更改
NativeViewConfig nativeViewConfig = new NativeViewConfig.Builder()
.setLayoutId(R.layout.native_view_layout)
.setTitleId(R.id.tv_title)
.setAdSourceId(R.id.tv_ad_source)
.setAdSourceImgId(R.id.iv_ad_source_img) 广告来源图标
.setContentId(R.id.tv_content)
.setActBtnId(R.id.btn_action)
.setCloseImgId(R.id.iv_close)
.setAppNameId(R.id.tv_app_name)
.setAppAuthorNameId(R.id.tv_app_auother)
.setAppVersionId(R.id.tv_app_version)
.setAppPermissionId(R.id.tv_app_permission)
.setAppPrivacyId(R.id.tv_app_privacy)
.setAppFunctionId(R.id.tv_app_function)
.setAdIconId(R.id.iv_icon)
.setAdImgId(R.id.iv_img)
.setAdVideoId(R.id.fl_video)
.builder();
OSETNativeView.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_FULL_VIDEO)
.setNativeViewConfig(nativeViewConfig)
.loadAd(Activity,OSETNativeViewListener);
Col1 | Col2 |
---|
NativeViewConfig | 广告UI配置 |
setLayoutId | 布局文件 |
setTitleId | 标题 |
setAdSourceId | 广告来源 |
setAdSourceImgId | 广告来源图标 |
setContentId | 广告内容 |
setActBtnId | 广告事件按钮 |
setCloseImgId | 广告关闭按钮图片 |
setAppNameId | 下载类广告 app名字 |
setAppAuthorNameId | 下载类广告 app作者 |
setAppVersionId | 下载类广告 app版本 |
setAppPermissionId | 下载类广告 app权限跳转按钮 |
setAppPrivacyId | 下载类广告 app隐私跳转按钮 |
setAppFunctionId | 下载类广告 app功能跳转按钮 |
setAdIconId | 广告图标 |
setAdImgId | 图片类广告容器 |
setAdVideoId | 视频类广告容器 |
OSETNativeView | 自渲染信息流广告 |
---|
setUserId(String var1) | 设置用户唯一id |
setContext(Activity var1) | 设置Activity |
setPosId(String var1) | 设置插屏广告位 |
setNativeViewConfig(NativeViewConfig var1) | 设置自渲染UI配置 |
startLoad() | 广告预加载,全局调用一次即可 |
loadAd(Activity var1,OSETNativeViewListener var2) | 加载原生广告(var1:Activity, var2:广告回调监听) |
OSETNativeViewListener | 自渲染信息流广告回调监听 |
---|
onShow(View var1) | 广告曝光(广告view) |
onRenderFail(View var1) | 广告渲染失败 |
onRenderSuccess(View var1) | 广告渲染成功(广告view) |
onClick(View var1) | 广告点击(广告view) |
onLoad(View var1) | 广告加载成功(广告view) |
onClose(View var1) | 广告关闭(广告view) |
onError(String var1,String var2) | 广告加载/播放失败(var1:错误码, var2:错误信息) |
Draw信息流广告
java代码
OSETDrawNative.getInstance()
.setContext(this)
.setUserId(Common.USER_ID)
.setPosId(Common.POS_ID_DRAW_NATIVE)
.loadAd(Activity,OSETDrawNativeListener);
OSETDrawNativeListener | draw信息流广告回调监听 |
---|
onClicked(View var1) | 广告点击 |
onLoad(View var) | 广告加载成功 |
onShow(View var) | 广告曝光成功 |
onVideoAdComplete(View view) | 视频播放完成 |
onVideoAdContinuePlay(View view) | 视频恢复播放 |
onVideoAdPaused(View view) | 视频暂停播放 |
onVideoAdStartPlay(View view) | 视频开始播放 |
onError(String var1, String var2) | 视频播放错误(var1:错误码,var2:错误信息) |
H5广告
使用方法
1、本质上H5广告加载的仍是安卓SDK的广告,demo中只是提供了一个安卓桥接H5打开广告页面的方案(具体详见 AdH5Activity 页面) 2、在安卓代码中,打开广告的方法参考不同的广告类型加载即可,如激励广告、插屏广告、全屏视频广告的加载方法
桥接方法参考
WebView mWebView = findViewById(R.id.webView);
mWebView.loadUrl("file:///android_asset/ad_h5.html");
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(this, "adSetSdkJSInterface");
@JavascriptInterface
public void showRewardAd(String adId) {
OSETRewardVideoCache.getInstance()
.setPosId(adId)
.setOSETVideoListener(new OSETVideoListener())
.showAd(activity);
}
@JavascriptInterface
public void showInsertAd(String adId) {
OSETInsertCache.getInstance()
.setPosId(adId)
.setOSETListener(new OSETListener())
.showAd(activity);
}
@JavascriptInterface
public void showFullVideoAd(String adId) {
OSETFullVideo.getInstance()
.setPosId(adId)
.setOSETVideoListener(new OSETVideoListener())
.showAd(activity);
}
短视频短剧内容插件
1、打开Activity播放短视频,只支持普通短视频。其他类型(例如双排短视频、短剧等)不支持
VideoContentConfig videoContentConfig = new VideoContentConfig.Builder()
.setRewardDownTime(30)
.setRewardCount(2)
.setNeedBack(true)
.build();
OSETVideoContent
.getInstance()
.setPosId(Common.POS_ID_VIDEO_CONTENT)
.showByActivity(this, videoContentConfig, new OSETVideoContentTaskListener())
VideoContentConfig | 短视频内容配置 |
---|
setRewardDownTime | 单词奖励需要浏览的时间,单位s,根据业务需求设定,不用可不设置 |
setRewardCount | 奖励次数2 |
setNeedBack | 是否需要返回按钮 |
OSETVideoContent | 视频内容 |
---|
setPosId | 视频内容id |
showByActivity (Activity var1,VideoContentConfig var2,OSETVideoContentTaskListener var3) | 跳转Activity播放短视频(var1:Activity, var2:短视频配置, var3:短视频播放状态回调) |
2、获取短视频/短剧fragment开发者自己渲染
OSETVideoContent.getInstance()
.setPosId(Common.POS_ID_VIDEO_CONTENT)
.loadRecommend(new OSETVideoContentListener())
OSETVideoContent.getInstance()
.setPosId(Common.POS_ID_VIDEO_CONTENT_FEED)
.loadPopular(new OSETVideoContentListener())
OSETVideoContent.getInstance()
.setPosId(Common.POS_ID_VIDEO_HORIZONTAL_FEED)
.loadDiscover(new OSETVideoContentListener())
OSETVideoContent.getInstance()
.setPosId(Common.POS_ID_VIDEO_HORIZONTAL_FEED)
.loadTuBe(new OSETVideoTuBeListener())
@Override
public void onBackPressed() {
super.onBackPressed();
if (videoContentResult != null) {
if (videoContentResult.onBackPress()) {
return;
}
}
super.onBackPressed();
}
OSETVideoContent | 视频内容 |
---|
setPosId | 视频内容id |
loadRecommend | 短视频 |
loadPopular | 双排短视频 |
loadDiscover | 长视频 |
loadTuBe | 短剧 |
OSETVideoContentListener | 视频内容回调 |
---|
onLoadFail(String var1,String var2) | 加载失败(var1:错误码,var2:错误信息) |
onLoadSuccess(VideoContentResult var1) | 加载成功(var1:视频内容对象) |
onVideoStart(int var1, boolean var2, String var3) | 广告播放(var1:视频索引, var2:是否是广告, var3 视频唯一id) |
onVideoPause(int var1, boolean var2, String var3) | 页面pause(var1:视频索引, var2:是否是广告, var3 视频唯一id) |
onVideoResume(int var1, boolean var2, String var3) | 页面reseume(var1:视频索引, var2:是否是广告, var3 视频唯一id) |
onVideoComplete(int var1, boolean var2, String var3) | 视频播放完成(var1:视频索引, var2:是否是广告, var3 视频唯一id) |
onVideoPlayError(int var1, boolean var2, String var3, String var4, String var5) | 视频播放错误(var1:视频索引, var2:是否是广告, var3 视频唯一id,var4:错误码,var5:错误信息) |
OSETVideoTuBeListener | 短剧回调 |
---|
onLoadFail(String var1, String var2) | 加载失败(var1:错误码,var2:错误信息) |
onLoadSuccess(VideoContentResult var) | 加载成功(var:视频内容对象) |
unlockFail(String var1, String var2) | 解锁失败(var1:错误码, var2:错误信息) |
unlockSuccess() | 解锁成功() |
VideoContentResult | 视频内容/短剧加载结果 |
---|
getFragment() | 获取短剧/视频内容Fragment |
onBackPress() | 返回处理 |
资讯内容
1. activity模式加载
OSETNews.getInstance().setInsertId(Common.POS_ID_Insert);
OSETNews.getInstance().setBannerId(Common.POS_ID_Banner);
OSETNews.getInstance().showNews(activity, 信息流模块id, time,num,OSETNewsListener);
2. fragment模式加载
OSETNews.getInstance().setInsertId(Common.POS_ID_Insert);
OSETNews.getInstance().setBannerId(Common.POS_ID_Banner);
getSupportFragmentManager().beginTransaction()
.replace(R.id.fl, OSETNews.getInstance()
.getNewsFragment(activity, 信息流模块id,视频内容id(可传""), num))
.commit();
幸运大抽奖
OSETDial.getInstance().show(activity, "大奖的描述", int(大奖的概率:0到100), "小奖的描述",
banner广告位id, 插屏广告位id, 激励视频广告位id, int(免费摇奖次数),
int(每天最多摇奖次数),OSETDialListener );
星座运势
OSETConstellatory.getInstance().show(activity, banner广告位id,
插屏广告位id, 激励视频广告位id,OSETConstellatoryListener);
老黄历
OSETAlmanac.getInstance().showAlmanac(activity,激励视频广告位id,
banner广告位id, OSETVideoListener);
周公解梦
OSETOneiromancy.getInstance().showOneiromancy(activity,激励视频广告位id,
banner广告位id, OSETVideoListener);
天气预报
OSETWeather.getInstance().showWeather(activity, banner广告位id, 插屏广告位id,
激励视频广告位id, OSETVideoListener);
学习天地
new OSETStudy().showStudy(activity, 激励视频广告位id, 插屏广告位id, banner广告位id,
答题数量(int), OSETVideoListener);
电费充值
OSETElectric.getInstance().showRecharge(activity,用户id);
监听方法说明
信息流模块监听
new OSETNewsListener() {
@Override
public void onTimeOver() {
}
@Override
public void onClose() {
}
}
摇奖监听
new OSETDialListener() {
@Override
public void onTopPrize() {
}
@Override
public void onSmallAward() {
}
}
星座运势监听
new OSETConstellatoryListener() {
@Override
public void onReward(String key) {
}
}