更新记录

1.1.0(2023-06-15)

本次主要更新:

  1. 更新andorid版本的SDK为: 6.14.1 2.增加andorid版本的相关方法和参数

1.0.1(2022-11-03)

新版首发


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 适用版本区间:11 - 16

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


KJ-RangersAppLog

巨量广告移动应用SDK上报数据(ios、andorid)

注意事项

1. 本人没有账号测试,只是封装了SDK里方法,请试用合适再购买

巨量广告移动应用SDK 官网文档:https://open.oceanengine.com/labels/7/docs/1696710651039744

使用

<template>
    <view class="content">
        <button type="primary" @click="init">初始化</button>

        <view class="title">----上报行为日数据-必传埋点-----</view>
        <button type="primary" @click="registerEvent">注册</button>
        <button type="primary" @click="purchaseEvent">支付</button>

        <view class="title">----上报行为日数据-其它预定义事件-----</view>
        <button type="primary" @click="loginEvent">登录</button>
        <button type="primary" @click="accessAccount">绑定社交账号</button>
        <button type="primary" @click="questEvent">进行任务</button>
        <button type="primary" @click="updateLevelEvent">升级</button>
        <button type="primary" @click="createGameRoleEvent">创建角色</button>
        <button type="primary" @click="viewContentEvent">查看内容/商品详情</button>
        <button type="primary" @click="addCartEvent">加入购买/购物车</button>
        <button type="primary" @click="checkoutEvent">提交购买/下单</button>
        <button type="primary" @click="accessPaymentChannelEvent">添加支付渠道</button>
        <button type="primary" @click="addToFavouriteEvent">添加至收藏</button>
        <view class="title">----上报行为日数据-其它预定义事件 插件v1.1.0版本新增 andorid才有</var>-----</view>
        <button type="primary" @click="adButtonClick">广告按钮点击</button>
        <button type="primary" @click="adShow">广告开始展示</button>
        <button type="primary" @click="adShowEnd">广告结束展示</button>
        <button type="primary" @click="levelUp">(总等级)升级和经验</button>
        <button type="primary" @click="startPlay">开始玩法</button>
        <button type="primary" @click="endPlay">结束玩法</button>
        <button type="primary" @click="getCoins">获得游戏币</button>
        <button type="primary" @click="costCoins">消耗游戏币</button>
        <button type="primary" @click="gameInitInfo">初始化信息</button>

        <view class="title">----上报行为日数据-自定义埋点事件-----</view>
        <button type="primary" @click="eventV3">日志上报,在初始化之后设置才能调用</button>

        <view class="title">----设置用户唯一标识(可选)-----</view>
        <button type="primary" @click="setCurrentUserUniqueID">设置用户唯一标识(可选)</button>
        <button type="primary" @click="clearUserUniqueID">清除用户唯一标识(ios)</button>
    </view>
</template>

<script>
    /**
     * 注意所有方法回调:{"result":true},是执行完sdk里方法成功之后的,而不是sdk方法的返回值(ios setCurrentUserUniqueID 方法除外)
     * */
    const KJRangersAppLog = uni.requireNativePlugin('KJ-RangersAppLog');
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {

        },
        methods: {
            init() {
                var dic;
                if (plus.os.name == 'Android') {
                    dic = {
                        /**InitConfig类**/
                        "appID": "",
                        "channel": "",
                        "imeiEnable": false, //建议关停获取IMEI(出于合规考虑)
                        "autoTrackEnabled": true, // 全埋点开关,true开启,false关闭
                        "logEnable": true, // true:开启日志,参考4.3节设置logger,false:关闭日志
                        "enablePlay": false, // 是否开启游戏模式,游戏APP建议设置为 true
                        /**插件v1.1.0版本新增**/
                        "macEnable": true, //设备的mac地址采集,默认开启
                        "androidIdEnabled": true, //设备的Android ID采集,默认开启 
                        "autoActive": true, //是否自动激活
                        /**以下参数,是官网文档没有说明,是我在源码里找的,不知道什么意思**/
                        // "abEnable": true,
                        // "aliyunUdid": "",
                        // "anonymous": true,
                        // "appImei": "",
                        // "appName": "",
                        // "autoStart": true,
                        // "autoTrackEventType": 1,
                        // "congestionControlEnable": true,
                        // "dbName": "",
                        // "eventFilterEnable": true,
                        // "gaidEnabled": true,
                        // "googleAid": "",
                        // "h5BridgeAllowAll": true,
                        // "h5BridgeEnable": true,
                        // "h5CollectEnable": true,
                        // "handleLifeCycle": true,
                        // "harmonyEnable": true,
                        // "imeiEnable": true,
                        // "macEnable": true,
                        // "metaSecEnabled": true,
                        // "migrateEnabled": true,
                        // "monitorEnabled": true,
                        // "notRequestSender": true,
                        // "oaidEnabled": true,
                        // "operatorInfoEnabled": true,
                        // "reportOaidEnable": true,
                        // "screenOrientationEnabled": true,
                        // "silenceInBackground": true,
                        // "trackEventEnabled": true,
                        /**AppLog类**/
                        "encryptAndCompress": true,
                        "clipboardEnabled": true,
                        "privacyMode": true,
                        "googleAid": "",
                        "userAgent": "",
                        "userUniqueID": "",
                        "headerInfo": {
                            "key": ""
                        },
                        "isDelayInit": false, //是否延迟初始化  为true的话对应官网文档 4.3延迟初始化
                    };
                } else {
                    dic = {
                        "appID": "",
                        "channel": "",
                        "trackEventEnabled": true, //是否开启事件上报,默认YES,关闭后任何事件包括用户自定义事件都不会上报
                        "autoTrackEnabled": true, // 全埋点开关,true开启,false关闭
                        "H5AutoTrackEnabled": true, // 当无埋点开关开启时,是否采集H5页面的无埋点事件,默认开(YES)
                        "screenOrientationEnabled": false, // 是否采集屏幕方向,默认不采集(NO)
                        "trackGPSLocationEnabled": false, // 是否采集GPS,默认不采集(NO)
                        "gameModeEnable": false, //游戏模式,开启游戏模式会默认上报游戏心跳事件
                        "autoActiveUser": true, //是否自动激活。默认YES,一般情况请不要修改 
                        "logNeedEncrypt": true, //日志上报是否加密。用于debug情况可以抓包调试
                        "autoFetchSettings": true, //是否自动拉配置。默认YES,一般情况请不要修改。仅私有化部署情况,可能不需要自动拉取配置 
                        "abEnable": true, //是否开AB。默认YES,一般情况请不要修改
                    };
                }
                KJRangersAppLog.init(dic, (res) => {
                    console.log("init:" + JSON.stringify(res));
                });
            },
            registerEvent() {
                var dic = {
                    "method": "wechat", //注册方式,@"wechat"、@"qq"
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.registerEvent(dic, (res) => {
                    console.log("registerEvent:" + JSON.stringify(res));
                });
            },
            purchaseEvent() {
                var dic = {
                    "contentType": "", //内容类型
                    "contentname": "", //内容名
                    "contentID": "", //内容id
                    "contentNumber": 0, //内容数量
                    "channel": "", //支付渠道
                    "currency": "", //币种
                    "isSuccess": true, //是否成功
                    "amount": 0, //货币金额,不能为0
                };
                KJRangersAppLog.purchaseEvent(dic, (res) => {
                    console.log("purchaseEvent:" + JSON.stringify(res));
                });
            },
            loginEvent() {
                var dic = {
                    "method": "wechat", //登录方式,@"wechat"、@"qq"
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.loginEvent(dic, (res) => {
                    console.log("loginEvent:" + JSON.stringify(res));
                });
            },
            accessAccount() {
                var dic = {
                    "type": "wechat", //账号类型
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.accessAccount(dic, (res) => {
                    console.log("accessAccount:" + JSON.stringify(res));
                });
            },
            questEvent() {
                var dic = {
                    "questID": "wechat", //任务id
                    "questType": "wechat", //任务类型
                    "questName": "wechat", //教学/任务/副本名
                    "questNumer": 1, // 第几个任务
                    "description": "wechat", //其他描述
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.questEvent(dic, (res) => {
                    console.log("questEvent:" + JSON.stringify(res));
                });
            },
            updateLevelEvent() {
                var dic = {
                    "roleID": "", //当前等级
                };
                KJRangersAppLog.updateLevelEvent(dic, (res) => {
                    console.log("updateLevelEvent:" + JSON.stringify(res));
                });
            },
            createGameRoleEvent() {
                var dic = {
                    "level": 1, //角色id
                };
                KJRangersAppLog.createGameRoleEvent(dic, (res) => {
                    console.log("createGameRoleEvent:" + JSON.stringify(res));
                });
            },
            viewContentEvent() {
                var dic = {
                    "contentType": "", //内容类型
                    "contentName": "", //内容名
                    "contentID": "" //内容id
                };
                KJRangersAppLog.viewContentEvent(dic, (res) => {
                    console.log("viewContentEvent:" + JSON.stringify(res));
                });
            },
            addCartEvent() {
                var dic = {
                    "contentType": "", //内容类型
                    "contentName": "", //内容名
                    "contentID": "", //内容id
                    "contentNumber": 1, //内容数量
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.addCartEvent(dic, (res) => {
                    console.log("addCartEvent:" + JSON.stringify(res));
                });
            },
            checkoutEvent() {
                var dic = {
                    "contentType": "", //内容类型
                    "contentName": "", //内容名
                    "contentID": "", //内容id
                    "contentNumber": 1, //内容数量
                    "isVirtualCurrency": false, //是否使用的是虚拟货币
                    "virtualCurrency": "", //虚拟币币种
                    "currency": "", //真实货币类型
                    "currency_amount": 1, //货币金额
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.checkoutEvent(dic, (res) => {
                    console.log("checkoutEvent:" + JSON.stringify(res));
                });
            },
            accessPaymentChannelEvent() {
                var dic = {
                    "channel": "", //支付渠道
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.accessPaymentChannelEvent(dic, (res) => {
                    console.log("accessPaymentChannelEvent:" + JSON.stringify(res));
                });
            },
            addToFavouriteEvent() {
                var dic = {
                    "contentType": "", //内容类型
                    "contentName": "", //内容名
                    "contentID": "", //内容id
                    "contentNumber": 1, //内容数量
                    "isSuccess": true //是否成功
                };
                KJRangersAppLog.addCartEvent(dic, (res) => {
                    console.log("addCartEvent:" + JSON.stringify(res));
                });
            },
            adButtonClick() {
                /** 
                    广告按钮点击:gt_ad_button_click ad_type  string  
                    广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识 ad_position_type  string  
                    广告点位类型:按照提供分类接入 ad_position string  
                    广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识 
                    触发条件:用户点击app内各广告位button时。 
                */
                var dic = {
                    "ad_type": "",
                    "ad_position_type": "",
                    "ad_position": "",
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.adButtonClick(dic, (res) => {
                    console.log("adButtonClick:" + JSON.stringify(res));
                });
            },
            adShow() {
                /** 
                    广告开始展示:gt_ad_show ad_type string  
                    广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识 ad_position_type  string  
                    广告点位类型:按照提供分类接入 ad_position  string  
                    广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识 
                    触发条件:用户点击并观看广告时。穿山甲广告有回调,可以直接获取。 
                */
                var dic = {
                    "ad_type": "",
                    "ad_position_type": "",
                    "ad_position": "",
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.adShow(dic, (res) => {
                    console.log("adShow:" + JSON.stringify(res));
                });
            },
            adShowEnd() {
                /** 
                    广告结束展示:gt_ad_show_end ad_type  string  
                    广告类型:激励视频、插屏、banner等,直接使用汉字或者英文进行标识 ad_position_type  string  
                    广告点位类型:按照提供分类接入 ad_position  string  
                    广告点位:复活、翻倍、试用、buff、奖励道具、新道具、减CD等,直接使用文字或者英文进行标识 result  string  
                    广告观看结果:跳过、成功、失败等,使用英文进行标识.  跳过标记为skip, 成功标记为success,失败为fail 触发条件:用户观看广告结束时。 
                */
                var dic = {
                    "ad_type": "",
                    "ad_position_type": "",
                    "ad_position": "",
                    "result": "",
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.adShowEnd(dic, (res) => {
                    console.log("adShowEnd:" + JSON.stringify(res));
                });
            },
            levelUp() {
                /** 
                    (总等级)升级和经验:gt_levelup lev int 
                    当前玩家等级 get_exp  int 
                    获得经验 method  string  
                    获得经验途径:闯关成功、引导完成、领取奖励等,使用汉字或者英文进行标识 aflev int 
                    用户获得经验后等级,如获得经验未导致升级,则lev=aflev,如导致升级,则lev 
                    触发条件:用户获得经验或者等级发生变化时。 
                */
                var dic = {
                    "lev": 1,
                    "get_exp": 1,
                    "method": "",
                    "aflev": 1,
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.levelUp(dic, (res) => {
                    console.log("levelUp:" + JSON.stringify(res));
                });
            },
            startPlay() {
                /** 
                    开始玩法:gt_start_play ectype_name string  
                    针对闯关性质玩法,标注关卡名称 触发条件:用户开始玩法时。 
                */
                var dic = {
                    "ectype_name": "",
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.startPlay(dic, (res) => {
                    console.log("startPlay:" + JSON.stringify(res));
                });
            },
            endPlay() {
                /** 
                    结束玩法:gt_end_play ectype_name string  
                    针对闯关性质玩法,标注关卡名称 result string  
                    玩法的结果:未完成、成功、失败等,使用英文进行标识.  未完成标记为uncompleted, 成功标记为success,失败为fail duration    int 
                    消耗时间,单位秒 触发条件:用户结束玩法时,涵盖中途退出、完成但失败和完成且成功。 
                */
                var dic = {
                    "ectype_name": "",
                    "result": "", //FAIL SUCCESS UNCOMPLETED
                    "duration": 1,
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.endPlay(dic, (res) => {
                    console.log("endPlay:" + JSON.stringify(res));
                });
            },
            getCoins() {
                /** 
                    获得游戏币:gt_get_coins coin_type string    
                    货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识 method string    
                    获得途径:观看激励视频、闯关成功、活动奖励等,使用文字或者英文进行标识 coin_num int    
                    获得数量 触发条件:用户获得游戏币,导致游戏币增加时 
                */
                var dic = {
                    "coin_type": "",
                    "method": "",
                    "coin_num": 1,
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.getCoins(dic, (res) => {
                    console.log("getCoins:" + JSON.stringify(res));
                });
            },
            costCoins() {
                /** 
                    消耗游戏币:gt_cost_coins coin_type string    
                    货币类型:元宝、绑元、金币、银币等,使用文字或者英文进行标识 method string    
                    消耗途径:复活、购买道具、解锁关卡等,使用文字或者英文进行标识 coin_num int    
                    消耗数量 触发条件:用户消耗游戏币,导致游戏币减少时。 
                */
                var dic = {
                    "coin_type": "",
                    "method": "",
                    "coin_num": 1,
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.costCoins(dic, (res) => {
                    console.log("costCoins:" + JSON.stringify(res));
                });
            },
            gameInitInfo() {
                /** 
                    初始化信息:gt_init_info lev int    
                    玩家等级 coin_type string    
                    获得货币的类型 coin_left int 用户身上剩余的货币数量 触发条件:用户启动游戏,初始化完成时上报 
                */
                var dic = {
                    "lev": 1,
                    "coin_type": "",
                    "coin_left": 1,
                    "otherParams": {
                        "key": "value"
                    }
                };
                KJRangersAppLog.gameInitInfo(dic, (res) => {
                    console.log("gameInitInfo:" + JSON.stringify(res));
                });
            },
            eventV3() {
                var dic = {
                    "event": "test", //事件名称,不能为nil或空字符串
                    "params": { //事件参数。可以为空或者nil
                        "key": ""
                    }
                };
                KJRangersAppLog.eventV3(dic, (res) => {
                    console.log("eventV3:" + JSON.stringify(res));
                });
            },
            setCurrentUserUniqueID() {
                var dic = {
                    "userUniqueID": "test" //用户id,如无特殊需求,请勿传 空字符串 或者 全是空格的字符串。若为nil或空字符串则登出,相当于调用`clearUserUniqueID`。
                };
                KJRangersAppLog.setCurrentUserUniqueID(dic, (res) => {
                    console.log("setCurrentUserUniqueID:" + JSON.stringify(res));
                });
            },
            clearUserUniqueID() {
                KJRangersAppLog.clearUserUniqueID((res) => {
                    console.log("clearUserUniqueID:" + JSON.stringify(res));
                });
            },
            getSsid() {
                KJRangersAppLog.getSsid((res) => {
                    console.log("getSsid:" + JSON.stringify(res));
                });
            },
            getDid() {
                KJRangersAppLog.getDid((res) => {
                    console.log("getSsid:" + JSON.stringify(res));
                });
            },
            getIid() {
                KJRangersAppLog.getIid((res) => {
                    console.log("getSsid:" + JSON.stringify(res));
                });
            }
        }
    }
</script>

<style>
    .title {
        text-align: center;
        margin-top: 8px;
        margin-bottom: 8px;
        color: red;
        font-size: 20px;
    }
</style>

隐私、权限声明

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

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

插件使用的 巨量SDK上报数据 会采集数据,详情可参考:https://open.oceanengine.com/labels/7/docs/1696710648621071

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

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