liangliangSDK.ts 9.4 KB

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