版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、闲聊SDK接入以下是游戏需求(Ctrl点击进入超链接):游戏场景图需求补充:游戏头像以及昵称按照最先点击登录的类型处理,即先点击哪种登录方式,就以该种登录方式显示。以下是闲聊给出的文档:闲聊安卓开发文档闲聊IOS开发文档闲聊server开发文档以下是闲聊给出的demo(在开发过程中闲聊有更换sdk,所以他们的demo仅做参考):安卓_demoIOS_demo由于闲聊功能的开发周期较长,而闲聊所给的文档为最早期文档,期间闲聊方对sdk有更新而文档未做更新,所以这些文档建议当作参考。以下是河南麻将项目接入文档(并未完全按照闲聊所给文档接入):一、安卓篇1.在Eclipse内导入sugramsdk.
2、jar。2. 在android项目内添加SGEntryActivity.java(位置为:henmjandroidsrccomhappyplayhnmjsgapi)3. 在android项目内添加MyHttpClient.java、SSLSocketFactoryEx.java、XianLiaoActivity.java三个文件(位置为:henmjandroidsrcorgcocos2dxjavascript)4. 在android项目内修改AppActivity.java1) .添加以下内容/xianliaoimport org.sugram.im.sdk.api.ISGAPI;import
3、 org.sugram.im.sdk.api.SGAPIFactory;import org.sugram.im.sdk.constants.SGConstants;import org.sugram.im.sdk.modelmsg.SGGameObject;import org.sugram.im.sdk.modelmsg.SGImageObject;import org.sugram.im.sdk.modelmsg.SGMediaMessage;import org.sugram.im.sdk.modelmsg.SGTextObject;import org.sugram.im.sdk.m
4、odelmsg.SendMessageToSG;2) .在AppActivity里添加public class AppActivity extends Cocos2dxActivity ./ xianliaopublic ISGAPI sgApi;public static String XL_AppID = "xxxxxxxxxx闲聊审核获得xxxxxxxxxx"public static String XL_AppSecret = "xxxxxxxx闲聊审核获得xxxxxxxxxx"public String xlInviteGameInfo = &
5、quot;".3) .在onCreate函数内添加public void onCreate(Bundle savedInstanceState) .xianLiaoInit();闲聊初始化/get intent data from XianLiaoActivity获取XianLiaoActivity传递过来的intentBundle bundle = getIntent().getExtras();if(bundle != null)String msg =bundle.getString("XL_InviteGameInfo");xlInviteGameInfo
6、 = msg;Log.i("getIntent","getIntent_XL_InviteGameInfo:"+msg);.try .this.writeFileData("xianliao.txt", "has xianliao"); catch (IOException e) .4) .添加函数RunJS_obj/param是 对象的public void RunJS_obj(String name, String param) Cocos2dxHelper.runOnGLThread(new Runnable
7、() String js; String para; Override public void run() / TODO Auto-generated method stubString command = "cc.eventManager.dispatchCustomEvent('" + js + "'," + para + ")"传递类型和”类型时结构不同 org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge.evalString(command); public Runnab
8、le setjs(String js, String pa) this.js = js; this.para = pa; return this; ).setjs(name, param);5).添加函数xianLiaoInitpublic void xianLiaoInit() / 通过 SGAPIFactory 工厂,获取 ISGAPI 实 sgApi = SGAPIFactory.createSGAPI(this, XL_AppID); sgApi.registerApp(XL_AppID);6) .修改微信登录函数wxLogin把 SendAuth.Req req = new Send
9、Auth.Req(); 改为 com.tencent.mm.sdk.modelmsg.SendAuth.Req req = new com.tencent.mm.sdk.modelmsg.SendAuth.Req();防止代码冲突7) .添加函数xianLiaoLoginpublic void xianLiaoLogin() if(isXLInstall()org.sugram.im.sdk.modelmsg.SendAuth.Req req = new org.sugram.im.sdk.modelmsg.SendAuth.Req();防止代码冲突req.state = "none
10、"sgApi.sendReq(req);8) .添加函数isXLInstall/判断闲聊是否安装public boolean isXLInstall()boolean haveXL = sgApi.isSGAppInstalled();if(haveXL)return true;elsedoWithoutXLApp();return false;9) .添加函数doWithoutXLApp/have no xl apppublic void doWithoutXLApp()Log.i("xianliao","doWithoutXLApp");I
11、ntent viewIntent = new Intent("ent.action.VIEW",Uri.parse("startActivity(viewIntent);10) .添加函数xlShareText闲聊分享文本public void xlShareText(String text) if(isXLInstall()/ 初始化一个 SGTextObject 对象,填写分享的文本内容SGTextObject textObject = new SGTextObject();textObject.text = text;/ 用 SGTex
12、tObject 对象初始化一个 SGMediaMessage 对象SGMediaMessage msg = new SGMediaMessage();msg.mediaObject = textObject;/ 构造一个 ReqSendMessageToSG.Req req = new SendMessageToSG.Req();req.transaction = SGConstants.T_TEXT;/ 分享文本req.mediaMessage = msg;req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到会话表/ 调用 api 接
13、口发送数据到闲聊sgApi.sendReq(req);11) .添加函数xlShareInviteGame闲聊邀请游戏public void xlShareInviteGame(String roomId, String roomToken,String title, String description) if(isXLInstall()Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);/ 初始化一个 SGGameObject 对象,设置所分享的游戏图片内容SGGameObject gam
14、eObject = new SGGameObject(bitmap);gameObject.roomId = roomId;gameObject.roomToken = roomToken;/ 用 SGGameObject 对象初始化一个 SGMediaMessage 对象SGMediaMessage msg = new SGMediaMessage();msg.mediaObject = gameObject;msg.title = title;msg.description = description;/ 构造一个 ReqSendMessageToSG.Req req = new Send
15、MessageToSG.Req();req.transaction = SGConstants.T_GAME;req.mediaMessage = msg;req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到会话表/ 调用 api 接口发送数据到闲聊sgApi.sendReq(req);12) .添加函数xlShareTexture闲聊分享图片 public void xlShareTexture(String path) if(isXLInstall() Bitmap bitmap = BitmapFactory.decodeFile
16、(path); / 初始化一个SGImageObject对象,设置所分享的图片内容 SGImageObject imageObject = new SGImageObject(Bitmap.createScaledBitmap(bitmap,1000,(int) (bitmap.getHeight() / (bitmap.getWidth() / 1000f),true); / 用SGImageObject对象初始化一个SGMediaMessage对象 SGMediaMessage msg = new SGMediaMessage(); msg.mediaObject = imageObjec
17、t; / 构造一个Req SendMessageToSG.Req req = new SendMessageToSG.Req(); req.transaction = SGConstants.T_IMAGE; req.mediaMessage = msg; req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到会话列表 / 调用api接口发送数据到Sugram sgApi.sendReq(req); 13) .添加函数GetXLInviteGameInfo获取闲聊发送过来的邀请信息public void GetXLInviteGameIn
18、fo()String rtn_msg = xlInviteGameInfo;if(rtn_msg != "")RunJS_obj("XL_InviteGameInfo",rtn_msg);xlInviteGameInfo = ""14) .添加函数StartXianLiaoLoginJs调用闲聊登录public static void StartXianLiaoLogin() if (ccActivity != null) ccActivity.xianLiaoLogin();15) .添加函数StartShareTextToXLJs
19、调用闲聊分享文本public static void StartShareTextToXL(String path) if (ccActivity != null) ccActivity.xlShareText(path);16) .添加函数StartShareInviteGameToXLJs调用闲聊分享游戏邀请public static void StartShareInviteGameToXL(String roomId,String roomToken, String title, String description) if (ccActivity != null) ccActivit
20、y.xlShareInviteGame(roomId, roomToken, title, description);17) .添加函数StartShareTextureToXLJs调用闲聊分享图片public static void StartShareTextureToXL(String path) if (ccActivity != null) ccActivity.xlShareTexture(path);18) .添加函数xlGetInviteGameInfoJs调用获取闲聊的邀请信息public static void xlGetInviteGameInfo()if (ccActi
21、vity != null) ccActivity.GetXLInviteGameInfo();19) .在AndroidManifest.xml中添加<!- xianliao -><activity android:name="org.cocos2dx.javascript.XianLiaoActivity" android:screenOrientation="sensorLandscape" android:configChanges="orientation" android:theme="andro
22、id:style/Theme.NoTitleBar.Fullscreen"><intent-filter><action android:name="ent.action.VIEW" /><category android:name="ent.category.DEFAULT"/><category android:name="ent.category.BROWSABLE"/><data androi
23、d:scheme="paraches"android:host="xianliao*闲聊审核获得的APPID*"/>内容为xianliao+从闲聊获取的APPID</intent-filter></activity><activity android:name="com.happyplay.hnmj.sgapi.SGEntryActivity改成自己项目的" android:exported="true"></activity>二、JS篇1. 在app.js中修
24、改函数jsclient.logout,在函数中添加以下内容jsclient.logout = function () if (jsclient.remoteCfg.httpLogin) sys.localStorage.removeItem("WX_USER_LOGIN");sys.localStorage.removeItem("XL_USER_LOGIN");sys.localStorage.removeItem("LoginType");sys.localStorage.removeItem("loginData&qu
25、ot;);sendEvent("logout");else jsclient.block();jsclient.gamenet.request("pkcon.handler.logout", ,function () sys.localStorage.removeItem("WX_USER_LOGIN");sys.localStorage.removeItem("XL_USER_LOGIN");sys.localStorage.removeItem("LoginType");sys.localS
26、torage.removeItem("loginData");sendEvent("logout");jsclient.unblock(););2. 在app.js中添加函数getWXunionid获取微信的unionid,用来和闲聊绑定jsclient.getWXunionid = function () var unionid = ""var WX_USER_LOGIN = sys.localStorage.getItem("WX_USER_LOGIN");if(WX_USER_LOGIN)WX_USER_LO
27、GIN = JSON.parse(WX_USER_LOGIN);unionid = WX_USER_LOGIN.unionid;return unionid;3. 在app.js中添加函数operateFirstLoginType查询 存储第一次登陆的登录方式(微信、闲聊)jsclient.operateFirstLoginType = function (type) if(!type)var loginType = sys.localStorage.getItem("LoginType");if(loginType)return loginType;else if(typ
28、e) sys.localStorage.setItem("LoginType", type);return type;elsereturn null;4. 在app.js中添加函数doInviteGameInfo收到游戏邀请信息后的操作jsclient.doInviteGameInfo = function (para) if(!para)return;/玩家还未登陆if (jsclient.loginui) jsclient.showMsgDelay(0.2,"请先登陆游戏后再次点击游戏约局信息!");/玩家已经登录-未在房间内else if (!js
29、client.data.sData) jsclient.joinGame(para.roomId, para.roomToken.gameType);/玩家已经登录-在房间内else if (jsclient.data.sData) var sData = jsclient.data.sData;var tData = sData.tData;var xl_type = para.roomToken.gameType;var xl_roomid = para.roomId;var pp_type = sData.gameid;var pp_roomid = tData.tableid;if(x
30、l_type!=pp_type | xl_roomid!=pp_roomid)jsclient.showMsgDelay(0.2, "您现在已经在游戏中,请先退出当前房间后再次点击游戏约局信息!");5. 在app.js中添加函数xlCheckAndShare检查是否进行了闲聊授权并进行分享jsclient.xlCheckAndShare = function () /检查是否进行过闲聊授权(此处为第二处可以关联微信、闲聊、皮皮账号的地方),如果没有就进行闲聊授权登录var XL_USER_LOGIN = sys.localStorage.getItem("XL_
31、USER_LOGIN");if(!XL_USER_LOGIN)if (jsclient.native)jsclient.native.xlLogin();return;/进行函数调用if(jsclient.xianLiaoPara)var para = jsclient.xianLiaoPara;if(para.type = XianLiaoType.text)/文本var text = para.text;jsclient.native.xlShareText(text);else if(para.type = XianLiaoType.image)/图片jsclient.nati
32、ve.xlShareImage();else /游戏邀请var roomId = para.roomId;var roomToken = para.roomToken;var title = para.title;var description = para.description;jsclient.native.xlInviteGame(roomId,roomToken,title,description);6. 在app.js中添加函数showMsgDelay延时显示showMsg界面,因为当游戏在后台时,调用界面会缺失纹理,暂时没有找到别的解决办法,只能用这种办法处理,哪位同志学如果有好
33、的方法请指教指教,多谢!jsclient.showMsgDelay = function (delay, msg, yesfunc, nofunc, style) if (jsclient.Scene) jsclient.Scene.scheduleOnce(function () jsclient.showMsg(msg, yesfunc, nofunc, style);,delay);7. 在app.js中的CallBack中的initSceneData消息中添加xlGetInviteGameInfo的函数调用使用闲聊拉起游戏后需要检测三次游戏邀请信息,此处为创建房间后的检测 initSc
34、eneData: 0, function (d) . if (d.tData.roundNum <= -2) . else .jsclient.native.xlGetInviteGameInfo();这里检测邀请信息 ,8. 在app.js中的JSScene的jsBind中的loginOK消息中添加xlGetInviteGameInfo的函数调用使用闲聊拉起游戏后需要检测三次游戏邀请信息,此处为登录成功后的检测loginOK: function (rtn) . if (rtn.vipTable > 0) . else . jsclient.native.xlGetInviteGa
35、meInfo(); ,9. 在app.js中的JSScene的jsBind中添加XL_InviteGameInfo消息收到邀请信息的处理XL_InviteGameInfo: function (para) jsclient.doInviteGameInfo(para);,10. 在app.js中的jsclient.native中添加xlLogin函数闲聊登录xlLogin: function () try if (cc.sys.OS_ANDROID = cc.sys.os) jsb.reflection.callStaticMethod("org.cocos2dx.javascrip
36、t.AppActivity", "StartXianLiaoLogin", "()V");else if (cc.sys.OS_IOS = cc.sys.os) jsb.reflection.callStaticMethod("AppController", "sendXLRequest"); catch (e) jsclient.native.HelloOC("xianLiaoLogin throw: " + JSON.stringify(e);,11. 在app.js中的jscli
37、ent.native中添加xlInviteGame函数闲聊游戏邀请xlInviteGame:function (roomId,roomToken,title,description) try if (cc.sys.OS_ANDROID = cc.sys.os) jsb.reflection.callStaticMethod("org.cocos2dx.javascript.AppActivity","StartShareInviteGameToXL","(Ljava/lang/String;Ljava/lang/String;Ljava/lan
38、g/String;Ljava/lang/String;)V",roomId, roomToken, title, description);else if (cc.sys.OS_IOS = cc.sys.os) jsb.reflection.callStaticMethod("AppController","xlShareInvite:AndID:AndTitle:AndText:",roomToken,roomId,title,description); catch (e) jsclient.native.HelloOC("XLIn
39、viteGame throw: " + JSON.stringify(e);,12. 在app.js中的jsclient.native中添加xlShareImage函数闲聊图片分享xlShareImage:function () try var writePath = jsb.fileUtils.getWritablePath();var textrueName = "wxcapture_screen.png"if (cc.sys.OS_ANDROID = cc.sys.os) jsb.reflection.callStaticMethod("org.c
40、ocos2dx.javascript.AppActivity","StartShareTextureToXL","(Ljava/lang/String;)V",writePath + textrueName);else if (cc.sys.OS_IOS = cc.sys.os) var writePath = jsb.fileUtils.getWritablePath();var textrueName = "wxcapture_screen.png"jsb.reflection.callStaticMethod(&quo
41、t;AppController","xlShareImage:",writePath + textrueName); catch (e) jsclient.native.HelloOC("XLShareImage throw: " + JSON.stringify(e);,13. 在app.js中的jsclient.native中添加xlShareText函数闲聊文本分享xlShareText:function (text) try if (cc.sys.OS_ANDROID = cc.sys.os) jsb.reflection.callSt
42、aticMethod("org.cocos2dx.javascript.AppActivity","StartShareTextToXL","(Ljava/lang/String;)V",text);else if (cc.sys.OS_IOS = cc.sys.os) jsb.reflection.callStaticMethod("AppController","xlShareText:AndText:","【四方河南麻将】",text); catch (e) jscli
43、ent.native.HelloOC("xlShareText throw: " + JSON.stringify(e);,14. 在app.js中的jsclient.native中添加xlGetInviteGameInfo函数闲聊查询游戏邀请信息xlGetInviteGameInfo:function () .这里请自己加上自己项目的控制信息,防止调用出错try if (cc.sys.OS_ANDROID = cc.sys.os) jsb.reflection.callStaticMethod("org.cocos2dx.javascript.AppActivi
44、ty", "xlGetInviteGameInfo", "()V");else if (cc.sys.OS_IOS = cc.sys.os) jsb.reflection.callStaticMethod("AppController", "xlGetInviteGameInfo"); catch (e) jsclient.native.HelloOC("xlGetInviteGameInfo throw: " + JSON.stringify(e);,15. 在Login.js中添加
45、变量xlLoginPara = ;16. 在Login.js中的f_login函数中添加:检测时候为使用闲聊登录并附加闲聊信息到登录信息if(xlLoginPara.useSugram)loginData.useSugram = xlLoginPara.useSugram;loginData.xl_unionid = xlLoginPara.xl_unionid;loginData.xl_nickname = xlLoginPara.xl_nickname;loginData.xl_headimgurl = xlLoginPara.xl_headimgurl;17. 在Login.js中修改函
46、数autoLogin jsclient.autoLogin = function () jsclient.block();var type = jsclient.operateFirstLoginType();获取首次登陆类型var beginLogin = false;判断是否在自动登录mylog("判断是否可以进行闲聊或者微信的自动登录 type:" + type);if (type = "wx") mylog("开始进行微信自动登录.");var WX_USER_LOGIN = sys.localStorage.getItem(
47、"WX_USER_LOGIN");if (WX_USER_LOGIN) mylog("微信自动登录.");WX_USER_LOGIN = JSON.parse(WX_USER_LOGIN);LoginAsWeChat(WX_USER_LOGIN);beginLogin = true;else if (type = "xl") mylog("开始进行闲聊自动登录.");var XL_USER_LOGIN = sys.localStorage.getItem("XL_USER_LOGIN");if
48、(XL_USER_LOGIN) mylog("闲聊自动登录.");XL_USER_LOGIN = JSON.parse(XL_USER_LOGIN);/mylog("XL_USER_LOGIN info:" + XL_USER_LOGIN);/闲聊登录信息初始化xlLoginPara.useSugram = true;xlLoginPara.xl_unionid = XL_USER_LOGIN.openId;xlLoginPara.xl_nickname = XL_USER_LOGIN.nickName;xlLoginPara.xl_headimgurl
49、 = XL_USER_LOGIN.smallAvatar;/闲聊登录f_login(xlLoginPara);beginLogin = true;else mylog("开始进行loginData自动登录.");loginData = sys.localStorage.getItem("loginData");if (loginData) mylog("loginData自动登录.");loginData = JSON.parse(loginData);f_login(loginData.mail, loginData.code);b
50、eginLogin = true;/在不能自动登录的时候去判断并执行是否是从游戏邀请链接启动的游戏if (!beginLogin) jsclient.native.xlGetInviteGameInfo();使用闲聊拉起游戏后需要检测三次游戏邀请信息,此处为不能自动登录时的检测;18. 在Login.js中LoginLayer的wechatLogin事件中添加: 在login.js里自己定义一个 var iswxLogin = false; _click: function (btn, etype) if (agreeNode.isSelected() /点击微信登录就清除闲聊的登录信息(保证点什么登录游戏内就是该登录方式的信息)xlLoginPara = ;点击微信登录就清除闲聊的登录信息(保证点什么登录游戏内就是该登录方式的信息) if (jsclient.native)iswxLogin = true; jsclient.native.wxLogin(); else
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拓扑材料缺陷调控与性能-洞察分析
- 原油储运安全探讨-洞察分析
- 新型地震监测技术-洞察分析
- 信立泰材料在电化学储能领域的研究进展-洞察分析
- 水产养殖循环经济研究-洞察分析
- 脱硫脱硝一体化技术-洞察分析
- 污染物输运模拟-洞察分析
- 油气资源绿色开发-洞察分析
- 勤俭节约活动感悟总结范文(10篇)
- 数字银行理财策略-洞察分析
- GB/T 45089-20240~3岁婴幼儿居家照护服务规范
- 政府还款协议书(2篇)
- 院内获得性肺炎护理
- 领导干部个人违纪检讨书范文
- web课程设计考勤系统源代码
- 《企业文化与变革》课件
- 肺部感染性疾病支气管肺泡灌洗病原体检测中国专家共识(2017年)
- 小学劳动教育实施情况调查问卷(含教师卷和学生卷)及调查结论
- 【部编】人教版六年级上册道德与法治全册知识点总结梳理
- MOOC 研究生学术规范与学术诚信-南京大学 中国大学慕课答案
- 24春国家开放大学《离散数学》大作业参考答案
评论
0/150
提交评论