EasyGame客户端对接文档
更新日志
- 2016-12-23
删除Google安装监听(已接入游戏删除AndroidManifest.xml以下配置)
<receiver
android:name="com.appsflyer.MultipleInstallBroadcastReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver
android:name="com.platform7725.gamesdk.InstallReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
<receiver
android:name="com.mobileapptracker.Tracker"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
修改Google支付可重新提交(已接入游戏替换新的p7725sdk.jar)
-
2016-11-14
删除无用第三方jar包(已接入请按照libs删掉多余jar并重新替换p7725SDK.jar)
-
2016-11-11
退出接口弃用
-
2016-11-9
更新登录界面资源图片
-
2016-9-15
FB登录改成 GRAPH_API_VERSION = "v2.7"
-
2016-8-25
修复google play的风险提示
以下参数需游戏客户端根据实际情况修改
res/values/p7725sdk_app_private_yijidq140515.xml
<string name="com_7725_app_name">这里填写游戏名字</string>
<string name="com_7725_game_main_activity">这里填写游戏程序入口的类名和包名</string>
<string name="com_7725_sdkProtocolToken">这里填写由我方提供的Token</string>
<string name="com_7725_sdkProtocolGame">这里填写由我方提供的游戏简称</string>
<string name="com_7725_facebookSdkApplicationId">这里填写游戏FaceBook的APPID</string>
AndroidManifest.xml
<meta-data
android:name="com_7725_payment_flag"
android:value="gash" /> gash为只显示第三方充值,google为调用支付根据0/1来是否显示第三方支付
1.配置开发环境
- 使用easygameSDK环境配置需要完成下面几个步骤:
1.把res中所有资源拷贝合并到你项目res目录中。
2.把assets中的内容拷贝合并你的项目assets目录中。
3.把libs中所有jar包拷贝到你的项目libs目录中。
2.配置AndroidManifest.xml
1.添加permission
<!-- easygame SDK PERMISSION START. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="com.library.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="com.library.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" />
<uses-permission android:name="com.library.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<permission
android:name="com.library.permission.ACCESS_DOWNLOAD_MANAGER"
android:description="@string/permdesc_downloadManager"
android:label="@string/permlab_downloadManager"
android:protectionLevel="normal" />
<permission
android:name="com.library.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED"
android:description="@string/permdesc_downloadManagerAdvanced"
android:label="@string/permlab_downloadManagerAdvanced"
android:protectionLevel="normal" />
<permission
android:name="com.library.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
android:description="@string/permdesc_downloadCompletedIntent"
android:label="@string/permlab_downloadCompletedIntent"
android:protectionLevel="normal" />
<!-- easygame SDK PERMISSION END. -->
2.添加application相关属性
<!-- easygame SDK ACTIVITY,SERVER,RECEIVER START -->
<!-- FloatMenu start -->
<activity
android:name="com.platform7725.gamesdk.floats.FloatMenuMainActivity"
android:theme="@style/p7725_full_screen" />
<activity
android:name="com.platform7725.gamesdk.floats.FloatDetailMainActivity"
android:theme="@style/p7725_full_screen" />
<!-- FloatMenu end -->
<activity
android:name="com.platform7725.gamesdk.CustomerServiceActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@style/p7725_full_screen" />
<activity
android:name="com.platform7725.gamesdk.DepositsActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@style/p7725_full_screen"
android:windowSoftInputMode="adjustResize" />
<activity
android:name="com.platform7725.gamesdk.LoginProActivity"
android:theme="@style/LoginPro" />
<activity
android:name="com.platform7725.gamesdk.LoginActivity"
android:theme="@style/Login" />
<activity
android:name="com.platform7725.gamesdk.UserListActivity"
android:theme="@style/UserList" />
<activity
android:name="com.platform7725.gamesdk.ExitActivity"
android:theme="@style/Login" />
<activity
android:name="com.platform7725.gamesdk.ShareByFacebookActivity"
android:theme="@style/UserList" />
<activity
android:name="com.platform7725.gamesdk.ShareByLINEActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@style/p7725_full_screen" />
<activity
android:name="com.platform7725.gamesdk.ClauseActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@style/p7725_full_screen" />
<receiver android:name="com.platform7725.gamesdk.receive.OtopGameReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.intent.action.BATTERY_CHANGED" />
</intent-filter>
</receiver>
<service android:name="com.kuadcpa.OpenUDID_service" >
<intent-filter>
<action android:name="org.openudid.GETUDID" />
</intent-filter>
</service>
<service android:name="com.platform7725.gamesdk.service.OtopGameService" >
<intent-filter>
<action android:name="com.platform7725.gamesdk.service.NOTICES_FILTER" />
</intent-filter>
</service>
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/com_7725_app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/com_7725_facebookSdkApplicationId" />
<meta-data
android:name="com_7725_payment_flag"
android:value="gash" />
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<!-- easygame SDK ACTIVITY、SERVER、RECEIVER END. -->
<!-- download Begin -->
<activity
android:name="com.library.providers.downloads.ui.DownloadListActivity"
android:launchMode="singleTask"
android:theme="@style/p7725_full_screen" />
<activity
android:name="com.p7725.downloadmanager.DownloadManagerActivity"
android:theme="@style/p7725_full_screen" />
<provider
android:name="com.library.providers.downloads.DownloadProvider"
android:authorities="com.platform7725.gamesdk"
android:exported="false" />
<service android:name="com.library.providers.downloads.DownloadService" />
<receiver
android:name="com.library.providers.downloads.DownloadReceiver"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<!-- download End -->
3.代码相关接口说明
1.调用登录界面
通过调用静态方法
LoginProActivity.login(requestCode, callback, context);
进行登录。登录成功后,帐户信息封装为USER添加到intent,通过接口回传。
requestCode:返回码,接入方定义,用于LoginActivity界面返回本游戏界面时触发onActivityResult的响应码。
Callback:ITopSDKEventsListener接口,登录成功后,数据将封装到intent,并通过这个接口回调。请接入方的activity实现该接口,编写登录成功后的代码。
Context:当前的context
示例
LoginProActivity.login(LOGIN_CODE, new ITopSDKEventsListener() {
@Override
public void onEventDispatch(int code, Intent data) {
Log.e("onEventDispatch--->", "code:" + code);
User user = (User) data.getSerializableExtra("user");
if (user != null) {
String nickName = user.getNickname();
Toasts.makeText(context, "账号登录成功:"+nickName);
}
}
}, context);
2.获取登录用户资料
在Activity中实现ITopSDKEventsListener接口,实现onEventDispatch方法获取用户资料(Class User, User结构)
User user = (User) getIntent().getSerializableExtra("user");
User类提供的函数
方法名 返回值数据类型 返回值含义
getUserID() String easygame用户惟一标识
getNickName() String easygame用户昵称
getSex() String easygame用户的性别,枚举值:男、女
getLoginTime() Integer easygame用户本次成功登录时间,UNIXTIME时间戳
getSign() String 给游戏服务器验签使用,验签方式
getGame() String 用户来源游戏别名,如:fengyuntx、7725
getOpenidChannel() String 用户来源渠道名,枚举值:Facebook, Google
getOpenUID() String OPENID用户标识,有约定的游戏才可以使用
setServer (serverID) Boolean 用户进入伺服器时调用,区分伺服器的游戏若无调用本函数将无法使用储值功能
setRole(roleid, rolename) Boolean 用户登入角色时调用,不管首次或下次登入都需要调用,有角色名的游戏若无调用本函数将无法使用储值功能
3.游戏服务端登录验证
游戏客户端发送以下参数到游戏服务端进行验证。如:
userid = User.getUserID()
openuid = User.getOpenUID()
nickname = User.getNickName()
sex = User.getSex()
logintime = User.getLoginTime()
Sign = User.getSign()
签名加密方式
Sign = md5( game_server_key + userid + openuid + nickname + sex + logintime );
注:集成过程中,发现不少厂商将上述参数作特殊字符过滤处理,导致签名校验失败,在此强调 md5 加密用的参数,绝不能过滤特殊字符。
4.设置服务器和角色信息
-
设置服务器信息
UserManager.setServer(context, serverid);
context 上下文
serverid 服务器ID
如果不需要设置服务器编号,请设默认值 UserManager.setServer (0)
注:游戏若无调用本函数将无法使用充值功能。
- 设置角色信息
UserManager.setRole(context, roleid, rolename);
context 上下文
roleid 游戏的玩家角色ID
rolename 游戏的玩家角色名
注:有角色名的游戏若无调用本函数将无法使用储值功能。
特殊情况:
如果游戏记录玩家的历史登录记录,并且提供快速选服选角色进入游戏的,则需同时调用
UserManager.setRole(context, roleid, rolename);
UserManager.setServer(context, serverid);
5.进入充值界面
调用方法
DepositsActivity.pay(context, info, extra);
- context :当前上下文
- info:是游戏自定义的字符串参数,可留空。
- extra:json格式参数,用于是否显示google play以外的储值方式。如:{“payment_flag”:"1"} 1是开启,0是关闭
示例
DepositsActivity.pay(context, "", "{\"payment_flag\":\"0\"}");
6.打开客服界面
CustomerServiceActivity.customer(context);
7.SDK悬浮按钮
FloatManager.init(Context activity, int init_y);
悬浮按钮初始化方法,请在登录后调用。
- context:上下文对象。
- init_y:悬浮按钮初始化位置(Y坐标位置),如果不需要则填入任意小于0的数。
FloatManager. onPause ();
请务必在Activity生命周期onPause方法调用。
FloatManager. onResume ();
请务必在Activity生命周期onResume方法调用。
FloatManager. onDestroy ();
请务必在Activity生命周期onDestroy方法调用。
8.SDK退出接口(已弃用,非必接)
ExitActivity.exit(context, exitCallback);
context 上下文
exitCallback IExitEventsListener接口实例。
备注:实现IExitEventsListener接口,重写onExitEventDispatch()方法,在方法添加原来的退出代码。
示例
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
ExitActivity.exit(MainActivity.this, new IExitEventsListener() {
@Override
public void onExitEventDispatch() {
//游戏执行退出
finish();
}
});
}
return super.onKeyDown(keyCode, event);
}