Android接入文档
1.接入方式
在工厂根目录中build.gradle增加快看maven库的依赖
allprojects {
repositories {
maven {
credentials {
username "deploy"
password "Lv2Zm8?)h.u4M{AMq!"
}
url 'https://kk-nexus.kkmh.com/repository/maven-releases/'
}
}
}
在主工程build.gradle中增加游戏sdk依赖
implementation 'com.kuaikan.gamesdk:gamesdk:4.2.1_release.0'
2. 权限
<uses-permission android:name="android.permission.INTERNET" />
3. 清单文件
在AndroidManifest.xml的application节点下配置如下代码
<meta-data android:name="kuaikan_appid" android:value="xxx"/>
xxx为appid记住必须配置,否则包审核会失败
4. 初始化
KKAgent.init(Context context, String appId, boolean isDebug)进行初始化,建议在您应用的Application.onCreate中调用, Sdk内部已经做了异步处理, 不会耗时. 示例:
class GameSdkApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
KKAgent.init(this, "xxx", false);
}
}
isDebug
固定传false
5. 功能说明
5.1 账号功能
5.1.1 功能说明
sdk提供类三种登录方式:
- 快看App SSO登录,需要在设备上已经安装快看App的情况下才支持.
- 手机号登录
- 游客登录
默认情况下,调起登录页时会同时显示3种登录方式,但以下情况会特殊处理:
- 如果设备上没有安装快看App,则不会显示App SSO入口
- 如果当前应用在当前设备上登录过账号,则不会显示游客入口
账号相关通过KKAccountManager类提供,包括如下功能:
- 调起登录页进行登录
- 判断是否已经登录
- 获取登录账号信息
- 监听账号变化
- 获取用户年龄: 只有经过实名认证的账号才会返回年龄,否则返回0
- 判断是否经过实名认证
- 移除账号
5.1.2 接口说明
IKKAccountManager, 通过KKAgent.getAccountManager()获取
调起登录:
/**
* 调起登录页, 不论当前是否已经登录过,都会调起登录页,登录成功后会添加或更新账号信息
*
* @param activity 用于调起登录页的Activity, sdk内部会处理内存泄漏问题
* @param loginCallback 登录回调,接收登录成功/失败的回调
* @param isWeak 是否使用弱引用的方式持有loginCallback, 默认为false
*/
@JvmStatic
fun login(activity: Activity, loginCallback: LoginCallback?, isWeak: Boolean)
/**
* 调起登录页, 不论当前是否已经登录过,都会调起登录页,登录成功后会添加或更新账号信息
*
* @param activity 用于调起登录页的Activity, sdk内部会处理内存泄漏问题
* @param loginCallback 登录回调,接收登录成功/失败的回调
* @param loginType 支持的登录类型, 类型定义在LoginType中
* @param isWeak 是否使用弱引用的方式持有loginCallback, 默认为false
*/
@JvmStatic
fun login(activity: Activity, loginCallback: LoginCallback, loginType: Int, isWeak: Boolean = false)
/**
* 移除账号,并调起登录页,参数描述参见login
*/
@JvmStatic
fun relogin(activity: Activity, loginCallback: LoginCallback?,loginType: Int, isWeak: Boolean = false)
获取账号信息:
/**
* 获取账号信息
* @return 返回当前已经登录的账号信息
**/
@JvmStatic
fun getAccountInfo(): AccountInfo?
/**
* 获取账号登录用户的年龄,只有使用账号登录,且对应账号已完成实名认证的情况下,才返回年龄,否则返回0
* @return 用户年龄, 账号登录且经过实名认证,则返回年龄,否则返回0
*/
@JvmStatic
fun getAge(): Int {
return accountInfo?.age ?: 0
}
/**
* 判断当前登录用户是否经过了实名认证
*/
@JvmStatic
fun isRealNameVerified(): Boolean {
return accountInfo?.isRealNameVerified == true
}
移除账号:
/**
* 退出登录, 会触发账号移除通知
*/
@JvmStatic
fun removeAccount()
登录信息model说明
data class AccountInfo(
/**
* 账号的openId, 快看会为每一个登录账号或游客账号+AppId分配一个openId, 用于标识用户身份,游客账号绑定手机号后,
* 使用手机号登录, 会或得与对应游客账号相同的openId, 一次确保游客跟手机号具有相同的身份标识
*/
var openId: String = "",
/**
* 访问令牌, App服务端可以使用该token验证openId的合法性, token的有效期较短,应该在登录成功后立即校验,
* 否则token会过期
*/
var accessToken: String = "",
/**
* 用户昵称, 仅快看账号登录时有昵称
*/
var nickName: String = "",
/**
* 用户头像链接, 仅快看账号登录时有头像链接
*/
var avatarUrl: String = "",
/**
* 是否已经经过了实名认证
*/
var isRealNameVerified: Boolean = false,
internal var isWhiteListUser: Boolean = false,
/**
* 用户年龄, 只有经过了实名认证的账号可以获取年龄
*/
var age: Int = 0
)
注册账号变更监听器:
@JvmStatic
fun registerAccountChangedListener(listener: AccountChangedListener?)
@JvmStatic
fun unregisterAccountChangedListener(listener: AccountChangedListener?)
5.1.3 登录错误码说明
以下错误码应仅用于判断失败原因,请勿用作业务逻辑判断
错误码 | 描述 |
---|---|
-1 | 登录取消 |
-10 | SSO登录时,快看App未安装,一般不会出现 |
-11 | SSO登录授权失败 |
-12 | SSO登录, 快看App调起失败 |
-20 | 绑定手机号失败 |
-30 | 验证码获取失败 |
-31 | 绑定手机号时,获取验证码时,手机号已绑定 |
其他 | 快看服务器返回的具体错误码 |
5.2 实名认证
sdk提供了实名认证服务,但认证接口不对应用开放,而是集成到登录流程中,目前sdk提供的登录服务默认是包含实名认证的,也就是说只要账号登录成功,则一定是已经实名认证过了。App可以通过快看运营后台配置是否开启实名认证,默认是开启.
5.3 防沉迷
sdk提供防沉迷服务,限制包括:
- 游客账号累计时长限制
- 未成年人宵禁限制
- 连续游戏时长和单日累计时长时长限制 以上限制的时长均根据国家法规设置. sdk不提供防沉迷相关的接口,而是内部控制防沉迷的开启逻辑。通过快看渠道分发的App必须具有防沉迷功能,因此sdk默认开始防沉迷功能,如果App有自己的防沉迷功能,可以通过快看后台配置关闭防沉迷。
5.4 支付
sdk提供了支付能力,App可以通过快看服务器 + Android Sdk完成支付能力 sdk只提供了收银台的功能,实际的支付是由支付宝/微信/QQ/快看KKB等平台完成. 使用支付需要完成以下步骤:
- 游戏服务端创建订单数据,获取transactionData和secret, 可以参考服务端接入文档
- 调用KKAgent.startPay接口调起收银台,并传入支付回调
- 通过支付回调接收支付结果,在回调中不管成功还是失败,都应该通过服务端接口查询支付结果是否成功,避免掉单, 可参考服务端接入文档
5.4.1 接口描述
/**
* 调起支付收银台进行支付
* @param activity 调起页面的Activity, 用于调起支付页面,显示进度框等,支付回调是基于activity是否已销毁的,
* 如果支付过程中,activity销毁, 则收不到支付回调, sdk会确保在支付过程中用户无法通过返回等
* 操作销毁页面.
* @param openId 登录用户的openId
* @param transData 从应用服务器获取等支付数据信息,收到登录回调后,可使用该数据查询支付结果
* @param secret 从应用服务器获取的transData的签名信息
* @param callback 支付结果回调
*/
@JvmStatic
fun startPay(activity: Activity, openId: String, transData: String, secret: String, callback: PayCallback)
5.4.2 支付错误码
以下错误码应仅用于判断失败原因,请勿用作业务逻辑判断
错误码 | 说明 |
---|---|
-1 | 支付取消 |
3 | 支付失败, 未知错误 |
4 | 查询支付结果失败 |
5 | 选择的支付渠道不可用,如支付App未安装 |
6 | 超过支付限额 |
6. 常见问题
- 游客登陆成功后,当再次调用login接口(没调用logout),点击进入游戏,返回的access_token验证open_id合法性时,返回access_token过期,4.1.1_release_6以下会出现,请更新到最新SDK
- 登录提示网络错误,在init的时候,请isDebug设置为false,测试环境不允许外网访问
KKAgent.init(this, "xxx", false)
- 支付失败 没有安装支付宝、微信等,会回调支付失败,失败信息在支付失败errorMsg内
- 快看漫画登录授权和对应游戏不一致,请检查appid
- 登录失败,再次登录成功无回调,请等下到4.1.1_release_10或以上
7. changelog
4.2.1_release.0
(时间-2022.5.18)
- 1.新增支付时选择代金券
4.1.1_release.4
(时间-2021.3.30)
- 1.sdk重写
- 2.收缩对外暴露接口
- 3.优化支付流程
- 4.统计bug修复
4.1.1_release.5
(时间-2021.4.15)
- 1.修复防沉迷问题
- 2.修复数据统计问题
4.1.1_release.6
- 1.修复游客登陆未退出时,点击进入游戏返回的accessToken过期问题
4.1.1_release.7
- 修复第一次登录失败无回调,点击关闭按钮 回调错误问题
- 修复取消登录回调错误问题
4.1.1_release.10
- 修复登录失败后,界面没关闭时再次登录成功没有登录回调问题
- 修复支付code码问题
4.1.1_release.11
- 修复一些崩溃问题
4.1.1_release.12
- 修改logo
- 添加实名认证引导
4.1.1_release.13
- 修复防沉迷弹窗时机问题
- 修复登录获取相关内容错误
4.1.1_release.14
- 修复游客登陆弹窗问题
4.1.1_release.15
- 更新最新版防沉迷规则
4.1.1_release.16
- 更新用户协议选择
4.1.1_release.17
- 修改获取资源方式
- 修复QQ支付问题
4.1.1_release.18
- 添加版本信息
- 添加appId信息