PlatformInit.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /**
  2. * 初始化平台相关信息,确定MiddleMgr
  3. */
  4. module.exports = {
  5. init (ns) {
  6. if (CC_EDITOR) {
  7. return;
  8. }
  9. this._getPlatformInit();
  10. },
  11. /**
  12. * 获取当前平台的初始化接口
  13. *
  14. * @author Pyden
  15. * @date 2019-07-31
  16. * @returns
  17. */
  18. _getPlatformInit () {
  19. let channelId = this._getChannelId();
  20. G.ChannelId = Number(channelId);
  21. let sdkConfig = this._getSdkConfig(channelId);
  22. let sdkName = sdkConfig.sdk_name;
  23. let platform = cc.sys.platform;
  24. G.MiddleMgr = this._getMiddleMgr(platform, sdkName);
  25. G.MiddleMgr.sdkConfig = this._getSdkConfig(channelId);
  26. G.MiddleMgr.init();
  27. },
  28. /**
  29. * 获取MiddleMgr
  30. *
  31. * @author Pyden
  32. * @date 2019-12-30
  33. * @param {String} platform 平台
  34. * @param {String} sdkName sdk名称
  35. * @returns {MiddleMgr}
  36. */
  37. _getMiddleMgr (platform, sdkName) {
  38. let MiddleMgrClass;
  39. switch (platform) {
  40. case cc.sys.BAIDU_GAME: {
  41. MiddleMgrClass = require('BaiduMiddleMgr');
  42. break;
  43. }
  44. case cc.sys.WECHAT_GAME: {
  45. MiddleMgrClass = require('WechatgameMiddleMgr');
  46. break;
  47. }
  48. case cc.sys.ANDROID: {
  49. MiddleMgrClass = require('AndroidMiddleMgr');
  50. break;
  51. }
  52. default: {
  53. MiddleMgrClass = this._getWebMiddleMgrClass(sdkName);
  54. break;
  55. }
  56. }
  57. return new MiddleMgrClass();
  58. },
  59. /**
  60. * 获取Web平台对应的MiddleMgr
  61. *
  62. * @author Pyden
  63. * @date 2019-07-29
  64. * @param {String} sdkName sdk名称
  65. * @returns {MiddleMgr}
  66. */
  67. _getWebMiddleMgrClass (sdkName) {
  68. let MiddleMgrClass;
  69. switch (sdkName) {
  70. case 'web-qtt': {
  71. MiddleMgrClass = require('WebQTTMiddleMgr');
  72. break;
  73. }
  74. case 'web-xf': {
  75. MiddleMgrClass = require('WebXFMiddleMgr');
  76. break;
  77. }
  78. default: {
  79. MiddleMgrClass = require('WebMiddleMgr');
  80. break;
  81. }
  82. }
  83. return MiddleMgrClass;
  84. },
  85. /**
  86. * 渠道号映射不同的在线参数打包配置
  87. *
  88. * @author Pyden
  89. * @date 2019-07-29
  90. * @param {Integer} channelId
  91. * @returns {Object}
  92. */
  93. _getChannelId () {
  94. let channelId = 999;
  95. /*
  96. sys.UNKNOWN = -1;
  97. sys.WIN32 = 0;
  98. sys.LINUX = 1;
  99. sys.MACOS = 2;
  100. sys.ANDROID = 3;
  101. sys.IPHONE = 4;
  102. sys.IPAD = 5;
  103. sys.BLACKBERRY = 6;
  104. sys.NACL = 7;
  105. sys.EMSCRIPTEN = 8;
  106. sys.TIZEN = 9;
  107. sys.WINRT = 10;
  108. sys.WP8 = 11;
  109. sys.MOBILE_BROWSER = 100;
  110. sys.DESKTOP_BROWSER = 101;
  111. sys.EDITOR_PAGE = 102;
  112. sys.EDITOR_CORE = 103;
  113. sys.WECHAT_GAME = 104;
  114. sys.QQ_PLAY = 105;
  115. sys.FB_PLAYABLE_ADS = 106;
  116. sys.BAIDU_GAME = 107;
  117. sys.VIVO_GAME = 108;
  118. sys.OPPO_GAME = 109;
  119. sys.HUAWEI_GAME = 110;
  120. sys.XIAOMI_GAME = 111;
  121. sys.JKW_GAME = 112;
  122. */
  123. let platform = cc.sys.platform;
  124. switch (platform) {
  125. case cc.sys.MOBILE_BROWSER:
  126. case cc.sys.DESKTOP_BROWSER: {
  127. let searchParams = new URLSearchParams(window.location.search);
  128. channelId = searchParams.get('channel') || 999;
  129. break;
  130. }
  131. case cc.sys.ANDROID: {
  132. channelId = G.ANDROID_CHANNEL || 999;
  133. break;
  134. }
  135. default: {
  136. if (cc.sys.os == cc.sys.OS_IOS) {
  137. channelId = G.IOS_CHANNEL || 999;
  138. } else {
  139. channelId = G.ANDROID_CHANNEL || 999;
  140. }
  141. break;
  142. }
  143. }
  144. return channelId;
  145. },
  146. /**
  147. * 渠道号映射不同的SDK打包配置
  148. *
  149. * @author Pyden
  150. * @date 2019-07-29
  151. * @param {Integer} channelId
  152. * @returns {Object}
  153. */
  154. _getSdkConfig (channelId) {
  155. let WebSDKConfig = require('AllSDKConfig');
  156. let sdkConfig = WebSDKConfig['ch' + channelId];
  157. if (!sdkConfig) {
  158. sdkConfig = WebSDKConfig['ch999'] || {};
  159. sdkConfig.channel = channelId;
  160. }
  161. return sdkConfig;
  162. }
  163. };