Android SDK 集成指南
使用提示
本文是JVerification Android SDK 标准的集成指南文档。
匹配的 SDK 版本为:v2.0.0及以后版本。
- 如果您想要快速地测试、请参考本文在几分钟内跑通Demo。
- 极光认证文档网站上,有相关的所有指南、API、教程等全部的文档。包括本文档的更新版本,都会及时地发布到该网站上。
产品说明
极光认证整合了三大运营商的网关认证能力,为开发者提供了一键登录和号码认证功能,优化用户注册/登录、号码验证体验,提高安全性。
主要场景:
- 注册
- 登陆
- 二次验证
Android SDK 版本
目前SDK只支持Android 4.0或以上版本的手机系统.
mavenCentral自动集成步骤
说明 : 使用 mavenCentral 自动集成的开发者,不需要在项目中添加 jar 和 so,mavenCentral 会自动完成依赖;在 AndroidManifest.xml 中不需要添加任何 SDK 相关的配置,mavenCentral 会自动导入。
- 确认 android studio 的 Project 根目录的主 gradle 中配置了 mavenCentral 支持。(新建 project 默认配置就支持)
buildscript {
repositories {
jcenter()
mavenCentral()
}
......
}
allprojects {
repositories {
jcenter()
mavenCentral()
}
}
- 在 module 的 gradle 中添加依赖和 AndroidManifest 的替换变量。
android {
......
defaultConfig {
applicationId "com.xxx.xxx" // 您应用的包名.
......
ndk {
//选择要添加的对应 cpu 类型的 .so 库。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 还可以添加 'x86', 'x86_64'
}
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey ", //Portal上注册的包名对应的 appKey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
......
}
......
}
dependencies {
......
compile 'cn.jiguang.sdk:jverification:2.7.1' // 此处以2.7.1 版本为例。
compile 'cn.jiguang.sdk:jcore:3.1.0' // 此处以JCore 3.1.0 版本为例。
......
}
组包服务集成步骤
组包服务是对手动集成 SDK 的封装服务,通过将 SDK 组合到单独的 jiguang module ,将手动集成的共同配置业务隐藏,开发者只需关注自己本身的个性化配置,减少集成步骤,提高开发者接入效率。
如您需要使用 JVerification 组包服务,请在组包服务界面勾选 JVerification 服务,并组装SDK
jiguang_sdk.zip 集成压缩包内容
jiguang
- JIGUANG SDK 组合包
- 资源文件等已在该包中进行依赖,无需在手动拷贝依赖
jiguang-demo
- JIGUANG SDK 组合包集成 demo。
- 是一个完整的 Android 项目,通过这个演示了组包服务的基本用法,可以用来做参考。
- 根据您勾选的服务自动组合构建,组包前预设的相关配置会同时预埋到 demo 中
导入 JIGUANG SDK
通过 AS 将 SDK 作为 module 导入项目
导入步骤:AndroidStudio -> File -> New -> Import Module -> 选择 jiguang 导入
配置 JIGUANG SDK
settings.gradle 配置添加:
include ':jiguang'
在应用 module gradle 中 添加 SDK 依赖
android {
......
defaultConfig {
applicationId "com.xxx.xxx" //JVerification 上注册的包名.
......
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你的 Appkey ", //JVerification 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
......
}
......
}
dependencies {
......
implementation project(':jiguang')
......
}
在应用 module Androidmanifest 中配置
application标签中添加
android:networkSecurityConfig="@xml/network_security_config"
<activity android:name="cn.jiguang.demo.jverification.MainActivity" />
在res目录下新建xml目录,并新建network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
手动集成步骤
手动集成压缩包下载链接:前往下载
jverification-android-release-2.x.y.zip 集成压缩包内容
- AndroidManifest.xml
- 客户端嵌入SDK参考的配置文件
- libs/jcore-android_v2.x.x.jar
- sdk 核心包
- libs/xxx/xx.so
- sdk需要用的so文件
- libs/jverification-android-sdk_v2.x.x.jar
- JVerification SDK 开发包
- res/xxx
- JVerification SDK 所需的资源文件
- assets/xxx
- JVerification SDK 所需的资源文件
- example
- 是一个完整的 Android 项目,通过这个演示了 JVerification SDK 的基本用法,可以用来做参考。
SDK 文件移植
- 解压缩 jverification-android-2.x.x-release.zip 集成压缩包。
- 复制 libs/jcore-android-2.x.x.jar 到工程 libs/ 目录下。
- 复制 libs/jverification-android-2.x.x.jar 到工程 libs/ 目录下。
- 复制 res/xxx 到工程 res/xxx 对应的目录下。
- 复制 assets/xxx 到工程 assets/xxx 对应的目录下。
- 复制 libs/(cpu-type)/xxx.so 到你的工程中存放对应cpu类型的目录下。
说明 1:使用android studio的开发者,如果使用jniLibs文件夹导入so文件,则仅需将所有cpu类型的文件夹拷进去;如果将so文件添加在module的libs文件夹下,注意在module的gradle配置中添加一下配置:
android {
......
sourceSets {
main {
jniLibs.srcDirs = ['libs']
......
}
......
}
......
}
说明 2:如果你的应用所选的targetSdkVersion >=28,设备在Android P 上是默认限制使用http请求的,开发者需要做如下配置:
- 在res文件夹下创建一个xml文件夹,然后创建一个network_security_config.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
- 在AndroidManifest.xml文件下的application标签增加以下属性:
<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
/>
配置 AndroidManifest
AndroidManifest 示例
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="您应用的包名"
android:versionCode="100"
android:versionName="1.0.0"
>
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" />
<!--android 6.0 以后需要添加 READ_PHONE_STATE WRITE_EXTERNAL_STORAGE 动态权限申请-->
<!-- Required -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!-- Optional -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="Your Application Name">
<!-- since 2.0.0 optional 可选项,使用一键登录功能必须添加 -->
<!-- since 2.1.1 optional 可选项,通过screenOrientation设置授权页面横竖屏展示 -->
<!-- since 2.0.0 optional 可选项,使用一键登录功能必须添加 -->
<!-- since 2.1.1 optional 可选项,通过screenOrientation设置授权页面横竖屏展示 -->
<activity
android:name="com.cmic.sso.sdk.activity.LoginAuthActivity"
android:theme="@android:style/Theme.Holo.NoActionBar"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:launchMode="singleTop">
</activity>
<!-- since 2.0.0 optional 可选项,使用一键登录功能必须添加 -->
<!-- since 2.1.1 optional 可选项,通过screenOrientation设置授权页面横竖屏展示 -->
<activity android:name="cn.jiguang.verifysdk.CtLoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Holo.NoActionBar"
android:screenOrientation="portrait"
android:launchMode="singleTop">
</activity>
<!-- Required -->
<meta-data android:name="JPUSH_APPKEY" android:value="您应用的Appkey"/>
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
<!-- 如果你使用的 JCore 是 2.0.0 及以上的版本,需要额外在 Androidmanifest 中配置一个Service,以在更多手机平台上获得更稳定的支持,示例如下。(JCore1.x版本不需要) -->
<!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
<!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 -->
<!-- 如果不配置这个Service,认证的数据就不会上报 -->
<service android:name="xx.xx.XService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
</application>
</manifest>
本地工程配置
混淆配置
- 请下载 4.x 及以上版本的 proguard.jar, 并替换你 Android SDK "tools\proguard\lib\proguard.jar"
- 请在工程的混淆文件中添加以下配置:
-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
-dontwarn cn.com.chinatelecom.**
-keep class cn.com.chinatelecom.** { *; }
-dontwarn com.ct.**
-keep class com.ct.** { *; }
-dontwarn a.a.**
-keep class a.a.** { *; }
-dontwarn com.cmic.**
-keep class com.cmic.** { *; }
-dontwarn com.unicom.**
-keep class com.unicom.** { *; }
-dontwarn com.sdk.**
-keep class com.sdk.** { *; }
-dontwarn com.sdk.**
-keep class com.sdk.** { *; }
添加代码
JVerification SDK 提供的 API 接口,都主要集中在 cn.jiguang.verify.api.JVerificationInterface 类里。
基础 API
- 初始化 sdk : 传入 application 的 context 来初始化 sdk 。
JVerificationInterface.init(Context context);
- 设置调试模式:参数为 true 表示打开调试模式,可看到 sdk 的日志。
JVerificationInterface.setDebugMode(boolean isDebugMode);
更多 API
其他API的使用方法请参考接口文档:Android SDK API
运行Demo
压缩包附带的 example 是一个 API 演示例子。你可以将它导入到你的工程,并将你的 appKey 填入到 example 的 AndroidManifest 中,然后直接运行起来测试。
技术支持
邮件联系:support@jiguang.cn