语音红包

语音红包

接入准备

添加依赖项

将 SDK 压缩包内的xlx_voice_ad_x.y.z.aar复制到application module/libs文件夹(没有的话须手动创建), 并增加依赖

depedencies {
    // 语音红包相关支持包
    implementation files('./libs/xlx_voice_ad_x.y.z.aar')
    implementation 'com.squareup.retrofit2:retrofit:2.2.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.2.0'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.liulishuo.filedownloader:library:1.7.7'
    // 版本需要指定 2.15.1
    implementation ('com.google.android.exoplayer:exoplayer-core:2.15.1') {
        exclude group: "androidx.annotation", module: "annotation"
    }
    // 版本需要指定 2.15.1
    implementation ('com.google.android.exoplayer:exoplayer-hls:2.15.1') {
        exclude group: "androidx.annotation", module: "annotation"
    }
    // 如果您的项目中没有用到约束布局,需要添加该依赖
    implementation 'com.android.support.constraint:constraint-layout:2.0.4'
}

注意

调用广告出现java.lang.AbstractMethodErrorabstract或者java.lang.AbstractMethodError或者java.lang.NoClassDefFoundError错误时,需要在工程的gradle.properties文件中添加android.enableDexingArtifactTransform.desugaring=false配置

如果App出现java.lang.BootstrapMethodError: Exception from call site #78 bootstrap method闪退,请检查APP是否开启Java 8支持

配置 AndroidManifest

若您的 targetSDKVersion>=23 ,您还需要在运行时进行动态权限申请

<!--必要权限-->
<uses-permission android:name="android.permission.INTERNET" />
<!--用户朗读口令时需要用到该权限-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--用户下载过后安装时用到该权限-->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!--非必要权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

提示

您项目中的targetSdkVersion大于等于30时需要在AndroidManifest加入下面配置

<queries>
    <intent>
        <action android:name="android.intent.action.MAIN" />
    </intent>
    <!-- google -->
    <package android:name="com.google.android.gms" />
    <package android:name="com.android.vending" />
    <!-- freeme -->
    <package android:name="com.android.creator" />
    <!-- zte -->
    <package android:name="com.mdid.msa" />
    <!-- samsung -->
    <package android:name="com.samsung.android.deviceidservice" />
    <!-- coolpad -->
    <package android:name="com.coolpad.deviceidsupport" />
    <!-- oppo -->
    <package android:name="com.heytap.openid" />
    <!-- huawei -->
    <package android:name="com.huawei.hwid" />
    <package android:name="com.huawei.hwid.tv" />
    <package android:name="com.huawei.hms" />
    <!-- asus -->
    <package android:name="com.asus.msa.SupplementaryDID" />
    <!-- lenovo -->
    <package android:name="com.zui.deviceidservice" />
</queries>

请求语音红包

调用ZJVoiceAd#loadAd的重载方法请求广告,并在ZJVoiceAdLoadListener中获取广告对象与处理错误信息

public class ZJVoiceAd {

    /**
     * 加载广告
     */
    public static void loadAd(String posId, String userId, ZJVoiceAdLoadListener loadListener);

    public static void loadAd(String posId, String userId, String nickName, ZJVoiceAdLoadListener loadListener);

    /**
     * 语音红包
     *
     * @param posId        广告位ID
     * @param userId       用户ID
     * @param nickName     前台显示的昵称(空字符串即可)
     * @param extra        透传信息(如无需求传空字符串)
     * @param loadListener 加载回调
     */
    public static void loadAd(String posId, String userId, String nickName, String extra, ZJVoiceAdLoadListener loadListener);

}

加载回调说明

方法说明
onError(int code, String msg)广告加载失败
code: 错误码
msg: 错误信息
onAdLoaded(ZJVoiceAd voiceAd)广告加载成功
voiceAd: 广告对象

展示语音红包

在加载成功回调中获取到ZJVoiceAd对象后,可以配置交互回调、展示广告

ZJVoiceAd 说明

方法说明
setInteractionListener(ZJVoiceAdInteractionListener interactionListener)配置交互回调
showAd(Activity activity)展示
activity: 当前activity

交互回调说明

方法说明
onVoiceAdShow()广告展示
onVoiceAdReward(String rewardAmount)广告达到完成条件会出发此回调可在此处发奖
rewardAmount: 单次广告实际收益,单位(元)
onSplashAdClose()广告关闭
onVoiceAdError(int code, String msg)展示失败

注意

每一次完成任务且达到奖励条件都会触发 onVoiceAdReward 回调,开发者在此处发奖即可

语音红包接入示例

// 加载广告
ZJVoiceAd.loadAd(posId, userId, new ZJVoiceAdLoadListener() {
    
    @Override
    public void onError(int code, @NonNull String msg) {
        Log.e("ZJVoiceAd", "语音红包加载出错" + code + "-" + msg);              
    }

    @Override
    public void onAdLoaded(@NonNull ZJVoiceAd voiceAd) {
        // 语音红包加载成功,配置交互回调
        voiceAd.setInteractionListener(VoiceAdActivity.this);
        // 语音红包展示
        voiceAd.show(VoiceAdActivity.this);
    }
    
});