基本接入步骤(必接)

接入准备

获取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命名规范
  1. 可以由英文字母、阿拉伯数字、下划线、中划线、空格、括号组成,可以含汉字以及其他明文字符,但是不建议使用中文命名,会出现乱码。
  2. 如果是万能钥匙渠道,尽量以”wifipush“、”wififeed“、”wififenfa“等打头,push表示推送渠道,feed表示信息流广告。
  3. 首尾字符前后不可以空格
  4. 不要使用纯数字作为渠道名
  5. 最多32个字符
  6. “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.** {*;}

至此,基本功能集成已经结束。

接入验证

可以通过以下方式确认上报是否成功:

  1. App安装后打开App,抓包查看是否有国内生产环境dcsdk.51y5.net、海外生产环境dc.y5en.com的数据上报; 如果是Debug环境国内wifi30sdk.51y5.net、海外stage-dc.y5en.com,观察返回结果是否为200。
  2. 联系相关接口人确认上报是否成功。

旧SDK接入验证

抓包查看返回是否为{"retCd":"0"};如果不是则很可能是签名错误,请检查MD5_KEY等接入参数填写是否正确。