更新记录

1.0.1(2023-11-06)

新增kotlin环境jar包

1.0.0(2023-07-10)

新版本发布


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


插件介绍

1. 该插件封装了抖音的巨量广告转化安卓端SDK,该转化SDK版本号为6.14.3,接入该SDK后可挂抖音小风车,
    SDK文档地址:https://bytedance.feishu.cn/docx/doxcnjAFo7iUImEIq9DuA7Tr69g

2. 实现了巨量广告转化SDK中的初始化、上报注册事件、上报支付事件等方法。

3. 该插件同时也集成了抖音应用管理中心分包SDK,既:humesdk-1.0.0.aar,可以获取抖音分包之后渠道号,
    SDK文档地址:https://bytedance.feishu.cn/docs/doccnWHO1ZOWn3YrZVblvoEw4th#

API列表

/**
 *  SDK初始化参数
 *  @param appId 抖音后台获取的appId,可参考第一个文档的2.1节获取
 *  @param channel 渠道信息,请注意不能为空
 */
void initSdk(String appId, String channel)

/**
 * 初始化巨量广告转化SDK
 */
void initAppLog()

/**
 *  上报注册事件
 *  @param registerType 注册类型
 *  @param success 是否成功
 */
void onEventRegister(String registerType, boolean success)

/**
 *  上报购买支付事件
 *  @param goodsType 商品类型
 *  @param goodsName 商品名称
 *  @param goodsId 商品ID
 *  @param goodsNum 商品数量
 *  @param payChannel 支付渠道
 *  @param currency 币种
 *  @param success 是否成功
 *  @param amount 金额,单位为元
 */
void onEventPurchase(String goodsType, String goodsName, String goodsId, int goodsNum, String payChannel, 
    String currency, boolean success, int amount )

/**
 * 检查是否授权READ_PHONE_STATE,该权限用于巨量广告转化SDK的初始化,记录设备激活事件
 * @return {code: '1'}  返回值Json里面的code为'1'则为已授权
 */
JSONObject checkPermission()

/**
 * 手动请求权限READ_PHONE_STATE,该权限用于巨量广告转化SDK的初始化,记录设备激活事件
 */
void requestPermission()

/**
 * 获取抖音分包后的渠道号
 * @return {dyChannel: 'auto1000002'} 返回值Json里面的dyChannel则为抖音分包的渠道号
 */
JSONObject getChannel()

SDK调用流程

1. 首先调用initSdk(String appId, String channel)方法,将初始化参数传入SDK。

2. 调用checkPermission()方法检查用户是否已经授权READ_PHONE_STATE权限,如果已授权则直接调用initAppLog()方法激活巨量广告转化SDK。

3. 如果第2部中检查未授权,则弹出框提示用户将要请求权限,用户点击确认按钮后调用方法requestPermission(),注意,示例中只会弹出一次请求,如果用户拒绝后续将不会继续弹出请求窗口。

5. 用户在点击同意授权后,系统会自动调用initAppLog()方法激活巨量广告转化SDK,开发人员无须另外处理。

7. 在用户注册成功回调里面调用SDK方法onEventRegister,在支付成功的回调里面调用SDK方法onEventPurchase。

SDK激活与获取渠道号示例

<template>

    ...

</template>

<script>
    const dysdk = uni.requireNativePlugin('lilu-dysdk-transform');//获取sdk实例
    export default {
        data() {
            return {
            }
        },
        onLoad() {
            this.initDySdk();
            this.saveDyChannel();
        },
        methods: {
            initDySdk() {
                dysdk.initSdk("xxxxxx", "1");//初始化sdk,这里需要将xxxxxx替换成真实的appId
                let per = dysdk.checkPermission();

                if (per.code === '1') {//已经授权
                    dysdk.initAppLog();
                }
                else {//未授权
                    //是否已经弹出过权限申请窗口,如果已弹出则不弹
                    let showPermission = uni.getStorageSync('showPermission') || '0'
                    if (showPermission !== '1') {//第一次弹出授权请求窗口
                        let me = this;
                        uni.showModal({
                            title: '提示',
                            content: '为保证您正常、安全地使用,需要获取设备识别码(部分手机提示为获取手机号码)使用权限,请允许。',
                            showCancel: false,
                            success: function(res) {
                                if (res.confirm) {
                                    uni.setStorageSync('showPermission', '1');
                                    dysdk.requestPermission();
                                }
                            }
                        })
                    }
                }
            },
            saveDyChannel() {
                //获取抖音分包的渠道号 : result.dyChannel
                let result = dysdk.getChannel(); 
                uni.setStorageSync('dyChannel', result.dyChannel);
            },
        }
    }
</script>

上报注册事件示例

<template>

    ...

</template>

<script>
    export default {
        data() {
            return {
            }
        },
        methods: {
            onRegister() {//这个方法可以在注册成功的回调里面调用
                let dysdk = uni.requireNativePlugin('lilu-dysdk-transform');
                dysdk.onEventRegister('xxxxx', true);//xxxxx替换为自己的注册方式
            }

        }
    }
</script>

上报消费支付示例

<template>

    ...

</template>

<script>
    export default {
        data() {
            return {
            }
        },
        methods: {
            onPurchase() {//这个方法可以在支付成功的回调里面调用
                let dysdk = uni.requireNativePlugin('lilu-dysdk-transform');
                dysdk.onEventPurchase("充值", '600钻石', "1001", 1, "ptb", "¥", true, 6);//根据自己实际场景替换参数,可参考API
            }

        }
    }
</script>

注意事项

    如果打包时(不管是自定义基座还是正式打包)出现异常,异常信息为:
    Execution failed for task ':app:checkReleaseDuplicateClasses'.
    > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
    > Duplicate class kotlin.ArrayIntrinsicsKt found in modules jetified-kotlin-stdlib-1.3.61 (kotlin-stdlib-1.3.61.jar) and jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10)

    该异常信息为kotlin依赖冲突,请在项目根目录下新建文件夹:
nativeplugins(没有的话) -> lilu-dysdk-transform,然后新建文件:android-exclude.txt,在文件中写入以下
内容,每个文件名一行:

kotlin-stdlib-1.3.61.jar
kotlin-stdlib-jdk7-1.3.61.jar
kotlin-stdlib-common-1.3.61.jar
annotations-13.0.jar

隐私、权限声明

1. 本插件需要申请的系统权限列表:

请求权限READ_PHONE_STATE,用于巨量广告转化SDK的初始化,记录设备激活事件

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

1. 插件使用的巨量广告转化SDK,详情可参考:https://bytedance.feishu.cn/docx/doxcnjAFo7iUImEIq9DuA7Tr69g 2. 插件使用的抖音广告投放分包SDK,详情可参考:https://bytedance.feishu.cn/docs/doccnWHO1ZOWn3YrZVblvoEw4th#

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问