Advertisement
Guest User

Untitled

a guest
Apr 24th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.61 KB | None | 0 0
  1. //SDK统一管理脚本
  2. cc.Class({
  3. extends: cc.Component,
  4.  
  5. properties: {
  6. nodeEventHandler: cc.Node,
  7. cancel: false,
  8. },
  9.  
  10. dispatchE: function (_ev, _data) {
  11. if (this.nodeEventHandler) {
  12. this.nodeEventHandler.emit(_ev, _data);
  13. }
  14. },
  15.  
  16. init: function () {
  17. this.ANDROID_API = "com/dx/dsx/and/AppActivity";
  18. this.IOS_API = "AppController";
  19. return this;
  20. },
  21.  
  22. /**
  23. * 微信登录
  24. */
  25. wxLogin: function () {
  26. cc.log("wxLogin==========start login===================");
  27. //调起微信
  28. if (cc.sys.os === cc.sys.OS_ANDROID) {
  29. jsb.reflection.callStaticMethod(this.ANDROID_API, "wxLogin", "()V");
  30. } else if (cc.sys.os === cc.sys.OS_IOS) {
  31. var ret = jsb.reflection.callStaticMethod(this.IOS_API, "wxLogin");
  32. }
  33. },
  34.  
  35. /**
  36. * 微信回调函数
  37. * errCode 回调状态,0表示成功,其余表示失败
  38. * errStr 回调说明,成功则为success,失败则为错误信息
  39. * code 授权成功获取的临时票据,用于获取token
  40. */
  41. onWxLoginResp: function (errCode, errStr, code) {
  42. cc.log("onWxLoginResp", "onWxLoginResp==============success errCode = " + errCode + " errStr = " + errStr +
  43. " code = " + code);
  44. // if (errCode === 0) {
  45. // cc.log("errCode =========== 0==============");
  46. // //保存获取到的code
  47. // cc.sixi.utils.save("wxCode", code);
  48. // //发送登录协议
  49. // // cc.sixi.net.send("1003", {code: code});
  50. // if (!cc.sixi.net.send("1003", { code: code })) {
  51. // this.node.on("onOpen", function (ev) {
  52. // cc.sixi.net.send("1003", { code: code });
  53. // });
  54. // cc.sixi.net.reopen();
  55. // }
  56. // }
  57.  
  58. this.dispatchE("wxLoginResp", { errCode:errCode, errStr:errStr, code:code });
  59. // cc.sixi.global.errCode = errCode;
  60. // cc.sixi.global.errStr = errStr;
  61. // cc.sixi.alert.show("登录中,请稍候!" + cc.sys.os);
  62. },
  63.  
  64. /**
  65. * 微信分享文字
  66. * shareText 分享的文字
  67. * shareType 分享到目标场景,0表示发送到聊天界面,1表示发送到朋友圈,2表示添加到微信收藏
  68. */
  69. wxShareText: function (shareText, shareType) {
  70. cc.log("wxShareText=============shareText = " + shareText + " shareType = " + shareType);
  71. if (cc.sys.os === cc.sys.OS_ANDROID) {
  72. jsb.reflection.callStaticMethod(this.ANDROID_API, "wxShareText",
  73. "(Ljava/lang/String;Ljava/lang/String;)V", shareText, shareType);
  74. } else if (cc.sys.os === cc.sys.OS_IOS) {
  75. jsb.reflection.callStaticMethod(this.IOS_API, "wxShareText:shareType:",
  76. shareText, shareType);
  77. }
  78. },
  79.  
  80. /**
  81. * 微信分享链接
  82. * shareUrl 链接
  83. * shareTitle 标题
  84. * shareDesc 描述
  85. * shareImgPath 图片路径 传“null”串,则默认用icon.png
  86. * shareType 分享到目标场景,0表示发送到聊天界面,1表示发送到朋友圈,2表示添加到微信收藏
  87. */
  88. wxShareUrl: function (shareUrl, shareTitle, shareDesc, shareImgPath, shareType) {
  89. cc.log("wxShareUrl==================shareUrl = " + shareUrl + " shareTitle = " + shareTitle + " shareDesc = " + shareDesc + " shareImgPath = " + shareImgPath + " shareType = " + shareType);
  90. if (cc.sys.os === cc.sys.OS_ANDROID) {
  91. jsb.reflection.callStaticMethod(this.ANDROID_API, "wxShareUrl",
  92. "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
  93. shareUrl, shareTitle, shareDesc, shareImgPath, shareType);
  94. } else if (cc.sys.os === cc.sys.OS_IOS) {
  95. jsb.reflection.callStaticMethod(this.IOS_API, "wxShareUrl:shareTitle:shareDesc:shareImgPath:shareType:",
  96. shareUrl, shareTitle, shareDesc, shareImgPath, shareType);
  97. }
  98. },
  99.  
  100. /**
  101. * 微信分享图片
  102. * shareImgPaht 图片路径
  103. * shareTitle 标题
  104. * shareDesc 描述
  105. * shareType 分享到目标场景,0表示发送到聊天界面,1表示发送到朋友圈,2表示添加到微信收藏
  106. */
  107. wxShareImg: function (shareImgPath, shareTitle, shareDesc, shareType) {
  108. cc.log("wxShareImg==================shareImgPath = " + shareImgPath + " shareTitle = " + shareTitle + " shareDesc = " + shareDesc + " shareType = " + shareType);
  109. if (cc.sys.os === cc.sys.OS_ANDROID) {
  110. jsb.reflection.callStaticMethod(this.ANDROID_API, "wxShareImg",
  111. "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
  112. shareImgPath, shareTitle, shareDesc, shareType);
  113. } else if (cc.sys.os === cc.sys.OS_IOS) {
  114. jsb.reflection.callStaticMethod(this.IOS_API, "wxShareImg:shareTitle:shareDesc:shareType:",
  115. shareImgPath, shareTitle, shareDesc, shareType);
  116. }
  117. },
  118.  
  119. /**
  120. * 微信支付流程:
  121. * 1.游戏发送9003协议,获取可购买的商品列表,展示给玩家
  122. * 2.发送9004协议,获取微信预订单信息
  123. * 3.调用wxPay接口,调起微信支付页面
  124. * 4.监听9005协议,充值结果通知
  125. *
  126. * 微信支付
  127. * partnerId 商户id
  128. * prepayId 预订单号
  129. * packageValue 固定参数 Sign=WXPay
  130. * apiKey 安全密匙
  131. * */
  132. wxPay: function (partnerId, prepayId, packageValue, apiKey) {
  133. cc.log("WXPay===============partnerId = " + partnerId + " prepayId = " + prepayId + " packageValue = " + packageValue + " apiKey = " + apiKey);
  134. if (cc.sys.os === cc.sys.OS_ANDROID) {
  135. jsb.reflection.callStaticMethod(this.ANDROID_API, "wxPay",
  136. "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
  137. partnerId, prepayId, packageValue, apiKey);
  138. } else if (cc.sys.os === cc.sys.OS_IOS) {
  139.  
  140. }
  141. },
  142.  
  143. /**
  144. * 呀呀登录
  145. * evn SDK环境:0:测试环境 1:正式环境 2:海外环境
  146. * mode SDK模式:0:自由模式 1:抢麦模式 2:队长模式
  147. * rate 码率,默认为7,可以自定义,比如1、2、3
  148. * mThirdUid 第三方平台账号id,即账号id
  149. * mThirdNickname 第三方平台账号昵称,即账号名称
  150. * roomId 房间号
  151. */
  152. yayaLogin: function (evn, mode, rate, mThirdUid, mThirdNickname, roomId) {
  153. cc.log("yayaLogin ===============evn = " + evn + " mode = " + mode + " rate = " + rate + " mThirdUid = " + mThirdUid + " mThirdNickname = " + mThirdNickname + " roomId = " + roomId);
  154. if (cc.sys.os === cc.sys.OS_ANDROID) {
  155. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaLogin",
  156. "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V",
  157. evn, mode, rate, mThirdUid, mThirdNickname, roomId);
  158. } else if (cc.sys.os === cc.sys.OS_IOS) {
  159. jsb.reflection.callStaticMethod(this.IOS_API, "yayaLogin:mThirdUid:mThirdNickname:roomId:",
  160. evn, mThirdUid, mThirdNickname, roomId);
  161. cc.log("yayaLogin===============");
  162. }
  163. },
  164.  
  165. /**
  166. * 呀呀登录回调
  167. * resultCode 0表示成功,其他表示失败
  168. * msg 回调说明,成功则为success,失败则为错误信息
  169. * yunvaId 呀呀id
  170. * mode SDK模式:0:自由模式 1:抢麦模式 2:队长模式
  171. */
  172. onYaLoginResp: function (resultCode, msg, yunvaId, mode) {
  173. cc.log("onYaLoginResp==============resultCode = " + resultCode + " msg = " + msg + " yunvaId = " + yunvaId + " mode = " + mode);
  174. cc.sixi.utils.save("yunvaId", yunvaId);
  175. },
  176.  
  177. /**
  178. * 呀呀登出
  179. */
  180. yayaLogout: function () {
  181. cc.log("yayaLogout================================");
  182. if (cc.sys.os === cc.sys.OS_ANDROID) {
  183. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaLogout", "()V");
  184. } else if (cc.sys.os === cc.sys.OS_IOS) {
  185. jsb.reflection.callStaticMethod(this.IOS_API, "yayaLogout");
  186. }
  187. },
  188.  
  189. /**
  190. * 呀呀登出回调
  191. * resultCode 0表示成功,其他表示失败
  192. * msg 回调说明,成功则为success,失败则为错误信息
  193. */
  194. onYaLogoutResp: function (resultCode, msg) {
  195. cc.log("onYaLogoutResp======================resultCode = " + resultCode + " msg = " + msg);
  196.  
  197. },
  198.  
  199. /**
  200. * 呀呀上麦
  201. */
  202. yayaMicUp: function () {
  203. cc.log("yayaMicUp================================");
  204. if (cc.sys.os === cc.sys.OS_ANDROID) {
  205. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaMicUp", "()V");
  206. } else if (cc.sys.os === cc.sys.OS_IOS) {
  207. jsb.reflection.callStaticMethod(this.IOS_API, "yayaMicUp");
  208. }
  209. },
  210.  
  211. /**
  212. * 呀呀下麦
  213. */
  214. yayaMicDown: function () {
  215. cc.log("yayaMicDown================================");
  216. if (cc.sys.os === cc.sys.OS_ANDROID) {
  217. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaMicDown", "()V");
  218. } else if (cc.sys.os === cc.sys.OS_IOS) {
  219. jsb.reflection.callStaticMethod(this.IOS_API, "yayaMicDown");
  220. }
  221. },
  222.  
  223. /**
  224. * 呀呀上下麦回调
  225. * resultCode 0表示成功,其他表示失败
  226. * msg 回调说明,成功则为success,失败则为错误信息
  227. * actionType 0表示下麦,1表示上麦
  228. */
  229. onYaMicResp: function (resultCode, msg, actionType) {
  230. cc.log("onYaMicResp=============resultCode = " + resultCode + " msg = " + msg + " actionType = " + actionType);
  231. },
  232.  
  233. /**
  234. * 注意上麦时,不允许录音,如果录音,播放语音会报错
  235. * 呀呀开始录音 停止录音后,上传+发送
  236. * 按钮按下状态执行
  237. * 停止录音后,在回调函数中上传和发送
  238. * yunvaId 呀呀账号id
  239. */
  240. yayaStartVoiceRecord: function (yunvaId) {
  241. cc.log("yayaStartVoiceRecord===============yunvaId = " + yunvaId);
  242. if (cc.sys.os === cc.sys.OS_ANDROID) {
  243. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaStartVoiceRecord", "(Ljava/lang/String;)V", yunvaId);
  244. } else if (cc.sys.os === cc.sys.OS_IOS) {
  245. jsb.reflection.callStaticMethod(this.IOS_API, "yayaStartVoiceRecord");
  246. }
  247. },
  248.  
  249. /**
  250. * 呀呀录音、上传、发送回调
  251. * resultCode 0表示成功,其他表示失败
  252. * msg 回调说明,成功则为success,失败则为错误信息
  253. * FileUrl 网络语音文件地址(上传成功后获得)
  254. * fileMd5 文件的MD5值,在语音上传的时候获取,用于校验文件是否下载完整
  255. * voiceLength 语音时间长度,单位:毫秒
  256. */
  257. onYaStartVoiceResp: function (resultCode, msg, FileUrl, fileMd5, voiceLength) {
  258. cc.log("onYaStartVoiceResp=========resultCode = " + resultCode + " msg = " + msg + " FileUrl = " + FileUrl + " fileMd5 = " + fileMd5 + " voiceLength = " + voiceLength);
  259. // cc.sixi.utils.save(fileMd5, FileUrl);
  260. // cc.sixi.utils.save("fileMd5", fileMd5);
  261. if (!this.cancel && resultCode == 0) {
  262. this.dispatchE("yyVoiceRecord", { url: FileUrl, fileMd5: fileMd5, time: voiceLength });
  263. }
  264. this.cancel = false;
  265. },
  266.  
  267. /**
  268. * 呀呀停止录音
  269. * 按钮抬起状态执行
  270. */
  271. yayaStopVoiceRecord: function () {
  272. cc.log("yayaStopVoiceRecord===================================");
  273. if (cc.sys.os === cc.sys.OS_ANDROID) {
  274. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaStopVoiceRecord", "()V");
  275. } else if (cc.sys.os === cc.sys.OS_IOS) {
  276. jsb.reflection.callStaticMethod(this.IOS_API, "yayaStopVoiceRecord");
  277. }
  278. },
  279.  
  280. /**
  281. * 呀呀播放语音
  282. * FileUrl 网络语音文件地址(上传成功后获得)
  283. * fileMd5 文件的MD5值,在语音上传的时候获取,用于校验文件是否下载完整
  284. */
  285. yayaStartPlayVoiceByUrl: function (FileUrl, fileMd5) {
  286. cc.log("yayaStartPlayVoiceByUrl==============FileUrl = " + FileUrl + " fileMd5 = " + fileMd5);
  287. if (cc.sys.os === cc.sys.OS_ANDROID) {
  288. jsb.reflection.callStaticMethod(this.ANDROID_API, "yayaStartPlayVoiceByUrl", "(Ljava/lang/String;Ljava/lang/String;)V",
  289. FileUrl, fileMd5);
  290. } else if (cc.sys.os === cc.sys.OS_IOS) {
  291. jsb.reflection.callStaticMethod(this.IOS_API, "yayaStartPlayVoiceByUrl:", FileUrl);
  292. }
  293. },
  294.  
  295. /**
  296. * 呀呀播放语音回调
  297. * resultCode 0表示成功,其他表示失败
  298. * msg 回调说明,成功则为success,失败则为错误信息
  299. */
  300. onYaStartPlayVoiceResp: function (resultCode, msg) {
  301. cc.log("onYaStartPlayVoiceResp=========resultCode = " + resultCode + " msg = " + msg);
  302. },
  303.  
  304. //************************************app appstore支付开始***************************************************************** */
  305. /**
  306. * 实现苹果AppStore道具购买协议。苹果AppStore提供2个接口:查询商品本地化信息,购买商品。
  307. * 游戏应从认证
  308. * 服务器获取可购买的商品列表,并在用户第一次进入充值界面时,查询所有商品的本地化信息(价格,币种),并
  309. * 给用户展示。
  310. * 购买请求发出后,后续操作由StoreKit完成。当购买成功时,成功的订单信息会被放到一个本地文件中保存。游戏
  311. * 应循环检查是否由尚未传到服务器的订单信息,如果有立刻传到服务器,成功传输后从本地删除。
  312.  
  313. */
  314. /**
  315. * appstore支付
  316. * productID 商品ID
  317. */
  318. appStoreCharge: function (productID) {
  319. cc.log("appStoreCharge======productID = " + productID);
  320. if (cc.sys.os === cc.sys.OS_IOS) {
  321. jsb.reflection.callStaticMethod(this.IOS_API, "appStoreCharge:", productID);
  322. }
  323. },
  324.  
  325. /**
  326. * appStore支付回调
  327. * resultCode 0表示成功,其他表示失败
  328. * msg 回调说明,成功则为success,失败则为错误信息
  329. * productId 商品id
  330. * auditData 订单数据(base64)
  331. */
  332. onAppStoreChareResp: function (resultCode, msg, productId, auditData) {
  333. if (resultCode === 0) {
  334. cc.log("onAppStoreChareResp charge success. productId = " + productId);
  335. // this.dispatchE("appStoreCharge", { productId: productId, auditData: auditData });
  336. } else {
  337. cc.log("onAppStoreChareResp charge fail. resultCode = " + resultCode + " msg = " + msg);
  338. }
  339. this.dispatchE("appStoreCharge", { resultCode: resultCode, productId: productId, auditData: auditData, msg: msg });
  340.  
  341. },
  342.  
  343. /**
  344. * 获取最近成功的订单数据
  345. */
  346. getLatestReceipt: function () {
  347. var latestReceipt= null;
  348. if (cc.sys.os === cc.sys.OS_IOS) {
  349. latestReceipt = jsb.reflection.callStaticMethod(this.IOS_API, "getLatestReceipt");
  350. cc.log("appStore getLatestReceipt = " + latestReceipt);
  351.  
  352. }
  353. return latestReceipt;
  354. },
  355.  
  356. /**
  357. * 从本地订单存储文件中删除一个订单数据。
  358. * data 订单数据
  359. */
  360. deleteReceipt: function (data) {
  361. if (cc.sys.os === cc.sys.OS_IOS) {
  362. jsb.reflection.callStaticMethod(this.IOS_API, "deleteReceipt:", data);
  363. cc.log("appStore deleteReceipt = " + data);
  364. }
  365. },
  366. /****************************************app store 支付结束***************************************************************************** */
  367.  
  368. //***************************************系统工具方法开始***************************************************************** */
  369.  
  370. /**
  371. * 获取设备号
  372. * return (String)
  373. */
  374. getIdentifier: function () {
  375. var imei ;
  376. if (cc.sys.os === cc.sys.OS_ANDROID) {
  377. imei = jsb.reflection.callStaticMethod(this.ANDROID_API, "getImei", "()Ljava/lang/String;");
  378. } else if (cc.sys.os === cc.sys.OS_IOS) {
  379. imei = jsb.reflection.callStaticMethod(this.IOS_API, "getIdentifier");
  380. }
  381. return imei;
  382. },
  383.  
  384. /**
  385. * 获取设备名称 如 ipadmini
  386. * return (String)
  387. */
  388. getDeviceName: function () {
  389. var DeviceName;
  390. if (cc.sys.os === cc.sys.OS_ANDROID) {
  391. DeviceName = jsb.reflection.callStaticMethod(this.ANDROID_API, "getDeviceName", "()Ljava/lang/String;");
  392. } else if (cc.sys.os === cc.sys.OS_IOS) {
  393. DeviceName = jsb.reflection.callStaticMethod(this.IOS_API, "getDeviceName");
  394. }
  395. return DeviceName;
  396. },
  397.  
  398. /**
  399. * 获取手机系统版本
  400. * return (String)
  401. */
  402. getPhoneVersion: function () {
  403. var SdkVersion;
  404. if (cc.sys.os === cc.sys.OS_ANDROID) {
  405. SdkVersion = jsb.reflection.callStaticMethod(this.ANDROID_API, "getSdkVersion", "()Ljava/lang/String;");
  406. } else if (cc.sys.os === cc.sys.OS_IOS) {
  407. SdkVersion = jsb.reflection.callStaticMethod(this.IOS_API, "getPhoneVersion");
  408. }
  409. return SdkVersion;
  410. },
  411.  
  412. /**
  413. * 获取app bundleId, android为package name
  414. * return (String)
  415. */
  416. getBundleId: function () {
  417. var BunleId;
  418. if (cc.sys.os === cc.sys.OS_ANDROID) {
  419. BunleId = jsb.reflection.callStaticMethod(this.ANDROID_API, "getAppPackageName", "()Ljava/lang/String;");
  420. } else if (cc.sys.os === cc.sys.OS_IOS) {
  421. BunleId = jsb.reflection.callStaticMethod(this.IOS_API, "getBundleId");
  422. }
  423. return BunleId;
  424. },
  425.  
  426. /**
  427. * 获取app版本号
  428. * return (String)
  429. */
  430. getAppVersion: function () {
  431. var AppVersion;
  432. if (cc.sys.os === cc.sys.OS_ANDROID) {
  433. AppVersion = jsb.reflection.callStaticMethod(this.ANDROID_API, "getAppVersion", "()Ljava/lang/String;");
  434. } else if (cc.sys.os === cc.sys.OS_IOS) {
  435. AppVersion = jsb.reflection.callStaticMethod(this.IOS_API, "getAppVersion");
  436. }
  437. return AppVersion;
  438. },
  439.  
  440. /**
  441. * 获取app渠道号
  442. * return (String)
  443. */
  444. getAppChannel: function () {
  445. var AppChannel;
  446. if (cc.sys.os === cc.sys.OS_ANDROID) {
  447. AppChannel = jsb.reflection.callStaticMethod(this.ANDROID_API, "getChannel", "()Ljava/lang/String;");
  448. } else if (cc.sys.os === cc.sys.OS_IOS) {
  449. AppChannel = jsb.reflection.callStaticMethod(this.IOS_API, "getAppChannel");
  450. }
  451. return AppChannel;
  452. },
  453.  
  454. /**
  455. * 获取当前电量,满电返回1.00
  456. * android在下面回调中获得,ios直接获得
  457. * return (double)
  458. */
  459. getCurrentBatteryLevel: function () {
  460. var CurrentBattery = 0;
  461. if (cc.sys.os === cc.sys.OS_ANDROID) {
  462. //android的电量在下面回调中获得
  463. jsb.reflection.callStaticMethod(this.ANDROID_API, "getCurrentBatteryLevel", "()V");
  464. } else if (cc.sys.os === cc.sys.OS_IOS) {
  465. CurrentBattery = jsb.reflection.callStaticMethod(this.IOS_API, "getCurrentBatteryLevel");
  466. }
  467. return cc.js.formatStr("%s%",CurrentBattery);
  468. },
  469.  
  470. /**
  471. * android获取电量回调
  472. * BatteryLevelStr 电量字符串,如 10%
  473. */
  474. onAndroidCurrentBattreyResp: function (BatteryLevelStr) {
  475. // var batteryLevel = BatteryLevelStr;
  476.  
  477. this.dispatchE("androidBattery",BatteryLevelStr );
  478. }
  479.  
  480. //***************************************系统工具方法结束***************************************************************** */
  481.  
  482. // called every frame, uncomment this function to activate update callback
  483. // update: function (dt) {
  484.  
  485. // },
  486. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement