基本接入步骤(必接)
接入准备
获取AppId及相关密钥
在接入本SDK之前,需申请AppId。
请发送邮件(提供应用名称
,Logo图片URL
(url可公网访问,图片尺寸建议:200px*200px以下),应用包名
,所属公司
,联系人电话
,联系人邮箱
,联系人地址
)至luoth@wifi.com;并抄送chenweixiong@wifi.com;zhangxt@wifi.com申请获取APPID,用于标识该应用。
获取SDK
SDK SDK-2.1.9.6.zip
Demo Demo-2.1.8.19.zip
版本更新
版本号 | 更新内容 | 发布时间 |
---|---|---|
2.1.9.6 | 登录模块更新内容: 1)更新登录域名为lianmeng.link |
2019-10-14 |
2.1.9.5 | 数据模块更新内容: 1)数据上报接口升级到https |
2019-09-10 |
2.1.9.4 | 登录模块更新内容: 1)为浏览器业务定制webview pause逻辑 设备统一标识模块更新内容: 1)修复contentProvider的异常问题 |
2019-08-26 |
2.1.9.3 | 升级模块更新内容: 1)升级支持自定义弹框 2)增加存储权限校验。 |
2019-06-04 |
2.1.9.1 | 数据模块更新内容: 1)添加WKUDID |
2019-06-03 |
2.1.8.19 | 数据模块更新内容: 1)优化数据SDK上报,减少异常情况下服务端压力 2) 添加省流量模式 |
2019-02-12 |
2.1.8.17 | 支付模块更新内容 1)支持简配版支付 |
2019-01-14 |
2.1.8.15 | 支付模块更新内容 1)将钱包分离可以单独接入 2)升级钱包SDK |
2019-01-10 |
2.1.8.11 | 修复崩溃采集不正常问题 | 2019-01-07 |
2.1.8.9 | 添加支付模块 | 2018-12-28 |
2.1.8.7 | 数据模块更新内容: 1)修复数据SDK流量异常问题 |
2018-12-12 |
2.1.8.5 | 数据模块更新内容: 1) 使用新的API接口WKData, WKDataExt, WKDataMultiprocessService, WKDataConfig废弃老接口,包统一为:com.wifi.data.open2 2) 上传协议改为PB协议,大量节省网络流量 3) 支持海外版 4) 优化页面打开事件计时 5) 修复若干bug,优化上报策略 帐号模块 更新内容: 1)弱网环境下交互体验优化 升级模块更新内容: 1)优化网络请求 2)修复强制更新 部分机型无法更新问题 |
2018-12-11 |
导入SDK
使用Eclipse导入SDK
获取protocolBuffer库protobuf-lite-3.0.0.jar
下载SDK库和protocolBuffer库,并合并到本地工程libs子目录下;在Eclipse中右键工程根目录,选择Properties -> Java Build Path -> Libraries,然后点击Add External JARs… 选择指向jar的路径,点击OK,即导入成功。(ADT17及以上不需要手动导入)
使用Android Studio导入SDK
Android Studio是谷歌推出了新的Android开发环境,如果您使用Android Studio开发,请按照如下的方法操作: 将sdk库合并到本地工程libs子目录下,在Gradle依赖中添加:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.protobuf:protobuf-lite:3.0.0'
implementation files('libs/SDK-[版本].jar')
}
Manifest权限配置
本SDK支持最低系统版本android-14
在AndroidManifest.xml中配置权限以及SDK所需的组件:
<manifest … >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<application …>
<provider
android:name="com.wifi.open.udid.WKUdidContentProvider"
android:authorities="${applicationId}.udid_provider"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.wifi.open.udid.QUERY"/>
</intent-filter>
</provider>
...
</application>
</manifest>
注: 对于非Android Studio项目,需要手动将authorities中的${applicationId}替换为app的package name。比如你的package name为com.wifi.open.udid.demo,则authorities为com.wifi.open.udid.demo.udid_provider。
权限说明
权限 | 用途 |
---|---|
INTERNET(必须) | 允许应用程序联网,以便向我们的服务器端发送数据 |
ACCESS_NETWORK_STATE(必须) | 检测联网方式,区分用户设备使用的是2G、3G或是WiFi |
READ_PHONE_STATE(可选) | 获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户,如果不配置IMEI将无法采集 |
ACCESS_WIFI_STATE(必须) | 获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识 |
READ_EXTERNAL_STORAGE(必须) | 允许读取外部存储 |
WRITE_EXTERNAL_STORAGE(必须) | 允许写入外部存储 |
BROADCAST_STICKY(必须) | 设备ID获取需要用到 |
SDK初始化
初始化代码必须在应用的Application类的onCreate中调用(此类会在AndroidManifest.xml->application->android:name中定义,如果没有则需要自定义一个, 参见创建自定义Application类),另外该调用需要在主线程中调用,否则很可能会导致数据丢失。
注意:APP如果有非主进程请按照多进程支持添加额外配置
初始化代码如下:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
WKConfig.build(this,APP_ID, AES_KEY, AES_IV, MD5_KEY, CHANNEL)
.setOverSea(false)//默认为false,如果是海外版本请设置为true
.init();
...
}
...
}
接口定义
WKConfig.build(application, appId, aesKey, aesIv, md5Key, channel)
//.setOverSea(true) 海外版设置
.init();
参数描述
- application: 应用使用的Application子类, 如果没有需要自定义;
- appId、aesKey、aesIv、md5Key: 申请时提供;
- channel: 渠道名,例如在豌豆荚渠道推广此包建议使用wandoujia, 在小米市场上可以使用xiaomi,方便区别渠道;
channel命名规范
- 可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
- 如果是万能钥匙渠道,尽量以”wifipush“、”wififeed“、”wififenfa“等打头,push表示推送渠道,feed表示信息流广告。
- 首尾字符前后不可以空格
- 不要使用纯数字作为渠道名
- 最多32个字符
- “unknown” 及其各种大小写形式,为保留字不可以作为渠道名
在您查看数据时,渠道会作为一个数据细分的维度。
非常重要:每台设备仅记录首次安装激活的渠道,如果该设备再次安装其他渠道包,则数据仍会被记录在初始的安装渠道上。 所以在测试不同的渠道时,请使用不同的设备来分别测试。
自定义Application类
创建一个类继承自Application,代码如下:
package com.demo;
import android.app.Application;
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
WKConfig.build(this, APP_ID, AES_KEY, AES_IV, MD5_KEY, "xiaomi")
.init();
}
}
并且必须在AndroidManifest.xml进行配置,如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<application
android:name="com.demo.App"
... >
...
</application>
...
</manifest>
混淆proguard设置
如果应用打包时进行了混淆,"必须"加入如下混淆配置:
-keep class com.lantern.auth.** {*;}
-keep class com.lantern.dm.** {*;}
-keep class com.lantern.push.** {*;}
-keep class com.lantern.sdk.** {*;}
-keep class com.wifi.data.open.** {*;}
-keep class com.wifi.openapi.** {*;}
-keep class com.wifi.open.** {*;}
至此,基本功能集成已经结束。
接入验证
可以通过以下方式确认上报是否成功:
- App安装后打开App,抓包查看是否有国内生产环境
dcsdk.51y5.net
、海外生产环境dc.y5en.com
的数据上报; 如果是Debug环境国内wifi30sdk.51y5.net
、海外stage-dc.y5en.com
,观察返回结果是否为200。 - 联系相关接口人确认上报是否成功。
旧SDK接入验证
抓包查看返回是否为{"retCd":"0"}
;如果不是则很可能是签名错误,请检查MD5_KEY等接入参数填写是否正确。