337SDK Android版本以library工程的形式提供,使用时必须引入核心Lib工程。
用户模块涉及到Facebook登录部分,所以还需要引入Facebook SDK。下载地址:https://developers.facebook.com/docs/android/
需要声明的权限如下:
<!-- 基本权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- 涉及GoogelPlay内购功能 -->
<uses-permission android:name="com.android.vending.BILLING" />
<!-- 涉及手机短信付款功能 -->
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
需要添加的内容如下:
<activity
android:name="com.web337.android.widget.PopuView"
android:theme="@style/Theme.Translucent"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
<activity
android:name="com.web337.android.pay.PayCoreMobileActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/mobile337transparent">
</activity>
<activity
android:name="com.web337.android.pay.PayShowPackagesActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/mobile337transparent">
</activity>
<activity
android:name="com.web337.android.ticket.TicketCoreActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize" >
</activity>
<activity
android:name="com.fortumo.android.FortumoActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<activity
android:name="com.web337.android.pay.fortumo.FortumoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
<activity
android:name="com.web337.android.widget.Web"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTask" >
</activity>
<activity
android:name="com.web337.android.user.UserPage"
android:theme="@style/mobile337user" >
</activity>
<activity
android:name="com.web337.android.user.GoogleAcountLogin"
android:configChanges="orientation|keyboardHidden|screenSize" >
</activity>
<activity
android:name="com.facebook.LoginActivity"
android:theme="@android:style/Theme.Translucent" />
<receiver
android:name="com.web337.android.Tracker"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver android:name="com.fortumo.android.BillingSMSReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" >
</action>
</intent-filter>
</receiver>
<service android:name="com.fortumo.android.FortumoService" />
<service android:name="com.fortumo.android.StatusUpdateService" />
<uses-feature android:name="android.hardware.telephony" android:required="false"></uses-feature>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="\ 220782057940018" />
screenSize添加时如果出现错误,请更改targetSdkVersion为13以上即可
com.facebook.sdk.ApplicationId如果不使用默认的220782057940018,可以替换为游戏自己的ID,需要事先将应用secret配置在337的后台
如果需要添加的INSTALL_REFERRER的receiver不止一个,可以单独设立一个统一的入口,然后转发给com.web337.android.Tracker
具体配置见第三方广告SDK条目
在主Activity的onCreate中调用:
FuncCore.onCreate(this);
在主Activity的代码中,重载以下方法:
@Override
protected void onDestroy() {
FuncCore.onDestroy(this);
super.onDestroy();
}
@Override
protected void onStart() {
FuncCore.onStart(this);
super.onStart();
}
@Override
protected void onStop() {
FuncCore.onStop(this);
super.onStop();
}
@Override
public void onBackPressed() {
if (FuncCore.onBackPressed(this)) {
return;
} else {
super.onBackPressed();
}
}
实例化一个回调对象:
final UserLoginCallback callback = new UserLoginCallback(){
@Override
public void onCancel() {
alert("取消登录");
}
@Override
public void onLoginSuccess(User user, boolean isregister) {
//成功后可以显示一个欢迎提示,玩家可以在此切换账号
UserCore.showWelcome(YourActivity.this);//【可选功能】
if(isregister){
alert("注册成功"+user.getUid());
}else{
alert("登录成功"+user.getUid());
}
}
};
调用checkLogin方法:
com.web337.android.user.UserCore.checkLogin(Context c, UserLoginCallback callback)
可以在进入游戏主页面后直接调用,Context传递当前的activity即可,UserLoginCallback传递上一步创建的callback对象
调用该方法后只需要关心callback中的两个回调方法即可,若当前无登录用户,则会弹出登录或注册页面,用户登录或注册完成后,会回调。若已经有登录的用户,则直接回调
在获取到角色的信息和所在服之后,设置一下相应的信息:
com.web337.android.id.Zone.getInstance().clear(); com.web337.android.id.Zone.getInstance().setRole_id("roleid00001"); com.web337.android.id.Zone.getInstance().setRole_name("wangxiaoming"); com.web337.android.id.Zone.getInstance().setServer_id("1"); com.web337.android.id.Zone.getInstance().setServer_name("ServerName");
示例代码如下:
//支付Id请联系运营申请
String appid = "xxx@android_tw_1";
PayCore.init(context, appid, new PayCallback(){
@Override
public void onCancel() {
alert("取消支付");
}
@Override
public void onComplete(Order o) {
/*
* 支付完成表明玩家付款成功,但并不表明支付中心回调游戏服务端是成功的
*/
alert("支付完成。"+o.getTransid());
}
@Override
public void onFailed(Msg msg) {
alert("支付失败。"+msg.getMsg());
}
@Override
public void onInitFinish(Msg msg) {
if(msg.isSuccess()){
alert("初始化完成。");
}else{
//初始化出错后,不能调用发起支付的方法
alert("初始化出错。"+msg.getMsg());
}
}});
初始化涉及网络操作,不建议将此步骤放在用户点击商城的时候
需要如下三个步骤:
//展示套餐,此处套餐均在支付平台后台配置
PayCore.show();
show()方法支持传递一个自定义字符串,该值最终会作为custom_data参数回调给游戏服务器
至此337 SDK接入完成,更多的使用方法可以参考各个模块的文档