閑聊sdk接入說明_第1頁
閑聊sdk接入說明_第2頁
閑聊sdk接入說明_第3頁
閑聊sdk接入說明_第4頁
閑聊sdk接入說明_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、閑聊SDK接入以下是游戲需求(Ctrl點擊進(jìn)入超鏈接):游戲場景圖需求補(bǔ)充:游戲頭像以及昵稱按照最先點擊登錄的類型處理,即先點擊哪種登錄方式,就以該種登錄方式顯示。以下是閑聊給出的文檔:閑聊安卓開發(fā)文檔閑聊IOS開發(fā)文檔閑聊server開發(fā)文檔以下是閑聊給出的demo(在開發(fā)過程中閑聊有更換sdk,所以他們的demo僅做參考):安卓_demoIOS_demo由于閑聊功能的開發(fā)周期較長,而閑聊所給的文檔為最早期文檔,期間閑聊方對sdk有更新而文檔未做更新,所以這些文檔建議當(dāng)作參考。以下是河南麻將項目接入文檔(并未完全按照閑聊所給文檔接入):一、安卓篇1.在Eclipse內(nèi)導(dǎo)入sugramsdk.

2、jar。2. 在android項目內(nèi)添加SGEntryActivity.java(位置為:henmjandroidsrccomhappyplayhnmjsgapi)3. 在android項目內(nèi)添加MyHttpClient.java、SSLSocketFactoryEx.java、XianLiaoActivity.java三個文件(位置為:henmjandroidsrcorgcocos2dxjavascript)4. 在android項目內(nèi)修改AppActivity.java1) .添加以下內(nèi)容/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函數(shù)內(nèi)添加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) .添加函數(shù)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 + ")"傳遞類型和”類型時結(jié)構(gòu)不同 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).添加函數(shù)xianLiaoInitpublic void xianLiaoInit() / 通過 SGAPIFactory 工廠,獲取 ISGAPI 實 sgApi = SGAPIFactory.createSGAPI(this, XL_AppID); sgApi.registerApp(XL_AppID);6) .修改微信登錄函數(shù)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) .添加函數(shù)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) .添加函數(shù)isXLInstall/判斷閑聊是否安裝public boolean isXLInstall()boolean haveXL = sgApi.isSGAppInstalled();if(haveXL)return true;elsedoWithoutXLApp();return false;9) .添加函數(shù)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) .添加函數(shù)xlShareText閑聊分享文本public void xlShareText(String text) if(isXLInstall()/ 初始化一個 SGTextObject 對象,填寫分享的文本內(nèi)容SGTextObject textObject = new SGTextObject();textObject.text = text;/ 用 SGTex

12、tObject 對象初始化一個 SGMediaMessage 對象SGMediaMessage msg = new SGMediaMessage();msg.mediaObject = textObject;/ 構(gòu)造一個 ReqSendMessageToSG.Req req = new SendMessageToSG.Req();req.transaction = SGConstants.T_TEXT;/ 分享文本req.mediaMessage = msg;req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到會話表/ 調(diào)用 api 接

13、口發(fā)送數(shù)據(jù)到閑聊sgApi.sendReq(req);11) .添加函數(shù)xlShareInviteGame閑聊邀請游戲public void xlShareInviteGame(String roomId, String roomToken,String title, String description) if(isXLInstall()Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);/ 初始化一個 SGGameObject 對象,設(shè)置所分享的游戲圖片內(nèi)容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;/ 構(gòu)造一個 ReqSendMessageToSG.Req req = new Send

15、MessageToSG.Req();req.transaction = SGConstants.T_GAME;req.mediaMessage = msg;req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到會話表/ 調(diào)用 api 接口發(fā)送數(shù)據(jù)到閑聊sgApi.sendReq(req);12) .添加函數(shù)xlShareTexture閑聊分享圖片 public void xlShareTexture(String path) if(isXLInstall() Bitmap bitmap = BitmapFactory.decodeFile

16、(path); / 初始化一個SGImageObject對象,設(shè)置所分享的圖片內(nèi)容 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; / 構(gòu)造一個Req SendMessageToSG.Req req = new SendMessageToSG.Req(); req.transaction = SGConstants.T_IMAGE; req.mediaMessage = msg; req.scene = SendMessageToSG.Req.SGSceneSession; / 代表分享到會話列表 / 調(diào)用api接口發(fā)送數(shù)據(jù)到Sugram sgApi.sendReq(req); 13) .添加函數(shù)GetXLInviteGameInfo獲取閑聊發(fā)送過來的邀請信息public void GetXLInviteGameIn

18、fo()String rtn_msg = xlInviteGameInfo;if(rtn_msg != "")RunJS_obj("XL_InviteGameInfo",rtn_msg);xlInviteGameInfo = ""14) .添加函數(shù)StartXianLiaoLoginJs調(diào)用閑聊登錄public static void StartXianLiaoLogin() if (ccActivity != null) ccActivity.xianLiaoLogin();15) .添加函數(shù)StartShareTextToXLJs

19、調(diào)用閑聊分享文本public static void StartShareTextToXL(String path) if (ccActivity != null) ccActivity.xlShareText(path);16) .添加函數(shù)StartShareInviteGameToXLJs調(diào)用閑聊分享游戲邀請public static void StartShareInviteGameToXL(String roomId,String roomToken, String title, String description) if (ccActivity != null) ccActivit

20、y.xlShareInviteGame(roomId, roomToken, title, description);17) .添加函數(shù)StartShareTextureToXLJs調(diào)用閑聊分享圖片public static void StartShareTextureToXL(String path) if (ccActivity != null) ccActivity.xlShareTexture(path);18) .添加函數(shù)xlGetInviteGameInfoJs調(diào)用獲取閑聊的邀請信息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*"/>內(nèi)容為xianliao+從閑聊獲取的APPID</intent-filter></activity><activity android:name="com.happyplay.hnmj.sgapi.SGEntryActivity改成自己項目的" android:exported="true"></activity>二、JS篇1. 在app.js中修

24、改函數(shù)jsclient.logout,在函數(shù)中添加以下內(nèi)容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中添加函數(shù)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中添加函數(shù)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中添加函數(shù)doInviteGameInfo收到游戲邀請信息后的操作jsclient.doInviteGameInfo = function (para) if(!para)return;/玩家還未登陸if (jsclient.loginui) jsclient.showMsgDelay(0.2,"請先登陸游戲后再次點擊游戲約局信息!");/玩家已經(jīng)登錄-未在房間內(nèi)else if (!js

29、client.data.sData) jsclient.joinGame(para.roomId, para.roomToken.gameType);/玩家已經(jīng)登錄-在房間內(nèi)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, "您現(xiàn)在已經(jīng)在游戲中,請先退出當(dāng)前房間后再次點擊游戲約局信息!");5. 在app.js中添加函數(shù)xlCheckAndShare檢查是否進(jìn)行了閑聊授權(quán)并進(jìn)行分享jsclient.xlCheckAndShare = function () /檢查是否進(jìn)行過閑聊授權(quán)(此處為第二處可以關(guān)聯(lián)微信、閑聊、皮皮賬號的地方),如果沒有就進(jìn)行閑聊授權(quán)登錄var XL_USER_LOGIN = sys.localStorage.getItem("XL_

31、USER_LOGIN");if(!XL_USER_LOGIN)if (jsclient.native)jsclient.native.xlLogin();return;/進(jìn)行函數(shù)調(diào)用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中添加函數(shù)showMsgDelay延時顯示showMsg界面,因為當(dāng)游戲在后臺時,調(diào)用界面會缺失紋理,暫時沒有找到別的解決辦法,只能用這種辦法處理,哪位同志學(xué)如果有好

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的函數(shù)調(diào)用使用閑聊拉起游戲后需要檢測三次游戲邀請信息,此處為創(chuàng)建房間后的檢測 initSc

34、eneData: 0, function (d) . if (d.tData.roundNum <= -2) . else .jsclient.native.xlGetInviteGameInfo();這里檢測邀請信息 ,8. 在app.js中的JSScene的jsBind中的loginOK消息中添加xlGetInviteGameInfo的函數(shù)調(diào)用使用閑聊拉起游戲后需要檢測三次游戲邀請信息,此處為登錄成功后的檢測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函數(shù)閑聊登錄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函數(shù)閑聊游戲邀請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函數(shù)閑聊圖片分享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函數(shù)閑聊文本分享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函數(shù)閑聊查詢游戲邀請信息xlGetInviteGameInfo:function () .這里請自己加上自己項目的控制信息,防止調(diào)用出錯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函數(shù)中添加:檢測時候為使用閑聊登錄并附加閑聊信息到登錄信息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、數(shù)autoLogin jsclient.autoLogin = function () jsclient.block();var type = jsclient.operateFirstLoginType();獲取首次登陸類型var beginLogin = false;判斷是否在自動登錄mylog("判斷是否可以進(jìn)行閑聊或者微信的自動登錄 type:" + type);if (type = "wx") mylog("開始進(jìn)行微信自動登錄.");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("開始進(jìn)行閑聊自動登錄.");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("開始進(jìn)行l(wèi)oginData自動登錄.");loginData = sys.localStorage.getItem("loginData");if (loginData) mylog("loginData自動登錄.");loginData = JSON.parse(loginData);f_login(loginData.mail, loginData.code);b

50、eginLogin = true;/在不能自動登錄的時候去判斷并執(zhí)行是否是從游戲邀請鏈接啟動的游戲if (!beginLogin) jsclient.native.xlGetInviteGameInfo();使用閑聊拉起游戲后需要檢測三次游戲邀請信息,此處為不能自動登錄時的檢測;18. 在Login.js中LoginLayer的wechatLogin事件中添加: 在login.js里自己定義一個 var iswxLogin = false; _click: function (btn, etype) if (agreeNode.isSelected() /點擊微信登錄就清除閑聊的登錄信息(保證點什么登錄游戲內(nèi)就是該登錄方式的信息)xlLoginPara = ;點擊微信登錄就清除閑聊的登錄信息(保證點什么登錄游戲內(nèi)就是該登錄方式的信息) if (jsclient.native)iswxLogin = true; jsclient.native.wxLogin(); else

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論