liangliangSDK.ts 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. var wx=window["wx"];
  2. var currentSDK = "1.0.3";
  3. var gameID = 10005;
  4. var gameName="TaiKongFeiChe";
  5. export class LiangLiangSDK
  6. {
  7. static userID;
  8. static token;
  9. static _ok:boolean = false;
  10. static _initOK:boolean = false;
  11. static _loginOK:boolean = false;
  12. static _listOK:boolean = false;
  13. static _config;
  14. static _isScene:boolean = false;
  15. private static _checkOK()
  16. {
  17. if(LiangLiangSDK._initOK &&LiangLiangSDK._loginOK && LiangLiangSDK._listOK )
  18. {
  19. LiangLiangSDK._ok = true;
  20. }
  21. }
  22. /**
  23. * 初始化
  24. * @param successcallback
  25. * @param failcallback
  26. */
  27. static Init(successcallback,failcallback)
  28. {
  29. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/api/getGameInfo",{"gameId": gameID,"version":currentSDK},"POST",(result)=>
  30. {
  31. console.log(result);
  32. LiangLiangSDK._config = result.data;
  33. LiangLiangSDK._initOK = true;
  34. LiangLiangSDK._checkOK();
  35. this.Login(()=>{
  36. console.log("登录成功");
  37. this.LoadIconDataList(()=>{
  38. console.log("加载互导数据成功:"+this._data);
  39. successcallback();
  40. },()=>{
  41. console.log("加载互导数据失败");
  42. successcallback();
  43. })
  44. },()=>{
  45. console.log("登录失败");
  46. failcallback();
  47. })
  48. },(fail)=>
  49. {
  50. console.log("fail : " + fail)
  51. failcallback();
  52. })
  53. }
  54. static Login(successcallback,failcallback)
  55. {
  56. let self = this;
  57. if(wx)
  58. {
  59. wx.login({
  60. success (res)
  61. {
  62. if (res.code)
  63. {
  64. let option=wx.getLaunchOptionsSync();
  65. if(option==null){
  66. throw new Error("调用 wx.getLaunchOptionsSync 获取数据为空!");
  67. }
  68. let channelId = 0;
  69. if(option.scene && (option.scene == '1037' || option.scene == '1038')){
  70. LiangLiangSDK._isScene = true;
  71. }
  72. if (option.query && JSON.stringify(option.query) != "{}") {
  73. if (option.query.channel_id) {
  74. channelId = Number(option.query.channel_id);
  75. }
  76. }
  77. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/user/login",{"gameId": gameID,"code":res.code,"channelId" : channelId},"POST",(result)=>
  78. {
  79. console.log(result);
  80. self.userID = result.data.userId;
  81. self.token = result.data.token;
  82. LiangLiangSDK._loginOK = true;
  83. LiangLiangSDK._checkOK();
  84. successcallback();
  85. },(fail)=>
  86. {
  87. console.log("fail : " + fail)
  88. failcallback();
  89. })
  90. }
  91. else
  92. {
  93. console.log('登录失败!' + res.errMsg)
  94. failcallback();
  95. }
  96. }
  97. })
  98. }
  99. else
  100. {
  101. LiangLiangSDK._loginOK = true;
  102. LiangLiangSDK._checkOK();
  103. }
  104. }
  105. static _data:any[];
  106. private static _errorIndex:number=0;
  107. private static _errorTotal:number=3;
  108. static LoadIconDataList(successcallback,failcallback)
  109. {
  110. this._LoadIconDataList(()=>{
  111. successcallback();
  112. },()=>{
  113. if(this._errorIndex<this._errorTotal){
  114. this.LoadIconDataList(successcallback,failcallback);
  115. this._errorIndex++;
  116. }else{
  117. failcallback();
  118. }
  119. });
  120. }
  121. private static _LoadIconDataList(successcallback,failcallback):void{
  122. if(wx!=null)
  123. {
  124. var url = "https://www.maoxingame.com/"+gameName+"/xl_channel_app_config.json";
  125. cc.assetManager.loadRemote(url,(err,data:cc.JsonAsset)=>{
  126. if(err)
  127. {
  128. console.error(err)
  129. failcallback();
  130. }
  131. else
  132. {
  133. LiangLiangSDK._listOK = true;
  134. LiangLiangSDK._checkOK();
  135. LiangLiangSDK._data = data.json;
  136. successcallback();
  137. }
  138. console.log(data);
  139. })
  140. }
  141. else
  142. {
  143. LiangLiangSDK._listOK = true;
  144. LiangLiangSDK._checkOK();
  145. LiangLiangSDK._data = [{
  146. app_id:"",
  147. skipIcon:true,
  148. name:"一个测试名字"
  149. }];
  150. }
  151. }
  152. static HttpRequest(url, data, method, success, fail)
  153. {
  154. /* if(CC_WECHATGAME1)
  155. {
  156. wx.request({
  157. url: url, //仅为示例,并非真实的接口地址
  158. data: data,
  159. header: {
  160. 'content-type': 'application/json' // 默认值
  161. },
  162. success (res) {
  163. console.log(res.data)
  164. },
  165. fail(res)
  166. {
  167. console.log("HttpRequest Fail" + res);
  168. }
  169. })
  170. }
  171. else*/
  172. {
  173. var xhr = new XMLHttpRequest();
  174. xhr.onreadystatechange = function () {
  175. if (xhr.readyState == 4) {
  176. var response = xhr.responseText;
  177. if (xhr.status >= 200 && xhr.status < 400) {
  178. var result = {};
  179. if(response)
  180. {
  181. try {
  182. result = JSON.parse(response)
  183. } catch (e) {
  184. console.error('json parse error ', response)
  185. if (fail)
  186. fail(e);
  187. }
  188. }
  189. if (success)
  190. success(result);
  191. } else {
  192. console.error('error ', response)
  193. if (fail)
  194. fail(response);
  195. }
  196. } else {
  197. }
  198. };
  199. xhr.timeout = 3000;
  200. xhr.ontimeout = function (event) {
  201. console.error('error ', event)
  202. if (fail)
  203. fail(event);
  204. }
  205. xhr.open(method, url, true);
  206. if (method == "POST") {
  207. xhr.open('POST', url);
  208. xhr.setRequestHeader("Content-Type", "application/json");
  209. xhr.send(JSON.stringify(data));
  210. } else {
  211. xhr.send();
  212. }
  213. }
  214. }
  215. static object2Query(obj)
  216. {
  217. var args = []
  218. for (var k in obj)
  219. args.push(k + "=" + obj[k])
  220. return args.join("&"); // 返回对象
  221. }
  222. static CpaReport(data)
  223. {
  224. var body:any = {};
  225. body.gameId = gameID;
  226. body.token = LiangLiangSDK.token;
  227. body.cpaId = data.game_id
  228. console.log("开始上报跳转数据" + JSON.stringify(body));
  229. LiangLiangSDK.HttpRequest("https://www.wiseplanet.com.cn/user/cpaClick",body, "POST",()=>{}, ()=>{});
  230. }
  231. /**
  232. * 洗牌
  233. * @param arr
  234. */
  235. static shuffle(arr: any[]): any[] {
  236. // for (var i = arr.length - 1; i >= 0; i--) {
  237. // var randomIndex = Math.floor(Math.random() * (i - 1));
  238. // var itemAtIndex = arr[randomIndex];
  239. // arr[randomIndex] = arr[i];
  240. // arr[i] = itemAtIndex;
  241. // }
  242. return arr
  243. }
  244. static GetList():any[]
  245. {
  246. if(!LiangLiangSDK._ok) //如果服务器请求错误 则直接返回一个空的列表
  247. {
  248. return [];
  249. }
  250. let ret = [];
  251. ret = LiangLiangSDK.shuffle(LiangLiangSDK._data);
  252. return ret
  253. }
  254. static CanJumpOut():boolean
  255. {
  256. if(!LiangLiangSDK._config)
  257. {
  258. return false;
  259. }
  260. if(currentSDK != LiangLiangSDK._config.version)
  261. {
  262. return false;
  263. }
  264. {
  265. if(!LiangLiangSDK._ok)
  266. {
  267. console.log("不允许跳转1")
  268. return false;
  269. }
  270. if(!LiangLiangSDK._data || LiangLiangSDK._data.length == 0)
  271. {
  272. console.log("不允许跳转2")
  273. return false;
  274. }
  275. console.log("允许跳转")
  276. return true
  277. }
  278. }
  279. static CanWuChu():boolean
  280. {
  281. if(!LiangLiangSDK._config)
  282. {
  283. return false;
  284. }
  285. if(LiangLiangSDK._isScene){
  286. return true;
  287. }
  288. if(currentSDK != LiangLiangSDK._config.version)
  289. {
  290. return false;
  291. }
  292. if(!LiangLiangSDK._config.mistakeSwitch)
  293. {
  294. return false;
  295. }
  296. //上海forbidSwitch 为true
  297. if(LiangLiangSDK._config.forbidSwitch)
  298. {
  299. return false;
  300. }
  301. return true;
  302. }
  303. }