语音红包
语音红包
接入准备
添加依赖项
将 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);
}
});