小米游戏付费验证SDK使用说明文档

一、接入小米游戏付费验证SDK的流程

二、接入小米游戏付费验证SDK所需材料

  1. 小米游戏付费验证SDK,包含付费验证SDK(LicensingLibrary_版本号.jar),使用说明文档(Introducation.doc)。从小米开发者站获取。(注意:因开发者网站相关修改尚未上线,暂时从如下地址获取http://pan.baidu.com/s/1bnpobdd:)

  2. appId和付费验证RSA公钥,从小米开发者站获取。(注意:因开发者网站相关修改尚未上线,目前只能从开发者站上获取到appId。 付费验证RSA公钥暂时只能通过我们后台人员手工生成。请把你游戏包名发到zhaoyongpeng@xiaomi.com,邮件主题写成“求RSA公钥”+游戏包名,我们工作人员会及时把游戏的RSA公钥通过邮件回复给你。)

  3. 小米服务安全插件4.2.7以及以上版本。(小米手机里已内置了小米服务安全插件,你可以通过系统“设置”->“其他应用管理”,找到小米服务安全插件,点击查看小米服务安全插件版本号,如果该版本号低于4.2.7,你需要首先卸载系统的小米服务安全插件。步骤包括

  4. 手机连接电脑,执行adb root.
  5. 执行 adb remount
  6. 执行adb shell,然后切换到system/priv-app/目录 )
  7. 执行 MiGameCenterSDKService.apk
  8. adb reboot 重启手机
  9. 从 http://pan.baidu.com/s/1bnpobdd 下载最新版本小米服务安全插件MiGameCenterSDKService.apk,安装到手机上。(此时需要手动在“安全中心”->“应用权限管理”->“小米服务安全插件”界面打开“小米账号”和“显示悬浮窗”权限)

  10. 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。
    }
};
  1. 在游戏主界面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);
  1. Q:按照1所说,跳到游戏中心界面,游戏详情界面展示错误,什么原因?

A:那是因为本游戏没有正式上线的原因。一旦游戏上线,游戏详情界面就会正确展示。