Skip to content

Android SDK 集成文档(原生开发)

集成引言

为了保证您的应用能正常通过应用市场上架审核,请在App的《隐私政策》中加入apptrace SDK会获取的设备信息、用途以及使用范围,具体内容可参考《合规指南》或官网的《隐私政策》。用户同意App的《隐私政策》之后再进行SDK初始化,如不同意则不能进行初始化。

一、下载并导入 SDK

方式一、Maven Central 集成

build.gradledependencies一栏中添加:

gradle
implementation 'cn.apptrace.sdk:apptrace-android-sdk:1.1.4'

方式二、手动集成

Github下载 Android 最新版本 SDK

从下载的文件中,将 jar 文件拷贝到项目的libs文件夹中,并使用 gradle 导入

implementation files('libs/apptrace_X.X.X.jar')

或者导入libs目录中所有 jar 文件

implementation fileTree(dir: 'libs', include: ['*.jar'])

二、初始化

AndroidManifest.xml中添加权限声明

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

AndroidManifest.xmlapplication标签内设置AppKey

<meta-data
    android:name="cn.apptrace.APP_KEY"
    android:value="AppTrace_AppKey"/>

备注:将AppTrace_AppKey替换成 AppTrace 为应用分配的appkey

App 启动时,请调用 SDK 初始化接口进行初始化。请确保在用户统一用户隐私协议之后再进行初始化。初始化时会获取剪切板信息。

/**
 * 调用初始化时请注意:
 * 1、首次启动,确保用户同意《隐私政策》之后,再初始化 apptrace SDK;
 * 2、仅在主进程的UI线程中调用初始化接口,多进程调用将会导致获取参数失败,统计数据异常;
 */
AppTrace.init(context);

如果不想SDK自动获取剪切板,可以设置关闭剪切板读取,也可以传入剪切板数据。

Configuration cfg = new Configuration();
cfg.setEnableClipboard(false);
AppTrace.setTraceData(...);
AppTrace.init(context, cfg);

三、功能集成

1. 携带参数安装

在 APP 需要安装参数时(由 web 网页中传递过来的,如邀请码、游戏房间号等动态参数),调用AppTrace.getInstall方法,在回调中获取参数(可重复调用)

AppTrace.getInstall(new AppInstallListener() {
    @Override
    public void onInstallFinish(AppData appdata) {
        Log.e(TAG, "param="  + appdata);
    }

    @Override
    public void onError(int code, String msg) {
        Log.e(TAG, "code=" + code + ",msg=" + msg);
    }
});

2. 一键拉起

2.1 开启一键拉起功能

登录 AppTrace 的管理后台,找到Android配置,开启相关功能。

2.2 代码集成

AndroidManifest.xml的拉起页面activity标签中添加intent-filter(一般为MainActivity),配置scheme,用于浏览器中拉起。

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="AppTrace_Scheme"/>
    </intent-filter>
</activity>

如果拉起页面和启动页是同一Activity,则AndroidManifest.xml的配置如下:

<activity
    android:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <data android:scheme="AppTrace_Scheme"/>
    </intent-filter>
</activity>

备注:将 AppTrace_Scheme 配置成 AppTrace 为应用分配的scheme。 在拉起页面中如下调用相关代码,获取 web 端传过来的动态参数。

public class MainActivity extends AppCompatActivity {

    private AppWakeUpListener wakeUpListener = new AppWakeUpListener() {
        @Override
        public void onWakeUpFinish(AppData appdata) {
            Log.e("apptrace", "appdata=" + appdata);
        }
    };

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        AppTrace.getWakeUp(intent, wakeUpListener);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppTrace.getWakeUp(getIntent(), wakeUpListener);
    }
}