Table Of Contents

Previous topic

337SDK集成文档

Next topic

在应用中引入lib工程

This Page

引入依赖工程

337SDK Android版本以library工程的形式提供,使用时必须引入核心Lib工程。

_images/includelib.jpg

用户模块涉及到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、MetaData和其他内容

需要添加的内容如下:

<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

具体配置见第三方广告SDK条目

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");

加入行云统计

用户登录完成后,设置完角色信息即可调用:

com.web337.android.sdks.XA.send(Context c);

Context传递当前Activity即可

打开浮动窗口

进入游戏主面板后,打开337的浮动窗口:

FuncCore.showFloatWindow(activity);

支付初始化

示例代码如下:

//支付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接入完成,更多的使用方法可以参考各个模块的文档