OpenSet Android SDK接入文档(AndroidStudio)


特别说明

从6.5.0.0版本开始,AdSet聚合SDK与自营广告(奇点广告)SDK融合,在对接上相对于旧版本做了很大的调整,如果是旧版本SDK升级,请格外注意。 如果是第一次对接SDK,则直接阅读文档对接即可。如果对接过程中有疑问的地方,可以在对接群里联系我方技术人员

接入前注意事项(请先阅读注意事项再进行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 {
       .
       .
       .
        // GroMore
        maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
        maven { url "https://artifact.bytedance.com/repository/pangle" }
//        荣耀
        maven { url 'https://developer.hihonor.com/repo' }
//        adset
        maven {
            allowInsecureProtocol = true
            url "http://maven.shenshiads.com/nexus/repository/adset/"
        }
    }
}

allprojects {
    repositories {
        // GroMore
        maven { url "https://artifact.bytedance.com/repository/Volcengine/" }
        maven { url "https://artifact.bytedance.com/repository/pangle" }
//        荣耀
        maven { url 'https://developer.hihonor.com/repo' }
//        adset
        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.5.0.1'
    
    //tanx
    implementation 'com.shenshi:ad-tanx-adapter:3.6.0.1'
    
    //bz
    implementation 'com.shenshi:ad-beizi-adapter:4.90.4.31.2'
    
    //gdt
    implementation 'com.shenshi:ad-guangdiantong-adapter:4.603.1473.2'
    
    //ks-ad 只对接广告请使用
    implementation 'com.shenshi:ad-kuaishou-ad-adapter:3.3.69.2'
    
    //ks-ct 广告、短视频和短剧请使用
    implementation 'com.shenshi:ad-kuaishou-ct-adapter:3.3.69.2'
    
    //sigmob
    implementation 'com.shenshi:ad-sigmob-adapter:4.19.5.2'
    
    //gromore
    implementation 'com.shenshi:ad-gromore-adapter:6.4.3.6.2'
    
    //bd
    implementation 'com.shenshi:ad-baidu-adapter:9.371.2'
    
    //hl
    implementation 'com.shenshi:ad-hailiang-adapter:3.467.10.433.2'
    
    //zy
    implementation 'com.shenshi:ad-zhangyu-adapter:1.6.1.7.2'

    //京东 androidx环境请使用
    implementation 'com.shenshi:ad-jingdong-androidx-adapter:2.6.10.1'

    //京东 support环境请使用
    implementation 'com.shenshi:ad-jingdong-support-adapter:2.6.10.1'

    //multidex 64K问题,如果已添加请忽略
    implementation 'com.android.support:multidex:1.0.3'
    
    //微信小程序广告预算相关,引入可提升ecpm。强烈建议引入
    /**
     * 1,进入微信开放平台创建移动应用;
     * 2,应用创建完成后,获取到相应的微信ApplD;
     * 3.在移动端嵌入最新版OpenSDK,并确认版本为5.3.1及以上;
     * 4.在优量汇开发者平台,将微信开放平台填写的AppID与当前应用进行关联;
     * 第四步联系我们运营帮你们配置
     */
    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 {
       .
       .
       .
        // GroMore
        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 {
        // GroMore
        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 {
    //adn+adapter
    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'
    }
    
    //multidex 64K问题,如果已添加请忽略
    implementation 'com.android.support:multidex:1.0.3'
    
    //微信小程序广告预算相关,引入可提升ecpm。强烈建议引入
    /**
     * 1,进入微信开放平台创建移动应用;
     * 2,应用创建完成后,获取到相应的微信ApplD;
     * 3.在移动端嵌入最新版OpenSDK,并确认版本为5.3.1及以上;
     * 4.在优量汇开发者平台,将微信开放平台填写的AppID与当前应用进行关联;
     * 第四步联系我们运营帮你们配置
     */
    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.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.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
            ...
            android:networkSecurityConfig="@xml/network_security_config"
            tools:replace="android:allowBackup"
    >
        ...

        <!--注意,sigmob的配置只有在support环境下需要配置,Androidx环境可以忽略,不需要配置-->
        <!--sigmob-->
        <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-------------

#-------------- 京东 start-------------
-keep class com.jd.ad.sdk.** { *; }
#-------------- 京东 end-------------

隐私合规配置

接入示例

new OSETCustomController() {

    /**
     * 是否允许SDK主动使用地理位置信息
     *
     * @return true可以获取,false禁止获取。默认为true
     */
    public boolean canReadLocation() {
        return true;
    }

    /**
     * 当canReadLocation=false时,可传入地理位置信息,sdk使用您传入的地理位置信息
     *
     * @return 地理位置参数
     */
    public Location getLocation() {
        return null;
    }

    /**
     * 是否允许SDK主动使用手机硬件参数,如:imei, android_id, meid, imsi, iccid
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canUsePhoneState() {
        return true;
    }

    /**
     * 当canUsePhoneState=false时,可传入原始的imei信息,sdk使用您传入的原始imei信息。
     * 注意:请传入原始imei值,无需使用md5加密,sdk整体信息加密传输已满足合规需要
     */
    public String getImei() {
        return "";
    }

    /**
     * 当canUsePhoneState=false时,可传入android_id信息,sdk使用您传入的android_id
     */
    public String getAndroidId() {
        return "";
    }

    /**
     * 是否允许SDK主动使用oaid
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canUseOaid() {
        return true;
    }

    /**
     * 当canUseOaid=false时,可传入oaid信息,sdk使用您传入的oaid信息
     * 注意:请传入原始oaid,无需使用md5加密,sdk整体信息加密传输已满足合规需要
     */
    public String getOaid() {
        return "";
    }

    /**
     * 是否允许SDK主动使用mac_address
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canUseMacAddress() {
        return true;
    }

    /**
     * 当canUseMacAddress=false时,可传入mac地址信息,sdk使用您传入的mac地址信息
     */
    public String getMacAddress() {
        return "";
    }

    /**
     * 是否允许SDK主动使用ACCESS_NETWORK_STATE权限
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canUseNetworkState() {
        return true;
    }

    /**
     * 是否允许SDK主动使用存储权限
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canUseStoragePermission() {
        return true;
    }

    /**
     * 是否允许SDK主动读取app安装列表
     *
     * @return true可以使用,false禁止使用。默认为true
     */
    public boolean canReadInstalledPackages() {
        return true;
    }

    /**
     * 当canReadInstalledPackages=false时,可传入package list信息,sdk使用您传入的package list
     */
    public List<String> getInstalledPackages() {
        return null;
    }

    /**
     * 是否启用个性化广告开关,默认为true
     * @return true:开启,false:关闭
     */
    public boolean canUsePersonalizedAd() {
        return true;
    }

}

测试id

appkeyE6097975B89E83D6
开屏广告位id7D5239D8D88EBF9B6D317912EDAC6439
插屏广告位id1D273967F51868AF2C4E080D496D06D0
banner广告位id107EB50EDFE65EA3306C8318FD57D0B3
激励视频广告位id09A177D681D6FB81241C3DCE963DCB46
全屏视频广告位idD879C3DED01D5CE319CD2751474BA8E4
信息流(原生)广告位id89FEEA66F9228ED3F6420294B89A902B
draw视频流广告位id7D5239D8D88EBF9B6D317912EDAC6439
短视频内容模块idC5F4F13C421B10664D9D21EDB52C8C5D
双排短视频内容模块id77C8E2D8F5C1D88CBF0D118F7F1FC50B
横屏长视频内容模块idE144B8229BC47DF6A8FBBBB21074F9F2
短剧视频内容模块idC80DDB16A8F5D77B7EE1012C984C84DE
短剧视频内容模块2idC4AD0620230B028DCB87D0B304651C5A
信息流内容模块id4EC4251D616C69030A161A930A938596
信息流内容模块2idEBE266AAE65F52C37A28BF2D586132EB
悬浮窗模块idC20D0FDCA88E06E6718A33279AAD2B4D

初始化SDK

接入示例 开发者需要在用户同意APP的隐私政策之后调用以下代码来初始化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());
            // 安卓9.0后不允许多进程使用同一个数据目录
            try {
                WebView.setDataDirectorySuffix(getProcessName());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        // setUserId传你们的用户Id,有就传没有就不传,用于根据用户反馈问题,查问题用
        OSETSDK.getInstance()
            .setUserId("aaa")
            .setCustomController(new OSETCustomController(){})
            .init(Application, APPKEY, new OSETInitListener(){});
    }
}
OSETSDK初始化
setUserId(String var1)设置用户id(对接的app的用户唯一id,没有可不传)
setCustomController()隐私合规设置
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"/>

java代码

layout = findViewById(R.id.fl);
 OSETSplash.getInstance()
        .setContext(this)
        .setPosId(Common.POS_ID_Splash)
        .loadAd(osetSplashAdLoadListener)
        
private OSETSplashAdLoadListener osetSplashAdLoadListener = OSETSplashAdLoadListener {

    void onLoadSuccess(OSETSplashAd osetSplashAd){
        osetSplashAd.showAd(Activity, FrameLayout, OSETSplashListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }
    
}

OSETSplash开屏广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETSplashAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETSplashAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETSplashAdLoadListener开屏广告加载监听
onLoadSuccess(OSETSplashAd osetSplashAd)广告加载成功,osetSplashAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETSplashAd开屏广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
showAd(Activity, FrameLayout, OSETSplashListener)广告曝光,activity:Activity,FrameLayout:广告容器 ,OSETSplashListener:广告状态监听
destroy()对象销毁
OSETSplashListener开屏广告状态监听
onShow广告曝光
onError(String var1,String var2)广告曝光失败(var1:错误码,var2:错误信息)
onClick广告点击
onClose广告关闭

banner广告

java代码

 OSETBanner.getInstance()
        .setContext(this)
        .setPosId(Common.POS_ID_Banner)
        .loadAd(osetBannerAdLoadListener)
        
private OSETBannerAdLoadListener osetBannerAdLoadListener = OSETBannerAdLoadListener {

    void onLoadSuccess(OSETBannerAd osetBannerAd){
        osetBannerAd.render(Activity, OSETBannerListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }
    
}
OSETBannerBanner广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETBannerAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETBannerAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETBannerAdLoadListenerbanner广告加载监听
onLoadSuccess(OSETBannerAd osetBannerAd)广告加载成功,osetBannerAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETBannerAdbanner广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
render(Activity, OSETBannerListener)广告渲染,activity:Activity ,OSETBannerListener:广告状态监听
destroy()对象销毁
OSETBannerListenerBanner广告状态监听
onShow(View view)广告曝光
onError(String var1,String var2)广告渲染/曝光失败(var1:错误码,var2:错误信息)
onClick(View view)广告点击
onClose(View view)广告关闭
onRenderSuccess(View view)渲染成功,view就是广告的控件,通过addView展示

插屏广告

 OSETInterstitial
    .getInstance()
    .setContext(this)
    .setUserId(Common.USER_ID)
    .setPosId(Common.POS_ID_INTERSTITIAL)
    .loadAd(OSETInterstitialAdLoadListener);
    
private OSETInterstitialAdLoadListener osetInterstitialAdLoadListener = OSETInterstitialAdLoadListener {

    void onLoadSuccess(OSETInterstitialAd osetInterstitialAd){
        osetInterstitialAd.showAd(Activity, OSETInterstitialListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

}
                
OSETInterstitial插屏广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETInterstitialAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETInterstitialAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETInterstitialAdLoadListener插屏广告加载监听
onLoadSuccess(OSETInterstitialAd osetInterstitialAd)广告加载成功,osetInterstitialAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETInterstitialAd插屏广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
showAd(Activity, OSETInterstitialListener)广告渲染,activity:Activity ,OSETInterstitialListener:广告状态监听
destroy()对象销毁
OSETInterstitialListener插屏广告状态监听
onShow()广告曝光
onError(String var1,String var2)广告曝光失败(var1:错误码,var2:错误信息)
onClick()广告点击
onClose()广告关闭

插屏横屏广告

 OSETInterstitialHorizontal
    .getInstance()
    .setContext(this)
    .setUserId(Common.USER_ID)
    .setPosId(Common.POS_ID_INTERSTITIAL_HORIZONTAL)
    .loadAd(OSETInterstitialAdLoadListener);
    
private OSETInterstitialAdLoadListener osetInterstitialAdLoadListener = OSETInterstitialAdLoadListener {

    void onLoadSuccess(OSETInterstitialAd osetInterstitialAd){
        osetInterstitialAd.showAd(Activity, OSETInterstitialListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

}

OSETInterstitialHorizontal插屏横屏广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETInterstitialAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETInterstitialAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETInterstitialAdLoadListener插屏横屏广告加载监听
onLoadSuccess(OSETInterstitialAd osetInterstitialAd)广告加载成功,osetInterstitialAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETInterstitialAd插屏横屏广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
showAd(Activity, OSETInterstitialListener)广告渲染,activity:Activity ,OSETInterstitialListener:广告状态监听
destroy()对象销毁
OSETInterstitialListener插屏横屏广告状态监听
onShow()广告曝光
onError(String var1,String var2)广告曝光失败(var1:错误码,var2:错误信息)
onClick()广告点击
onClose()广告关闭

全屏视频广告

OSETFullVideo.getInstance()
        .setContext(this)
        .setUserId(Common.USER_ID)
        .setPosId(Common.POS_ID_FULL_VIDEO)
        .loadAd(Activity,OSETFullAdLoadListener);
         
private OSETFullAdLoadListener osetFullAdLoadListener = OSETFullAdLoadListener {

    void onLoadSuccess(OSETFullAd osetFullAd){
        osetFullAd.showAd(Activity, OSETFullVideoListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

}
OSETFullVideo全屏广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETFullAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETFullAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETFullAdLoadListener全屏广告加载监听
onLoadSuccess(OSETFullAd osetFullAd)广告加载成功,osetFullAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETFullAd全屏广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
showAd(Activity, OSETFullVideoListener)广告渲染,activity:Activity ,OSETFullVideoListener:广告状态监听
destroy()对象销毁
OSETFullVideoListener全屏广告状态监听
onVideoStart()视频开始播放(不一定回调)
onError(String var1,String var2)广告曝光失败(var1:错误码,var2:错误信息)
onClick()广告点击
onClose()广告关闭
onShow()广告关曝光
onVideoEnd()视频播放结束(不一定回调)

激励视频广告

缓存广告

OSETRewardVideo.getInstance()
        .setContext(this)
        .setUserId(Common.USER_ID)
        .setPosId(Common.POS_ID_REWARD_VIDEO)
        .loadAd(OSETRewardAdLoadListener);

private OSETRewardAdLoadListener osetRewardAdLoadListener = OSETRewardAdLoadListener {

    void onLoadSuccess(OSETRewardAd osetRewardAd){
        osetRewardAd.showAd(Activity, OSETRewardListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

}
OSETRewardVideo激励广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETRewardAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETRewardAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETRewardAdLoadListener激励广告加载监听
onLoadSuccess(OSETRewardAd osetRewardAd)广告加载成功,osetRewardAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETRewardAd激励广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
showAd(Activity, OSETRewardListener)广告渲染,activity:Activity ,OSETRewardListener:广告状态监听
destroy()对象销毁
OSETRewardListener激励广告状态监听
onVideoStart()视频开始播放(不一定回调)
onError(String var1,String var2)广告曝光失败(var1:错误码,var2:错误信息)
onClick()广告点击
onClose()广告关闭
onShow()广告关曝光
onVideoEnd()视频播放结束(不一定回调)
onReward()广告产生收益,可以发放奖励
onServiceResponse()服务端回调

原生广告

java代码

 OSETNative.getInstance()
        .setContext(this)
        .setUserId(Common.USER_ID)
        .setPosId(Common.POS_ID_FULL_VIDEO)
        .loadAd(OSETNativeAdLoadListener);
        
private OSETNativeAdLoadListener osetNativeAdLoadListener = OSETNativeAdLoadListener {

    void onLoadSuccess(OSETNativeAd osetNativeAd){
        osetNativeAd.render(Activity, OSETNativeListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

} 
	
OSETNative原生信息流广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETNativeAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETNativeAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETNativeAdLoadListener原生信息流广告加载监听
onLoadSuccess(OSETNativeAd osetNativeAd)广告加载成功,osetNativeAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETNativeAd原生信息流广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
render(Activity, OSETNativeListener)广告渲染,activity:Activity ,OSETNativeListener:广告状态监听
destroy()对象销毁
OSETNativeListener原生信息流广告状态监听
onShow(View view)广告曝光
onError(String var1,String var2)广告渲染/曝光失败(var1:错误码,var2:错误信息)
onRenderSuccess(View view)渲染成功,view就是广告的控件,通过addView展示
onClick(View view)广告点击
onClose(View view)广告关闭

原生自渲染广告

请参考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) //下载类广告 app名字
        .setAppAuthorNameId(R.id.tv_app_auother) //下载类广告 app作者
        .setAppVersionId(R.id.tv_app_version) //下载类广告 app版本
        .setAppPermissionId(R.id.tv_app_permission) //下载类广告 app权限跳转按钮
        .setAppPrivacyId(R.id.tv_app_privacy) //下载类广告 app隐私跳转按钮
        .setAppFunctionId(R.id.tv_app_function) //下载类广告 app功能跳转按钮
        .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_NATIVE_VIEW)
        .setNativeViewConfig(nativeViewConfig)
        .loadAd(Activity,OSETNativeViewListener);
               
private OSETNativeViewAdLoadListener osetNativeViewAdLoadListener = OSETNativeViewAdLoadListener {

    void onLoadSuccess(OSETNativeViewAd osetNativeViewAd){
        osetNativeViewAd.render(Activity, OSETNativeViewListener())
    }
    
    void onLoadFail(String errorCode, String errorMessage){
        
    }

} 
方法名方法描述
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原生自渲染广告
setContext(Activity activity)设置Activity
setNativeViewConfig(NativeViewConfig nativeViewConfig)自渲染view配置
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETNativeViewAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETNativeViewAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETNativeViewAdLoadListener原生自渲染广告加载监听
onLoadSuccess(OSETNativeViewAd osetNativeViewAd)广告加载成功,osetNativeViewAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETNativeViewAd原生自渲染广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
render(Activity, OSETNativeViewListener)广告渲染,activity:Activity ,OSETNativeViewListener:广告状态监听
destroy()对象销毁
OSETNativeViewListener原生自渲染广告状态监听
onShow(View view)广告曝光
onError(String var1,String var2)广告渲染/曝光失败(var1:错误码,var2:错误信息)
onRenderSuccess(View view)渲染成功,view就是广告的控件,通过addView展示
onClick(View view)广告点击
onClose(View view)广告关闭

Draw信息流广告

java代码

OSETDrawNative.getInstance()
            .setContext(this)
            .setUserId(Common.USER_ID)
            .setPosId(Common.POS_ID_DRAW_NATIVE)
            .loadAd(OSETDrawNativeAdLoadListener);


OSETDrawNativedraw视频广告
setContext(Activity activity)设置Activity
setUserId(String userId)设置UserId。注意,这里会全局设置,设置以后对任意类型广告都生效,如果想更改,请在播放广告之前调用广告对象的setUserId方法,广告对象的setUserId只对当前设置的广告对象有效,不会影响全局设置
setPosId(String posId)设置广告位id
loadAd(OSETNativeViewAdLoadListener var)加载广告(var 广告加载结果监听)
startLoad()预加载广告,不会回调 OSETNativeViewAdLoadListener 监听,可以提前加载广告,节省首次广告加载曝光时间,但是注意,预加载广告会获取设备id等用户隐私信息,审核可能会被拒,请酌情使用
OSETNativeViewAdLoadListenerdraw视频广告加载监听
onLoadSuccess(OSETDrawNativeAd osetDrawNativeAd)广告加载成功,osetDrawNativeAd:广告对象
onLoadFail(String errorCode, String errorMessage)广告加载失败,errorCode:错误码,errorMessage:错误信息
OSETDrawNativeAddraw视频广告对象
setUserId(String userId)设置userId,注意:这里设置只对单个广告对象有效,并且不影响全局广告的设置。一旦广告曝光结束,这里设置的userid不再持有
getECPM()获取广告ecpm,单位:千次分:注意,只有自营奇点广告返回价格,聚合广告AdSet不返回价格
getRequestId()获取单个广告对象唯一ID
isUsable()广告是否有效,返回true:广告有效,false:广告已失效过期 。失效后的广告继续播放是没有收益的,在调用广告曝光前请先检查广告是否有效
bidSuccess(BidAdInfo bidAdInfo)广告竞胜上报,bidAdInfo:竞败的广告媒体信息
bidFail(BidAdInfo bidAdInfo)广告竞败上报,bidAdInfo:竞败的广告媒体信息
render(Activity, OSETDrawNativeListener)广告渲染,activity:Activity ,OSETDrawNativeListener:广告状态监听
destroy()对象销毁
OSETDrawNativeListenerdraw视频广告状态监听
onVideoAdStartPlay(View view)视频开始播放
onError(String var1,String var2)广告渲染/曝光失败(var1:错误码,var2:错误信息)
onRenderSuccess(View view)渲染成功,view:广告的控件,通过addView展示
onVideoAdPaused(View view)广告暂停
onVideoAdContinuePlay(View view)广告暂停后播放
onVideoAdComplete(View view)广告播放完成
onClicked(View view)广告点击
onShow(View view)广告曝光

H5广告

使用方法

1、本质上H5广告加载的仍是安卓SDK的广告,demo中只是提供了一个安卓桥接H5打开广告页面的方案(具体详见 AdH5Activity 页面) 2、在安卓代码中,打开广告的方法参考不同的广告类型加载即可,如激励广告、插屏广告、全屏视频广告的加载方法

桥接方法参考

WebView mWebView = findViewById(R.id.webView);
// 加载广告的h5页面,也可以是网络地址
mWebView.loadUrl("file:///android_asset/ad_h5.html");
mWebView.getSettings().setJavaScriptEnabled(true);
// 添加JS与安卓的通信桥梁,必须要设置:webSettings.setJavaScriptEnabled(true)
mWebView.addJavascriptInterface(this, "adSetSdkJSInterface");


/**
 * H5加载激励广告,安卓提供调用的方法
 * 在H5中调用 window.adSetSdkJSInterface.showRewardAd(adId)
 */
@JavascriptInterface
public void showRewardAd(String adId) {
    OSETRewardVideo.getInstance()
            .setPosId(adId)
            .setContext(this)
            .loadAd(new OSETRewardAdLoadListener() {
                @Override
                public void onLoadSuccess(OSETRewardAd osetRewardAd) {
                    osetRewardAd.showAd(AdH5Activity.this, new OSETRewardListener());
                }
            
                @Override
                public void onLoadFail(String s, String s1) {
            
                }
});
}

/**
 * H5加载插屏广告,安卓提供调用的方法
 * 在H5中调用 window.adSetSdkJSInterface.showInsertAd(adId)
 */
@JavascriptInterface
public void showInsertAd(String adId) {
    OSETInterstitial.getInstance()
                .setPosId(adId)
                .setContext(AdH5Activity.this)
                .loadAd(new OSETInterstitialAdLoadListener() {
                    @Override
                    public void onLoadSuccess(OSETInterstitialAd osetInterstitialAd) {
                        osetInterstitialAd.showAd(AdH5Activity.this, new OSETInterstitialListener());
                    }
    
                    @Override
                    public void onLoadFail(String s, String s1) {
    
                    }
            });
}

/**
 * H5加载全屏视频广告,安卓提供调用的方法
 * 在H5中调用 window.adSetSdkJSInterface.showFullVideoAd(adId)
 */
@JavascriptInterface
public void showFullVideoAd(String adId) {
        OSETFullVideo.getInstance()
                        .setPosId(adId)
                        .setContext(this)
                        .loadAd(new OSETFullAdLoadListener() {
                            @Override
                            public void onLoadSuccess(OSETFullAd osetFullAd) {
                                osetFullAd.showAd(AdH5Activity.this, new OSETFullVideoListener());
                            }
                
                            @Override
                            public void onLoadFail(String s, String s1) {
                
                            }
                        });
}

短视频短剧内容插件

1、打开Activity播放短视频,只支持普通短视频。其他类型(例如双排短视频、短剧等)不支持

 VideoContentConfig videoContentConfig = new VideoContentConfig.Builder()
                .setRewardDownTime(30) // 单次奖励的倒计时时间,单位s,根据业务需求设定,不用可不设置
                .setRewardCount(2)  // 总计可奖励次数,不用可不设置
                .setNeedBack(true)  // 设置需要返回键,默认false,不用可不设置
                .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())
        
    //重写onBackPressed()方法
    @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()返回处理
destroy()对象销毁

资讯内容

1. activity模式加载

    //传入插屏广告位id
	OSETNews.getInstance().setInsertId(Common.POS_ID_Insert);
    //传入Banner广告位id
	OSETNews.getInstance().setBannerId(Common.POS_ID_Banner);
	//num表示每隔多少条信息出一个广告(5<num<10)
    //time表示倒计时的时间(传0则不需要倒计时功能,也就没有验证的功能)
	OSETNews.getInstance().showNews(activity, 信息流模块id, time,num,OSETNewsListener);

2. fragment模式加载

	OSETNews.getInstance().setInsertId(Common.POS_ID_Insert);
    OSETNews.getInstance().setBannerId(Common.POS_ID_Banner);
	//num表示每隔多少条信息出一个广告(5<num<10)
    getSupportFragmentManager().beginTransaction()
            .replace(R.id.fl, OSETNews.getInstance()
            .getNewsFragment(activity, 信息流模块id,视频内容id(可传"", num))
            .commit();

幸运大抽奖

	OSETDial.getInstance().show(activity, "大奖的描述", int(大奖的概率:0100), "小奖的描述", 
                        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);

监听方法说明

信息流模块监听

	 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) {
            //每次观看完整视频会回调此方法
			 // 验证地址 http://open-set-api.shenshiads.com/reward/check/<key>(返回数据: {"code": 0},code为0表示验证成

        }
    }
Last Updated:
Contributors: zhaochangchang, zhaochangchang@shenshiads.com, zhaochangchang, zhaochangchang@shenshiads.com