Android SDK 集成指南

一、下载并导入 SDK

下载中心下载 Android 最新版本 SDK
从下载的文件中,将 aar 文件拷贝到项目的libs文件夹中,并使用 gradle 导入

implementation files('libs/XInstall.aar')

Android SDK导入常见问题

二、初始化

在AndroidManifest.xml中添加权限声明

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

在AndroidManifest.xml的application标签内设置AppKey

<meta-data
    android:name="com.xinstall.APP_KEY"
    android:value="XINSTALL_APPKEY" />

备注: 将XINSTALL_APPKEY替换成 XInstall 为应用分配的appkey

App 启动时,调用 XInstall.init(context)方法完成 sdk 初始化

示例代码

在自定义 Application 中初始化

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (isMainProcess()) {
        //初始化
         XInstall.init(this);
         //启用log
         XInstall.setDebug(true);
        }
    }

    public boolean isMainProcess() {
        int pid = android.os.Process.myPid();
        ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
        for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
            if (appProcess.pid == pid) {
                return getApplicationInfo().packageName.equals(appProcess.processName);
            }
        }
        return false;
    }
}

备注: 当应用存在多个进程时,确保只在主进程进行初始化
在AndroidManifest.xml中的application标签中添加android:name=".MyApplication"指定自定义的Application类,以便程序启动的时候初始化自定义Application类,而不是默认配置的Application类

<application
    android:name=".MyApplication"
    android:allowBackup="false"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    ...
</application>

三、功能集成

1.快速下载

如果只需要快速下载功能,无需其它功能(携带参数安装、渠道统计、一键拉起),完成初始化即可

2.一键拉起

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

<activity
    android:name=".MainActivity"
    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="XINSTALL_SCHEME"/>
    </intent-filter>
</activity>

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

<activity
    android:name=".MainActivity"
    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="XINSTALL_SCHEME"/>
    </intent-filter>
</activity>

备注: 将XINSTALL_SCHEME配置成 XInstall 为应用分配的scheme,在后台Android集成-功能集成文档中查看,格式为xi+appAkey

2.2 在拉起页面中如下调用相关代码,获取 web 端传过来的动态参数

class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //获取唤醒参数
        XInstall.getWakeUpParam(getIntent(), wakeUpAdapter);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // 此处要调用,否则App在后台运行时,会无法截获
        XInstall.getWakeUpParam(getIntent(), wakeUpAdapter);
    }

    XWakeUpAdapter wakeUpAdapter = new XWakeUpAdapter() {
        @Override
        public void onWakeUp(XAppData XAppData) {
            //获取渠道数据
            String channelCode = XAppData.getChannelCode();

            //获取数据
            Map<String, String> data = XAppData.getExtraData();
            //通过链接后面携带的参数或者通过webSdk初始化传入的data值。
            String uo = data.get("uo");
            //webSdk初始,在buttonId里面定义的按钮点击携带数据
            String co = data.get("co");

            //获取时间戳
            String timeSpan = XAppData.getTimeSpan();

        }
    };

    @Override
    protected void onDestroy() {
        super.onDestroy();
        wakeUpAdapter = null;
    }
}

3.携带参数安装/唤起

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

XInstall.getInstallParam(new XInstallAdapter() {
            @Override
            public void onInstall(XAppData XAppData) {
                //获取渠道数据
                String channelCode = XAppData.getChannelCode();

                //获取数据
                Map<String, String> data = XAppData.getExtraData();
                //通过链接后面携带的参数或者通过webSdk初始化传入的data值。
                String uo = data.get("uo");
                //webSdk初始,在buttonId里面定义的按钮点击携带数据
                String co = data.get("co");

                //获取时间戳
                String timeSpan = XAppData.getTimeSpan();
                // 是否为第一次获取到安装参数
                boolean firstFetch = XAppData.isFirstFetch();
            }
        });

4.高级数据统计

SDK 会自动完成访问量、点击量、安装量、活跃量、留存率等统计工作。

4.1 注册量统计

如需统计每个渠道的注册量(对评估渠道质量很重要),可根据自身的业务规则,在确保用户完成 app 注册的情况下调用以下接口:

//用户注册成功后调用  
XInstall.reportRegister();

4.2 事件统计

事件统计可以自定义埋点数据,通过埋点,可以了解到用户使用您应用的后续行为,用于评估渠道效果与价值。如:加购数、下单人数等。使用事件统计,需要先在【事件统计】页面内添加事件统计。只针对iOS和Android客户端。

调用接口时,请使用后台创建的 “事件统计ID” 作为 pointID

/**
* 入参:事件统计ID,事件值
*/
XInstall.reportPoint("pointID",1);

四、导出apk包并上传

  • 代码集成完毕后,需要导出安装包上传 XInstall 后台,XInstall 会自动完成所有的应用配置工作。
  • 上传完成后即可开始在线模拟测试,体验完整的App安装/拉起流程;待测试无误后,再完善下载配置信息。

下面是apk包的上传界面(后台截图):

results matching ""

    No results matching ""