Android SDK 集成指南

下载并导入 SDK

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

    compile files('libs/OpenInstall_v2.2.0.jar')

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

    compile 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="com.openinstall.APP_KEY"
    android:value="OPENINSTALL_APPKEY"/>

备注:将OPENINSTALL_APPKEY替换成 openinstall 为应用分配的appkey

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

示例代码

在自定义 Application 中初始化为例

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        if (isMainProcess()) {
         OpenInstall.init(this);
        }
    }

    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>

功能集成

携带参数安装

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

OpenInstall.getInstall(new AppInstallAdapter() {
    @Override
    public void onInstall(AppData appData) {
        //获取渠道数据
        String channelCode = appData.getChannel();
        //获取自定义数据
        String bindData = appData.getData();
        Log.d("OpenInstall", "getInstall : installData = " + appData.toString());
    }
});

渠道统计

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

注册量统计

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

//用户注册成功后调用
OpenInstall.reportRegister();
渠道效果统计

效果点建立在渠道基础之上,主要用来统计终端用户对某些特殊业务的使用效果,如充值金额,分享次数等等。

调用接口前,请先进入管理后台“效果点管理”中添加效果点

效果点管理

调用接口时,请使用后台创建的 “效果点ID” 作为pointId

OpenInstall.reportEffectPoint(pointId, pointValue);

调用接口后,可在后台查看效果点统计数据

一键拉起

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="OPENINSTALL_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="OPENINSTALL_SCHEME"/>
    </intent-filter>
</activity>

备注:将OPENINSTALL_SCHEME配置成 openinstall 为应用分配的scheme

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

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取唤醒参数
        OpenInstall.getWakeUp(getIntent(), wakeUpAdapter);
    }
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // 此处要调用,否则App在后台运行时,会无法截获
        OpenInstall.getWakeUp(intent, wakeUpAdapter);
    }
    AppWakeUpAdapter wakeUpAdapter = new AppWakeUpAdapter() {
        @Override
        public void onWakeUp(AppData appData) {
            //获取渠道数据
            String channelCode = appData.getChannel();
            //获取绑定数据
            String bindData = appData.getData();
            Log.d("OpenInstall", "getWakeUp : wakeupData = " + appData.toString());
        }
    };
    @Override
    protected void onDestroy() {
        super.onDestroy();
        wakeUpAdapter = null;
    }
}