Mobage Android NativeSDK Quick Guide
本文环境设置和示例代码基于:
- Eclipse Juno Service Release 2
- Mobage Android SDK 1.3.6
- Android 4.2.2
- Java 1.6.0_65
1 前期准备
要使用 Mobage Android SDK 进行开发需要进行必要的前期准备。
1.1 注册成为DeNA开发者
访问 DeNA 开发者论坛 https://developer.mobage.cn/v/ 。根据提示注册新的用户,完成后通过登陆开发者网站。
1.2 注册应用程序
输入相应信息后点击确认,在确认页面点击提交。跳转到应用程序详细。
1.3 获得客户端用key、secret
选中左侧应用基本信息中的Android Tab,其中的SDK Consumer Key、Secret将会在后面开发中用于接入SDK,在未半公开的情况下,只能使用Sandbox环境。
![]() | 基本信息Tab中的key和secret是服务器端使用,不要和图中客户端SDK用的搞混了。 |
2 Eclipse相关设定
本章说明Eclipse中的设定方法。
2.1 导入lib工程
选择文件->导入,导入lib工程Android/MobageNativeSDKLib。
2.2 建立依赖关系
- 在开发的工程点击右键选择属性,在属性界面选择“Android”
- 在Android面板下侧点击“Add”,选择刚才导入的lib工程,点击“OK”
2.3 AndroidManifest.xml中的权限、Activity、Service、Receiver设定
由于每个SDK版本中的该文件的设定有可能不太一样,请参考SDK文档(目录Android/docs/pdf)中章节“权限设定”和“Activity的设定”。
2.4 关于res/xml下的文件
在引用了lib项目Android/MobageNativeSDKLib之后,会看到这个lib项目下的res/xml下有三个xml文件:mobage_init.xml, mobage_alliance.xml, mobage_market.xml。 这三个文件保持默认就可以了,在开发者打包上传到开发者平台之后,平台会自动的解包,然后根据不同的环境(SANDBOX、PRODUCTION),不同的渠道,往这三个文件分别写入不同的值,再重新打包成相应版本。
当然,开发者如果调试的时候需要切换环境的话,也可以自己修改mobage_init.xml,来切换SANDBOX和PRODUCTION。
3 Mobage平台初始化
要完成Mobage平台初始化,请在onCreate中依次完成如下步骤。
3.1 注册资源
3.2 设定应用程序的consumer key 及sonsumer secret
替换下面代码中的${APP_ID},${SANDBOX_KEY}, ${SANDBOX_SECRET}, ${PRODUCTION_KEY}, ${PRODUCTION_SECRET} (在步骤1.3中获取)
3.3 实现并注册PlatformListener
PlatformListener 是用于监听梦宝谷平台如登录,账号切换等事件的监听器。开发者至少应该在
主 Activity 中实现该监听器并使用 Mobage.addPlatformListener(PlatformListenerplatformListener)方法将其注册至 SDK 中。其中, 开发者仅且必须在主 Activity 的 PlatformListener 的 onLoginComplete(登录完成)的事件中调用 Mobage.registerTick()方法。onSwitchAccount 事件发生在用户切换平台账号完成时,此时开发 者需要重新启动游戏或关闭游戏以便使切换的新账户生效。onDashboardClose 事件发生在用户退 出社区页面时。具体代码如下:
3.4 登陆及检查登陆状态
在进入游戏时需要使用 Mobage.checkLoginStatus()方法检查登录状态
3.5 添加Mobage的生命周期
除了以上的初始化过程,开发者还需要在应用程序的所有 Activity 中在不同的生命周期的相应方 法中调用相应的 SDK 方法,具体如下:
![]() | 注意 由于Mobage.onStop做了一些清除操作,所以如果是多个activity的话,只能在最后退出游戏的那个activity的onDestroy方法中调用,保证只调用了一次。 |
3.1到3.5章节的完整示例代码如下:
至此,该项目已经可以编译运行,用户可以登陆进Mobage平台了。
4 Mobage功能接入
4.1 交易
Mobage平台有统一的货币—M币,用户在社区用支付宝,财付通等方式将人民币充值成M币。对于充值M币这个流程,SDK用webview实现,整个平台是统一的,不需要开发商再做额外的接入。而开发商需要实现的是用M币来购买游戏内道具的流程。
mobage提供3种流程,详细流程可以参考(https://docs.mobage.com/display/CNSPAPP/How+to+use+bank+and+eco+native), 如果只是简体平台和繁体平台,并没有海外平台的计划,则推荐使用第一种流程接入,这里介绍一下第一种流程的大致步骤:
(1)先到开发者网站注册道具信息,
(2)在游戏控制台 - 2其他功能追加 - Bank回调设置中设置该应用的回调地址,用于接收交易完成之后Mobage发出的Http请求,以通知游戏服务器交易完成。(该步骤可选,如未登记回调地址则不会调用。)
(2)按create->open->close的顺序在createTransaction的onSuccess回调函数里面调用openTransaction, 在openTransaction的onSuccess回调函数里面调用closeTransaction,注意交易必须成功close交易才算完成。虽然在openTransaction的时候已经扣费,但是如果没有close,10分钟之后交易会被自动cancel并将扣除的M币返回给用户账号。
(3)在close之后Mobage平台会向登记的回调地址发送http请求,开发者需要对该请求进行处理。详情参考https://docs.mobage.com/display/CNSPAPP/Callback+function+description
示例代码:
4.2 其他API
关于其他API,可参考随SDK附带的示例代码及文档。
5 导出apk包
5.1 修改包名
由于Mobage有统一的命名规范,请在打包前按规则重命名,
简体平台格式:cn.mobage.g${APP_ID}, 用自己游戏的appid替换${APP_ID}。例如,cn.mobage.g13000057
繁体平台格式: tw.mobage.g${APP_ID}, 用自己游戏的appid替换${APP_ID}。例如,tw.mobage.g23000013。
重命名的方法:
- 点击项目的右键,Android Tools -> Rename Application Package
- 输入新的包名,并点击“OK”
- eclipse 会弹出一个对话框,显示一些将要被更新的文件,保持默认,你只需要点击“Finish"就重命名好了。
5.2 代码混淆 (可选)
如果开发者需要对代码进行混淆,针对mobage的代码进行混淆的方法:
- 在项目里添加一个文件,比如proguard.txt。
在该文件中添加如下内容,如果有其他的第三方的代码需要混淆,可以参考混淆的规则添加相应代码:
在project.properties添加一项proguard.config,指向刚才定义的proguard.txt文件,比如:
5.3 导出未签名的apk
点击项目右键,Anroid Tools -> Export unsigned Application Package
5.4 签名
如果您还没有keystore文件,先用keytool生成:
格式:keytool -genkey -v -keystore ${YOUR_KEY_STORE_FILE} -alias ${YOUR_KEY_STORE_ALIAS} -keyalg ${ALGORITHM} -validity ${VALID_DAYS}
例子:keytool -genkey -v -keystore test.keystore -alias test.keystore -keyalg RSA -validity 1000
替换命令中的参数,输入密码等信息即可生成keystore文件:
${YOUR_KEY_STORE_FILE}: 生成的keystore文件
${YOUR_KEY_STORE_ALIAS}: 生成的keystore别名
${ALGORITHM}: 加密和数字签名的算法
${VALID_DAYS}: 有效天数
然后使用如下命令对刚导出的包进行签名:
jarsigner -verbose -keystore ${YOUR_KEY_STORE_FILE} -signedjar ${APK_FILENAME_AFTER_SIGN} ${APK_FILENAME_BEFORE_SIGN} ${YOUR_KEY_STORE_ALIAS}
请替换命令中的参数,回车输入密码后即可签名成功。
${APK_FILENAME_BEFORE_SIGN}:签名前的名字,
${APK_FILENAME_AFTER_SIGN}:签名后的名字,
${YOUR_KEY_STORE_FILE}:你的keystore文件
${YOUR_KEY_STORE_ALIAS}: 你的keystore文件别名
5.5 zipalign优化(可选)
由于在上传到开发者平台之后,平台会解包再重新打包,重新打包的时候也会进行zipalign优化,所以这不是一个必做步骤。zipalign优化的命令:
zipalign -v 4 source.apk destination.apk (source.apk是优化前的名字,destination.apk是优化后的名字)