npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cordova-plugin-trackingio

v1.1.3

Published

Cordova热云SDK插件 (A cordova plugin for trackingIO2.0 SDK)

Downloads

67

Readme

Cordova热云SDK插件

cordova-plugin-trackingio

一、说明

Cordova项目接入热云SDK(TrackingIO 2.0)

热云是一款移动应用数据分析平台,通过集成热云 SDK,开发者可以统计应用的启动、注册、登录、充值、事件等关键数据,以便进行数据分析和业务优化。

SDK版本

二、接入流程

1.在项目中安装插件

  • android安装前必看 !

    • 项目中使用了oaid sdk 1.0.25,他的minSdkVersion是21
    • 如果你的Cordova项目符合这个要求,以下几种方式都适合您,请放心安装~
    • 如果你的Cordova项目正好和我的一样不符合这个要求,比如我的是19,那么请先将本项目clone下来,然后将plugin.xml中注释包围的几行取消注释,最后再使用第3种方式(通过本地路径安装),安装命令后面接上 --force
    cordova plugin add /local/path/to/cordova-plugin-trackingio --variable TRACKINGIO_APPKEY=IX4BGYYG8L4L --force
  • 安装时使用的 TRACKINGIO_APPKEY 需要在热云产品中心创建

  1. 通过npm安装
cordova plugin add cordova-plugin-trackingio --variable TRACKINGIO_APPKEY=IX4BGYYG8L4L
  1. 通过git链接安装
cordova plugin add https://github.com/tadazly/cordova-plugin-trackingio.git --variable TRACKINGIO_APPKEY=IX4BGYYG8L4L
  1. 通过本地路径安装
cordova plugin add /local/path/to/cordova-plugin-trackingio --variable TRACKINGIO_APPKEY=IX4BGYYG8L4L
  • 本地插件调试开发(改插件代码时可以用)

首先将插件clone到本地,然后使用本地路径方式安装并传入 --link 参数,会将插件目录中的代码链接至项目

cordova plugin add /local/path/to/cordova-plugin-trackingio --variable TRACKINGIO_APPKEY=IX4BGYYG8L4L --link

2.项目配置

  • Android
    • 无需额外配置
  • iOS
    • 关闭bitcode: 选择⼯程-> Build Settings -> 搜索bitcode ->设置为NO

    • (重要)AdServices.framework 以Optional形式引入

      Build Phases -> AdServices.framework Status: Optional

3.使用方式

插件对象可以在js代码中使用Tracking或者cordova.plugins.Tracking调用

4.测试

  • 在开发环境中进行Debug测试,日志TAG为Tracking:
Tracking.setDebugMode(true);

注:热云SDK所有API接口的http response均以status:0表示成功。

  • 进入热云调试页面查看调试数据:

    “全部产品按钮” - “待调试产品”–“调试”

三、通用说明

1.获取设备ID

如果开发者没有自己的用户系统,希望使用用户设备ID作为accountId,直接调用Tracking.getDeviceId()方法获取设备ID即可。

该方法一定要在调用初始化接口之后间隔5s以上再使用,否则会影响取值。

const uuid = await Tracking.getDeviceId();

2.通过后台来统计

如果你的项目后台很好说话,他愿意帮助你来接热云,那么谢谢他,我们只需要初始化sdk,然后在用户注册、登录的时候将设备id和oaid提供给后台就行,剩下的统计全部交给后台。

// onDeviceReady
const initParams: initParameters = {
    // 你的配置...
}
Tracking.initWithKeyAndChannelId(
    initParams,
    () => {
        // onSuccess
        console.log('TrackingIO 初始化成功');
        // 据热云sdk描述,需要隔5s再取...
        setTimeout(() => {
            Tracking.getDeviceId().then(deviceId => {
                console.log('TrackingIO deviceId: ' + deviceId);
            });
            Tracking.getOAID().then(oaid => {
                console.log('TrackingIO oaid: ' + oaid);
            });
        }, 5000);
    },
    () => {
        // onFailed
        console.error('TrackingIO 初始化失败');
    }
);

3.OAID获取不到的情况

  • 返回 unknown

    经不严谨测试,模拟器在调用oaid初始化( MdidSdkHelper.InitSdk )方法后,走不进回调函数 :(

    这种情况下,默认返回 'unknown',如果想抛出错误,请手动修改TrackingIOCordovaPlugin.java中的getOAID方法。

  • 返回 00000000000000000000000000000000

    部分手机会在初次调用sdk时提示个性化推荐服务权限,在没有获得权限前或者被拒绝后会返回。

    解决办法参考 [EXTRA] 部分,首先在app获取权限后先调用Tracking.initOaidSdk(),然后再在登陆你的用户系统前调用Tracking.initWithKeyAndChannelId(...)确保热云sdk在初始化的时候能够正确拿到oaid。

4.onDestroy没有调用情况

  • 本插件会在onDestroy时判断是否已经手动调用过统计时长和退出SDK的api,如果没有调用过,自动帮你调用。
  • 正常情况下,在app结束时,PluginManager会调用所有被使用过的Cordova插件的onDestroy方法。
  • 如果没有正常调用,检查是否有别的插件在onDestroy里做了杀进程的操作,比如某个插件在onDestroy里写了android.os.Process.killProcess(android.os.Process.myPid());

四、API使用说明

1.初始化热云SDK

初始化参数说明:

  • appKey默认使用安装插件时的TRACKINGIO_APPKEY参数,不推荐从js传入。
  • 插件提供1.0.25版本的oaid sdk,理论上不用传入任何与oaid相关的参数。
type initParameters = {
    appKey?: string
    channelId?: string
    oaid?: string
    assetFileName?: string
    oaidLibraryString?: string
}
const initParams: initParameters = {
    // 你的配置...
    channelId: 'test',
};
Tracking.initWithKeyAndChannelId(
    initParams,
    () => {/** on Success **/},
    (err) => {/** on Error **/}
);

1.1 获取设备ID

该方法一定要在调用初始化接口之后间隔5s以上再使用,否则会影响取值。

const deviceId = await Tracking.getDeviceId();

1.2 获取OAID/IDFA

  • iOS通过该接口获取idfa,需要先调用initWithKeyAndChannelId或者initOaidSdk再调用getOAID。
  • Android如果初始化参数填入了oaid,直接返回提供的oaid。
  • 如果没有提供,会自动调用插件自带的oaid sdk去获取。
    • 注意:模拟器和 androidTarget < 29 获取不到这该死的oaid,返回 'unknown'
const oaid = await Tracking.getOAID();

2.统计用户注册数据

Tracking.setRegisterWithAccountID('123456');

3.统计用户登录数据

Tracking.setLoginSuccessBusiness('123456');

4.统计用户充值成功数据(建议使用服务器REST报送)

Tracking.setPayment('0062001242', 'alipay', 'CNY', 1000);

5.统计用户自定义事件

Tracking.setEvent('event_1', { param1: 'value1', param2: 'value2' });

6.上报订单事件

Tracking.setOrder('f93182bc6', 'CNY', 9);

7.统计广告展示事件

Tracking.setAdShow('csj', 'adid123456', '1');

8.统计广告点击事件

Tracking.setAdClick('csj', 'adid123456');

9.统计app使用时长事件

如果没有调用,那么在app关闭时会自动调用。

Tracking.setAppDuration(3);

10.统计app页面停留时长事件

Tracking.setPageDuration('module.HappyNewYearActivity', 3);

11.退出sdk

如果没有调用,那么在app关闭时会自动调用。(ios不需要调用)

Tracking.exitSdk();

Extra: 先初始化oaid sdk,延后初始化热云sdk

以下内容是基于你使用本插件自带的oaid sdk来获取oaid的情况来说明。如果你自己可以获得oaid,那么请直接在initWithKeyAndChannelId的初始化参数中设置吧,后面和你没关系。

部分手机可能存在调用oaid sdk时会弹出一个让用户选择是否同意个性化推荐服务的弹窗,此时用户没有操作也会立即走入oaid sdk初始化完成的回调函数,并返回support=true和oaid=000000000000000,建议第一次打开app时先调用这个接口让用户做选择,延后调用热云sdk的初始化。

Tracking.initOaidSdk(oaid=>{
    console.log(oaid);
});

举个例子:

初次启动app流程

  1. 弹出你的请求权限弹窗(给我XXX权限,blabla...)[拒绝][同意]
  2. 用户点击[同意],此时我们调用 Tracking.initOaidSdk,并再弹出一个需要用户交互的弹窗(Hello,blabla...)[确认]
    • 此时如果系统弹窗了,那么用户肯定会先点击系统的弹窗。
    • 没弹窗是最好的了。
    • 此时无论与否,用户已经对是否开启个性化推荐功能完成了选择。
  3. 接下来用户只有一个选择,点击你的[确认]按钮,接下来就可以进入你的正常app流程了。

正常启动app流程

  1. 判断是否获得权限。
  2. 如果有READ_PHONE_STATE权限,则正式调用 Tracking.initWithKeyAndChannelId(...) 初始化热云。
  3. 接下来做你爱做的事吧。

五、iOS使用说明

iOS的所有接口都与Android保持一致,initParameters可选appKey、channelId、caid、caid2、ASAEnabled。

idfa可以通过getOAID获得,例:

Tracking.initWithKeyAndChannelId(
    {},
    () => {
        /** on Success **/
        setTimeout(async () => {
            const deviceId = await Tracking.getDeviceId();
            const idfa = await Tracking.getOAID();
            console.log(`deviceId: ${deviceId}, idfa: ${idfa}`);
            /** 接下来可以把deviceId与idfa传给后端开发,让后端开发来调用其余api,比如登录、支付等 **/
        }, 5000);
    },
    (err) => {/** on Error **/}
);

技术支持

如有任何问题,请及时联系热云的技术支持工程师 :)