Android SDK 集成文档(原生开发)
集成引言
为了保证您的应用能正常通过应用市场上架审核,请在App的《隐私政策》中加入openinstall SDK会获取的设备信息、用途以及使用范围,具体内容可参考《合规指南》或官网的《隐私政策》。用户同意App的《隐私政策》之后再进行SDK初始化,如不同意则不能进行初始化。
一、下载并导入 SDK
从下载中心下载 Android 最新版本 SDK
从下载的文件中,将 jar 文件拷贝到项目的libs
文件夹中,并使用 gradle 导入
implementation files('libs/OpenInstall_vX.X.X.jar')
或者导入libs
目录中所有 jar 文件
implementation fileTree(dir: 'libs', include: ['*.jar'])
如果“下载配置”中的下载地址配置的是应用的Google Play地址,则可以添加以下依赖,用于提升 Google Play 商店下载时参数还原精度
implementation "com.android.installreferrer:installreferrer:2.2"
二、初始化
在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.openinstall.APP_KEY"
android:value="OPENINSTALL_APPKEY"/>
备注:将OPENINSTALL_APPKEY
替换成 openinstall 为应用分配的appkey
如需使用“广告统计”功能,则需要在AndroidManifest.xml 文件中的 application 标签内添加如下配置
<meta-data
android:name="com.openinstall.AD_TRACK"
android:value="true"/>
在Applicaiton
的onCreate()
函数中调用预初始化函数。预初始化函数不会采集设备信息,也不会向openinstall上报数据
OpenInstall.preInit(context);
App 启动时,请调用 SDK 初始化接口进行初始化。此时SDK才会真正采集设备信息并上报数据。
/**
* 调用初始化时请注意:
* 1、首次启动,确保用户同意《隐私政策》之后,再初始化openinstall SDK;
* 2、仅在主进程的UI线程中调用初始化接口,多进程调用将会导致获取参数失败,统计数据异常;
* 3、初始化调用时,尽量保证应用处于前台可触控状态下,对提升参数还原精度有很大的帮助。
*/
OpenInstall.init(context);
开发者可以根据实际情况,控制SDK设备信息的获取,如需使用“广告统计”功能,则需要按照 广告平台对接文档 额外加入或修改相应的集成代码
/**
* 传入设备信息时请注意:
* 1、不想 SDK 内部自动获取,则可传入空值;
* 2、不要传入自定义的非空固定值。
*/
Configuration configuration = new Configuration.Builder()
.androidId(androidId)
.serialNumber(serialNumber)
.build();
OpenInstall.init(context, configuration);
注意:SDK初始化时,默认会读取剪切板,经验证后仅向服务端上传openinstall js SDK写入剪切板的网页参数。剪切板方案能有效地提高参数还原准确率,提高统计精度。如果您确定不使用剪切板方案来提升参数还原准确率,则可以在代码中直接关闭SDK对剪切板的读取(同时推荐使用【Android下载配置】的【高精度安装包】下载方式来保证参数还原准确率)。
OpenInstall.clipBoardEnabled(false); //false为不读取,true为读取
OpenInstall.init(context);
开发者也可以自行获取剪切板数据后使用以下API自行将剪切板内容传入SDK,此时SDK也不会读取剪切板内容(传入前会先判断剪切板内容是否为openinstall js SDK写入的,如果不是则不传入)。
ClipData clipData = clipboardManager.getPrimaryClip();
if (OpenInstallHelper.isTrackData(clipData)) {
OpenInstall.setTrackData(clipData);
}else {
OpenInstall.setTrackData(null);
}
OpenInstall.init(context);
三、功能集成
1. 快速安装
如果只需要快速安装功能,无需其它功能(App传参安装、渠道统计、一键拉起),完成初始化即可
2. 一键拉起
2.1 在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="OPENINSTALL_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="OPENINSTALL_SCHEME"/>
</intent-filter>
</activity>
备注:将OPENINSTALL_SCHEME
配置成 openinstall 为应用分配的scheme
2.2 在拉起页面中如下调用相关代码,获取 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;
}
}
2.3 如果需要从微信/QQ中的H5网页通过应用宝打开App并且传递拉起参数,请启用【Android集成】-【Android下载配置】中的“集成应用宝”开关,并在腾讯应用开放平台中的【运营服务】-【增长运营】-【微下载】-”绑定Applink协议头“一栏中配置好openinstall系统分配的scheme。
3. App传参安装高级版功能
3.1 在 App 需要安装参数时(由 web 网页中传递过来的,如邀请码、游戏房间号等动态参数),调用OpenInstall.getInstall
方法,在回调中获取参数(可重复获取)
/*
获取安装参数时请注意
1. 不要在初始化之后,紧接着调用,容易导致获取数据失败;
2. 在业务需要时再获取数据,保证SDK有充足的时间进行数据还原;
3. 不要在返回AppData为空时,尝试使用此api进行重试获取数据。
*/
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());
}
});
此方法获取初始化成功后存储在本地的数据,除非是网络请求超时,否则重复调用返回数据相同
4. 渠道统计高级版功能
SDK 会自动完成访问量、点击量、安装量、活跃量、留存率等统计工作。
4.1 注册量统计
如需统计每个渠道的注册量(对评估渠道质量很重要),可根据自身的业务规则,在确保用户完成 App 注册的情况下调用以下接口:
//用户注册成功后调用
OpenInstall.reportRegister();
4.2 渠道效果统计
4.2.1 添加效果点和上报效果值
效果点建立在渠道基础之上,主要用来统计终端用户对某些特殊业务的使用效果,如充值金额,分享次数等等。
调用接口前,请先进入管理后台“效果点管理”中添加效果点
调用接口时,请使用后台创建的 “效果点ID” 作为pointId
OpenInstall.reportEffectPoint(pointId, pointValue);
调用接口后,可在后台查看效果点统计数据
4.2.2 渠道效果统计明细
渠道效果统计明细支持开发者添加自定义参数(限添加5个),以便开发者能更好的评估渠道效果和了解用户
调用接口前,请前往“效果点管理”中启用“记录明细”,并添加自定义参数
调用以下接口上报效果点,请保证传入的Map<String, String>
中的 key 在后台的自定义参数列表中已添加
OpenInstall.reportEffectPoint(pointId, pointValue, extraMap);
5. 裂变分享高级版功能
分享上报主要是统计某个具体用户在某次分享中,分享给了哪个平台,再通过JS端绑定被分享的用户信息,进一步统计到被分享用户的激活回流等情况。注意SDK已经定义好了国内外大部分主流的分享平台, 请使用 SharePlatform 枚举传入。
此接口需在用户点击分享按钮或之前触发,才能统计分享激活或者回流数据。
OpenInstall.reportShare("shareCode001", SharePlatform.WechatTimeline, new ResultCallback<Void>() {
@Override
public void onResult(Void ignore, Error error) {
if (error != null) {
Log.w("OpenInstall", "分享上报失败:" + error);
} else {
Log.d("OpenInstall", "分享上报成功");
}
}
});
四、应用信息配置
SDK集成操作完成后,需要将应用的相关配置信息填充到控制台。填充方式分为:自动配置、手动配置。
自动配置:导出集成完毕的App测试包上传至控制台,上传后系统会自动解析安装包进行信息填充。
手动配置:无需导出App测试包,直接填写对应的应用信息在对应位置后保存即可。