AdSDK.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. "use strict";
  2. (function() {
  3. var AdSDK = window.AdSDK = {
  4. bannerAds: {},
  5. interstitialAds: {},
  6. videoAds: {},
  7. init: function() {
  8. var self = this;
  9. GameSDK.registerCallback("ad_banner_onLoad", function(param) {
  10. var banner = self.bannerAds[param.adId];
  11. if (banner && banner.onLoad) {
  12. banner.onLoad(param);
  13. }
  14. });
  15. GameSDK.registerCallback("ad_banner_onError", function(param) {
  16. var banner = self.bannerAds[param.adId];
  17. if (banner && banner.onError) {
  18. banner.onError(param);
  19. }
  20. });
  21. GameSDK.registerCallback("ad_banner_onResize", function(param) {
  22. var banner = self.bannerAds[param.adId];
  23. if (banner && banner.onResize) {
  24. banner.onResize(param);
  25. }
  26. });
  27. GameSDK.registerCallback("ad_interstitial_onLoad", function(param) {
  28. var interstitialAd = self.interstitialAds[param.adId];
  29. if (interstitialAd && interstitialAd.onLoad) {
  30. interstitialAd.onLoad(param);
  31. }
  32. });
  33. GameSDK.registerCallback("ad_interstitial_onError", function(param) {
  34. var interstitialAd = self.interstitialAds[param.adId];
  35. if (interstitialAd && interstitialAd.onError) {
  36. interstitialAd.onError(param);
  37. }
  38. });
  39. GameSDK.registerCallback("ad_interstitial_onResize", function(param) {
  40. var interstitialAd = self.interstitialAds[param.adId];
  41. if (interstitialAd && interstitialAd.onResize) {
  42. interstitialAd.onResize(param);
  43. }
  44. });
  45. GameSDK.registerCallback("ad_rewardedVideo_onLoad", function(param) {
  46. var videoAd = self.videoAds[param.adId];
  47. if (videoAd && videoAd.onLoad) {
  48. videoAd.onLoad(param);
  49. }
  50. });
  51. GameSDK.registerCallback("ad_rewardedVideo_onError", function(param) {
  52. var videoAd = self.videoAds[param.adId];
  53. if (videoAd && videoAd.onError) {
  54. videoAd.onError(param);
  55. }
  56. });
  57. GameSDK.registerCallback("ad_rewardedVideo_onClose", function(param) {
  58. var videoAd = self.videoAds[param.adId];
  59. if (videoAd && videoAd.onClose) {
  60. videoAd.onClose(param);
  61. }
  62. });
  63. GameSDK.registerCallback("ad_onShow", function(param) {
  64. if (param.type == 1) {
  65. var banner = self.bannerAds[param.adId];
  66. if (banner && banner.mHandler) {
  67. banner.mHandler(param.success);
  68. }
  69. } else if (param.type == 2) {
  70. var interstitialAd = self.interstitialAds[param.adId];
  71. if (interstitialAd && interstitialAd.mHandler) {
  72. interstitialAd.mHandler(param.success);
  73. }
  74. } else if (param.type == 3) {
  75. var videoAd = self.videoAds[param.adId];
  76. if (videoAd && videoAd.mHandler) {
  77. videoAd.mHandler(param.success);
  78. }
  79. }
  80. });
  81. },
  82. // 创建Banner广告
  83. // 参数
  84. // adId: string 广告序号ID
  85. // bannerAdId: string Banner广告ID
  86. // position: int 广告位置 1 屏幕顶部 2 屏幕底部 3屏幕中间
  87. createBannerAd: function(adId, bannerAdId, position) {
  88. var self = this;
  89. var bannerAd = {
  90. "adId": adId
  91. };
  92. var param = {
  93. "adId": adId,
  94. "bannerAdId": bannerAdId,
  95. "position": position,
  96. };
  97. GameSDK.callNative("ad_banner_create", param);
  98. //显示 banner 广告
  99. bannerAd.show = function() {
  100. var param = {
  101. "adId": adId
  102. };
  103. GameSDK.callNative("ad_banner_show", param);
  104. var promise = new Promise(function(resolve, reject) {
  105. var handler = function(params) {
  106. if (params == 0) {
  107. resolve();
  108. } else {
  109. reject();
  110. }
  111. };
  112. self.bannerAds[adId].mHandler = handler;
  113. });
  114. return promise;
  115. };
  116. //隐藏 banner 广告
  117. bannerAd.hide = function() {
  118. var param = {
  119. "adId": adId
  120. };
  121. GameSDK.callNative("ad_banner_hide", param);
  122. };
  123. // 销毁 banner 广告
  124. bannerAd.destroy = function() {
  125. var param = {
  126. "adId": adId
  127. };
  128. self.bannerAds[adId] = null;
  129. GameSDK.callNative("ad_banner_destroy", param);
  130. };
  131. //监听 banner 广告加载事件
  132. bannerAd.onLoad = function(cb) {
  133. this.onLoad = cb;
  134. };
  135. //监听 banner 广告错误事件
  136. bannerAd.onError = function(cb) {
  137. this.onError = cb;
  138. };
  139. //监听 banner 广告尺寸变化事件 未实现
  140. bannerAd.onResize = function(cb) {
  141. this.onResize = cb;
  142. };
  143. //取消监听 banner 广告加载事件
  144. bannerAd.offLoad = function(cb) {
  145. if (this.onLoad == cb) {
  146. this.onLoad = null;
  147. }
  148. };
  149. //取消监听 banner 广告错误事件
  150. bannerAd.offError = function(cb) {
  151. if (this.onError == cb) {
  152. this.onError = null;
  153. }
  154. };
  155. //取消监听 banner 广告尺寸变化事件
  156. bannerAd.offResize = function(cb) {
  157. if (this.onResize == cb) {
  158. this.onResize = null;
  159. }
  160. };
  161. self.bannerAds[adId] = bannerAd;
  162. return bannerAd;
  163. },
  164. // 创建插屏广告
  165. // 参数
  166. // adId: string 广告序号ID
  167. // interstitialAdId: string 插屏广告ID
  168. // style: int 广告类型 1 全屏 2 半屏
  169. createInterstitialAd: function(adId, interstitialAdId, style) {
  170. var self = this;
  171. var interstitialAd = {
  172. "adId": adId
  173. };
  174. var param = {
  175. "adId": adId,
  176. "interstitialAdId": interstitialAdId,
  177. "style": style,
  178. };
  179. GameSDK.callNative("ad_interstitial_create", param);
  180. //显示 插屏 广告
  181. interstitialAd.show = function() {
  182. var param = {
  183. "adId": adId
  184. };
  185. GameSDK.callNative("ad_interstitial_show", param);
  186. var promise = new Promise(function(resolve, reject) {
  187. var handler = function(params) {
  188. if (params == 0) {
  189. resolve();
  190. } else {
  191. reject();
  192. }
  193. };
  194. self.interstitialAds[adId].mHandler = handler;
  195. });
  196. return promise;
  197. };
  198. // 隐藏 插屏 广告
  199. interstitialAd.hide = function() {
  200. var param = {
  201. "adId": adId
  202. };
  203. GameSDK.callNative("ad_interstitial_hide", param);
  204. };
  205. // 销毁 插屏 广告
  206. interstitialAd.destroy = function() {
  207. var param = {
  208. "adId": adId
  209. };
  210. self.interstitialAds[adId] = null;
  211. GameSDK.callNative("ad_interstitial_destroy", param);
  212. };
  213. // 监听 插屏 广告加载事件
  214. interstitialAd.onLoad = function(cb) {
  215. this.onLoad = cb;
  216. };
  217. // 监听 插屏 广告错误事件
  218. interstitialAd.onError = function(cb) {
  219. this.onError = cb;
  220. };
  221. // 监听 插屏 广告尺寸变化事件
  222. interstitialAd.onResize = function(cb) {
  223. this.onResize = cb;
  224. };
  225. //取消监听 插屏 广告加载事件
  226. interstitialAd.offLoad = function(cb) {
  227. if (this.onLoad == cb) {
  228. this.onLoad = null;
  229. }
  230. };
  231. //取消监听 插屏 广告错误事件
  232. interstitialAd.offError = function(cb) {
  233. if (this.onError == cb) {
  234. this.onError = null;
  235. }
  236. };
  237. //取消监听 插屏 广告尺寸变化事件
  238. interstitialAd.offResize = function(cb) {
  239. if (this.onResize == cb) {
  240. this.onResize = null;
  241. }
  242. };
  243. self.interstitialAds[adId] = interstitialAd;
  244. return interstitialAd;
  245. },
  246. // 创建激励视频广告
  247. // 参数
  248. // videoAdId: string 视频广告ID
  249. // screenOrientation: int 广告类型 1 横屏 2 竖屏
  250. createRewardedVideoAd: function(adId, videoAdId, screenOrientation) {
  251. var self = this;
  252. var rewardedVideoAd = {
  253. "adId": adId
  254. };
  255. var param = {
  256. "adId": adId,
  257. "videoAdId": videoAdId,
  258. "screenOrientation": screenOrientation,
  259. };
  260. GameSDK.callNative("ad_rewardedVideo_create", param);
  261. //显示激励视频广告
  262. rewardedVideoAd.show = function() {
  263. var param = {
  264. "adId": adId
  265. };
  266. GameSDK.callNative("ad_rewardedVideo_show", param);
  267. var promise = new Promise(function(resolve, reject) {
  268. var handler = function(params) {
  269. if (params == 0) {
  270. resolve();
  271. } else {
  272. reject();
  273. }
  274. };
  275. self.videoAds[adId].mHandler = handler;
  276. });
  277. return promise;
  278. };
  279. // 隐藏激励视频广告
  280. rewardedVideoAd.hide = function() {
  281. var param = {
  282. "adId": adId
  283. };
  284. GameSDK.callNative("ad_rewardedVideo_hide", param);
  285. };
  286. // 销毁激励视频广告
  287. rewardedVideoAd.destroy = function() {
  288. var param = {
  289. "adId": adId
  290. };
  291. self.videoAds[adId] = null;
  292. GameSDK.callNative("ad_rewardedVideo_destroy", param);
  293. };
  294. //监听激励视频广告加载事件
  295. rewardedVideoAd.onLoad = function(cb) {
  296. this.onLoad = cb;
  297. };
  298. //监听激励视频错误事件
  299. rewardedVideoAd.onError = function(cb) {
  300. this.onError = cb;
  301. };
  302. //监听用户点击 关闭广告 按钮的事件
  303. rewardedVideoAd.onClose = function(cb) {
  304. this.onClose = cb;
  305. };
  306. //监听激励视频广告加载事件
  307. rewardedVideoAd.offLoad = function(cb) {
  308. if (this.onLoad == cb) {
  309. this.onLoad = null;
  310. }
  311. };
  312. //监听激励视频错误事件
  313. rewardedVideoAd.offError = function(cb) {
  314. if (this.onError == cb) {
  315. this.onError = null;
  316. }
  317. };
  318. //监听用户点击 关闭广告 按钮的事件
  319. rewardedVideoAd.offClose = function(cb) {
  320. if (this.onClose == cb) {
  321. this.onClose = null;
  322. }
  323. };
  324. self.videoAds[adId] = rewardedVideoAd;
  325. return rewardedVideoAd;
  326. }
  327. };
  328. })()