小米游戏付费验证SDK使用说明文档
一、接入小米游戏付费验证SDK的流程
-
小米游戏版权验证SDK是由小米公司推出的,面向游戏开发者的一个用于验证用户是否具有使用某款游戏权限的验证SDK。该SDK目前仅限在小米应用商店和小米游戏中心上线的付费游戏接入。
-
小米游戏版权验证SDK运行时, 需要用到小米服务安全插件为其提供服务,小米服务安全插件已内置到所有小米手机上,游戏玩家不必考虑小米服务安全插件的安装、运行细节。
-
接入小米游戏付费验证SDK的流程如下图所示:
二、接入小米游戏付费验证SDK所需材料
-
小米游戏付费验证SDK,包含付费验证SDK(LicensingLibrary_版本号.jar),使用说明文档(Introducation.doc)。从小米开发者站获取。(注意:因开发者网站相关修改尚未上线,暂时从如下地址获取http://pan.baidu.com/s/1bnpobdd:)
-
appId和付费验证RSA公钥,从小米开发者站获取。(注意:因开发者网站相关修改尚未上线,目前只能从开发者站上获取到appId。 付费验证RSA公钥暂时只能通过我们后台人员手工生成。请把你游戏包名发到zhaoyongpeng@xiaomi.com,邮件主题写成“求RSA公钥”+游戏包名,我们工作人员会及时把游戏的RSA公钥通过邮件回复给你。)
-
小米服务安全插件4.2.7以及以上版本。(小米手机里已内置了小米服务安全插件,你可以通过系统“设置”->“其他应用管理”,找到小米服务安全插件,点击查看小米服务安全插件版本号,如果该版本号低于4.2.7,你需要首先卸载系统的小米服务安全插件。步骤包括
- 手机连接电脑,执行adb root.
- 执行 adb remount
- 执行adb shell,然后切换到system/priv-app/目录 )
- 执行 MiGameCenterSDKService.apk
- adb reboot 重启手机
-
从 http://pan.baidu.com/s/1bnpobdd 下载最新版本小米服务安全插件MiGameCenterSDKService.apk,安装到手机上。(此时需要手动在“安全中心”->“应用权限管理”->“小米服务安全插件”界面打开“小米账号”和“显示悬浮窗”权限)
-
buygamedemo150422.apk。从http://pan.baidu.com/s/1bnpobdd 上下载。该demo可以模拟在游戏中心内购买指定的游戏(根据输入的包名),以方便开发者在接入SDK时,调试验证购买成功的情形。
三、小米游戏付费验证SDK具体接入办法 1. 把获取到的小米游戏付费验证SDK,拷贝到游戏工程的libs目录下。 2. 在游戏主界面Activity里定义实现LicenseCheckerCallback接口的成员变量。
private LicenseCheckerCallback mCallback = new LicenseCheckerCallback(){
@Override
public void allow(int reason) {
//此回调函数被调用,表明用户有权使用此付费应用,此时,应允许用户正常使用。注意,此时是在非UI线程,不可以直接操作UI。建议通过Handler切换到UI线程操作UI。
}
@Override
public void dontAllow(int reason) {
//此回调函数被调用,表明该用户没有使用本款游戏的权限。可能是因为用户没有购买过此款游戏,也可能是因为其他不同的原因。具体原因需要根据reason来区分。注意,此时是在非UI线程,不可以直接操作UI。建议通过Handler切换到UI线程操作UI。对这种验证失败的情形,建议跳转到游戏中心该游戏界面,游戏中心的游戏界面会提供用户购买的入口。跳转到游戏中心该游戏详情界面具体办法是:Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("migamecenter://details?pkgname={填入你游戏包名}"));
startActivity(intent);
}
@Override
public void applicationError(int errorCode) {
//此回调函数被调用,表明因一些特殊原因(譬如网络无法使用),导致无法判断出该用户是否有权使用此款游戏。注意,此时是在非UI线程,不可以直接操作UI。建议通过Handler切换到UI线程操作UI。
}
};
-
在游戏主界面Activity onCreate里调用构造LicenseChecker对象,并调用该对象的checkAccess()方法。
LicenseChecker checker = new LicenseChecker(this,APPID,RSA_PUBLIC_KEY,mCallback);//第一个参数为Context参数,第二个参数是appid,第三个参数是RSA公钥,第四个参数是LicenseCheckerCallback 对象 checker.checkAccess(); 4. 在游戏主界面Activity onDestroy(),调用LicenseChecker对象的onDestroy()方法。
四、小米游戏付费验证SDK 常见错误码及其原因 1. applicationError被调用且errorCode=1002,此时未安全小米服务安全插件或者小米服务安全插件版本号低于4.2.7
五、小米游戏付费验证SDK FAQ: 1. Q:用户验证失败后,怎么办?
A:跳转到游戏中心的本游戏详情界面,游戏中心会提供用户购买游戏的接口.
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("migamecenter://details?pkgname={填入你游戏包名}")); startActivity(intent);
- Q:按照1所说,跳到游戏中心界面,游戏详情界面展示错误,什么原因?
A:那是因为本游戏没有正式上线的原因。一旦游戏上线,游戏详情界面就会正确展示。