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类提供,包括如下功能:

  1. 调起登录页进行登录
  2. 判断是否已经登录
  3. 获取登录账号信息
  4. 监听账号变化
  5. 获取用户年龄: 只有经过实名认证的账号才会返回年龄,否则返回0
  6. 判断是否经过实名认证
  7. 移除账号

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提供防沉迷服务,限制包括:

  1. 游客账号累计时长限制
  2. 未成年人宵禁限制
  3. 连续游戏时长和单日累计时长时长限制 以上限制的时长均根据国家法规设置. sdk不提供防沉迷相关的接口,而是内部控制防沉迷的开启逻辑。通过快看渠道分发的App必须具有防沉迷功能,因此sdk默认开始防沉迷功能,如果App有自己的防沉迷功能,可以通过快看后台配置关闭防沉迷。

5.4 支付

sdk提供了支付能力,App可以通过快看服务器 + Android Sdk完成支付能力 sdk只提供了收银台的功能,实际的支付是由支付宝/微信/QQ/快看KKB等平台完成. 使用支付需要完成以下步骤:

  1. 游戏服务端创建订单数据,获取transactionData和secret, 可以参考服务端接入文档
  2. 调用KKAgent.startPay接口调起收银台,并传入支付回调
  3. 通过支付回调接收支付结果,在回调中不管成功还是失败,都应该通过服务端接口查询支付结果是否成功,避免掉单, 可参考服务端接入文档

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. 常见问题

  1. 游客登陆成功后,当再次调用login接口(没调用logout),点击进入游戏,返回的access_token验证open_id合法性时,返回access_token过期,4.1.1_release_6以下会出现,请更新到最新SDK
  2. 登录提示网络错误,在init的时候,请isDebug设置为false,测试环境不允许外网访问
KKAgent.init(this, "xxx", false) 
  1. 支付失败 没有安装支付宝、微信等,会回调支付失败,失败信息在支付失败errorMsg内
  2. 快看漫画登录授权和对应游戏不一致,请检查appid
  3. 登录失败,再次登录成功无回调,请等下到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信息