@24jieqi/react-native-brayant-ad 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/lib/commonjs/dy/api/FullScreenVideo.js +12 -3
  2. package/lib/commonjs/dy/api/FullScreenVideo.js.map +1 -1
  3. package/lib/commonjs/dy/api/RewardVideo.js +12 -3
  4. package/lib/commonjs/dy/api/RewardVideo.js.map +1 -1
  5. package/lib/commonjs/dy/api/SplashAd.js +14 -2
  6. package/lib/commonjs/dy/api/SplashAd.js.map +1 -1
  7. package/lib/commonjs/dy/component/BannerAd.js +7 -9
  8. package/lib/commonjs/dy/component/BannerAd.js.map +1 -1
  9. package/lib/commonjs/dy/component/DrawFeedAd.js +8 -5
  10. package/lib/commonjs/dy/component/DrawFeedAd.js.map +1 -1
  11. package/lib/commonjs/dy/component/FeedAd.js +8 -5
  12. package/lib/commonjs/dy/component/FeedAd.js.map +1 -1
  13. package/lib/module/dy/api/FullScreenVideo.js +12 -3
  14. package/lib/module/dy/api/FullScreenVideo.js.map +1 -1
  15. package/lib/module/dy/api/RewardVideo.js +12 -3
  16. package/lib/module/dy/api/RewardVideo.js.map +1 -1
  17. package/lib/module/dy/api/SplashAd.js +14 -2
  18. package/lib/module/dy/api/SplashAd.js.map +1 -1
  19. package/lib/module/dy/component/BannerAd.js +7 -9
  20. package/lib/module/dy/component/BannerAd.js.map +1 -1
  21. package/lib/module/dy/component/DrawFeedAd.js +8 -5
  22. package/lib/module/dy/component/DrawFeedAd.js.map +1 -1
  23. package/lib/module/dy/component/FeedAd.js +8 -5
  24. package/lib/module/dy/component/FeedAd.js.map +1 -1
  25. package/lib/typescript/src/dy/api/FullScreenVideo.d.ts +1 -0
  26. package/lib/typescript/src/dy/api/FullScreenVideo.d.ts.map +1 -1
  27. package/lib/typescript/src/dy/api/RewardVideo.d.ts +1 -0
  28. package/lib/typescript/src/dy/api/RewardVideo.d.ts.map +1 -1
  29. package/lib/typescript/src/dy/api/SplashAd.d.ts +1 -0
  30. package/lib/typescript/src/dy/api/SplashAd.d.ts.map +1 -1
  31. package/lib/typescript/src/dy/component/BannerAd.d.ts +2 -2
  32. package/lib/typescript/src/dy/component/BannerAd.d.ts.map +1 -1
  33. package/lib/typescript/src/dy/component/DrawFeedAd.d.ts +2 -1
  34. package/lib/typescript/src/dy/component/DrawFeedAd.d.ts.map +1 -1
  35. package/lib/typescript/src/dy/component/FeedAd.d.ts +2 -2
  36. package/lib/typescript/src/dy/component/FeedAd.d.ts.map +1 -1
  37. package/package.json +1 -1
  38. package/src/dy/api/FullScreenVideo.ts +12 -4
  39. package/src/dy/api/RewardVideo.ts +12 -4
  40. package/src/dy/api/SplashAd.ts +14 -3
  41. package/src/dy/component/BannerAd.tsx +10 -12
  42. package/src/dy/component/DrawFeedAd.tsx +12 -9
  43. package/src/dy/component/FeedAd.tsx +14 -9
@@ -24,7 +24,6 @@ let AD_EVENT_TYPE = exports.AD_EVENT_TYPE = /*#__PURE__*/function (AD_EVENT_TYPE
24
24
  AD_EVENT_TYPE["onAdClose"] = "onAdClose"; // 广告关闭监听
25
25
  return AD_EVENT_TYPE;
26
26
  }({});
27
- let listenerCache = {};
28
27
  var _default = props => {
29
28
  const {
30
29
  provider,
@@ -32,6 +31,8 @@ var _default = props => {
32
31
  orientation = 'VERTICAL'
33
32
  } = props;
34
33
  const eventEmitter = new _reactNative.NativeEventEmitter(FullScreenVideoModule);
34
+ // Per-instance listener cache to avoid conflicts with multiple ads
35
+ const listenerCache = {};
35
36
  let result = FullScreenVideoModule.startAd({
36
37
  codeid,
37
38
  orientation,
@@ -40,15 +41,23 @@ var _default = props => {
40
41
  return {
41
42
  result,
42
43
  subscribe: (type, callback) => {
44
+ // Remove previous listener for this type in this instance only
43
45
  if (listenerCache[type]) {
44
46
  var _listenerCache$type;
45
47
  (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
46
- } else {
47
- console.warn(`Listener for ${type} not found in the cache.`);
48
48
  }
49
49
  return listenerCache[type] = eventEmitter.addListener('FullScreenVideo-' + type, event => {
50
50
  callback(event);
51
51
  });
52
+ },
53
+ // Provide cleanup method
54
+ cleanup: () => {
55
+ Object.values(listenerCache).forEach(subscription => {
56
+ subscription === null || subscription === void 0 || subscription.remove();
57
+ });
58
+ Object.keys(listenerCache).forEach(key => {
59
+ delete listenerCache[key];
60
+ });
52
61
  }
53
62
  };
54
63
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","FullScreenVideoModule","NativeModules","AD_EVENT_TYPE","exports","listenerCache","_default","props","provider","codeid","orientation","eventEmitter","NativeEventEmitter","result","startAd","subscribe","type","callback","_listenerCache$type","remove","console","warn","addListener","event","default"],"sourceRoot":"../../../../src","sources":["dy/api/FullScreenVideo.ts"],"mappings":";;;;;;AAMA,IAAAA,YAAA,GAAAC,OAAA;AANA;AACA;AACA;AACA;AACA;;AAIA,MAAM;EAAEC;AAAsB,CAAC,GAAGC,0BAAa;AAAC,IAEpCC,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAiBzB,IAAIE,aAA4B,GAAG,CAAC,CAAkB;AAAC,IAAAC,QAAA,GAEvCC,KAAsB,IAAK;EACzC,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,WAAW,GAAG;EAAW,CAAC,GAAGH,KAAK;EAC5D,MAAMI,YAAY,GAAG,IAAIC,+BAAkB,CAACX,qBAAqB,CAAC;EAClE,IAAIY,MAAM,GAAGZ,qBAAqB,CAACa,OAAO,CAAC;IAAEL,MAAM;IAAEC,WAAW;IAAEF;EAAS,CAAC,CAAC;EAC7E,OAAO;IACLK,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE,IAAIZ,aAAa,CAACW,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAb,aAAa,CAACW,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLC,OAAO,CAACC,IAAI,CAAC,gBAAgBL,IAAI,0BAA0B,CAAC;MAC9D;MACA,OAAQX,aAAa,CAACW,IAAI,CAAC,GAAGL,YAAY,CAACW,WAAW,CACpD,kBAAkB,GAAGN,IAAI,EACxBO,KAAU,IAAK;QACdN,QAAQ,CAACM,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH,CAAC;AAAAnB,OAAA,CAAAoB,OAAA,GAAAlB,QAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","FullScreenVideoModule","NativeModules","AD_EVENT_TYPE","exports","_default","props","provider","codeid","orientation","eventEmitter","NativeEventEmitter","listenerCache","result","startAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","cleanup","Object","values","forEach","subscription","keys","key","default"],"sourceRoot":"../../../../src","sources":["dy/api/FullScreenVideo.ts"],"mappings":";;;;;;AAMA,IAAAA,YAAA,GAAAC,OAAA;AANA;AACA;AACA;AACA;AACA;;AAIA,MAAM;EAAEC;AAAsB,CAAC,GAAGC,0BAAa;AAAC,IAEpCC,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAAA,IAAAE,QAAA,GAiBTC,KAAsB,IAAK;EACzC,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,WAAW,GAAG;EAAW,CAAC,GAAGH,KAAK;EAC5D,MAAMI,YAAY,GAAG,IAAIC,+BAAkB,CAACV,qBAAqB,CAAC;EAClE;EACA,MAAMW,aAA4B,GAAG,CAAC,CAAkB;EACxD,IAAIC,MAAM,GAAGZ,qBAAqB,CAACa,OAAO,CAAC;IAAEN,MAAM;IAAEC,WAAW;IAAEF;EAAS,CAAC,CAAC;EAC7E,OAAO;IACLM,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGN,YAAY,CAACU,WAAW,CACpD,kBAAkB,GAAGJ,IAAI,EACxBK,KAAU,IAAK;QACdJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAC,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEP,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFI,MAAM,CAACI,IAAI,CAACf,aAAa,CAAC,CAACa,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOhB,aAAa,CAACgB,GAAG,CAAkB;MAC5C,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AAAAxB,OAAA,CAAAyB,OAAA,GAAAxB,QAAA","ignoreList":[]}
@@ -19,22 +19,31 @@ let AD_EVENT_TYPE = exports.AD_EVENT_TYPE = /*#__PURE__*/function (AD_EVENT_TYPE
19
19
  AD_EVENT_TYPE["onAdClose"] = "onAdClose"; // 广告关闭监听
20
20
  return AD_EVENT_TYPE;
21
21
  }({});
22
- let listenerCache = {};
23
22
  function _default(info) {
24
23
  const eventEmitter = new _reactNative.NativeEventEmitter(RewardVideoModule);
24
+ // Per-instance listener cache to avoid conflicts with multiple ads
25
+ const listenerCache = {};
25
26
  let result = RewardVideoModule.startAd(info);
26
27
  return {
27
28
  result,
28
29
  subscribe: (type, callback) => {
30
+ // Remove previous listener for this type in this instance only
29
31
  if (listenerCache[type]) {
30
32
  var _listenerCache$type;
31
33
  (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
32
- } else {
33
- console.warn(`Listener for ${type} not found in the cache.`);
34
34
  }
35
35
  return listenerCache[type] = eventEmitter.addListener('RewardVideo-' + type, event => {
36
36
  callback(event);
37
37
  });
38
+ },
39
+ // Provide cleanup method
40
+ cleanup: () => {
41
+ Object.values(listenerCache).forEach(subscription => {
42
+ subscription === null || subscription === void 0 || subscription.remove();
43
+ });
44
+ Object.keys(listenerCache).forEach(key => {
45
+ delete listenerCache[key];
46
+ });
38
47
  }
39
48
  };
40
49
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","RewardVideoModule","NativeModules","AD_EVENT_TYPE","exports","listenerCache","_default","info","eventEmitter","NativeEventEmitter","result","startAd","subscribe","type","callback","_listenerCache$type","remove","console","warn","addListener","event"],"sourceRoot":"../../../../src","sources":["dy/api/RewardVideo.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAM;EAAEC;AAAkB,CAAC,GAAGC,0BAAa;AAAC,IAChCC,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAWzB,IAAIE,aAA4B,GAAG,CAAC,CAAkB;AAMvC,SAAAC,SAAUC,IAAgB,EAAE;EACzC,MAAMC,YAAY,GAAG,IAAIC,+BAAkB,CAACR,iBAAiB,CAAC;EAC9D,IAAIS,MAAM,GAAGT,iBAAiB,CAACU,OAAO,CAACJ,IAAI,CAAC;EAC5C,OAAO;IACLG,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE,IAAIT,aAAa,CAACQ,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAV,aAAa,CAACQ,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLC,OAAO,CAACC,IAAI,CAAC,gBAAgBL,IAAI,0BAA0B,CAAC;MAC9D;MACA,OAAQR,aAAa,CAACQ,IAAI,CAAC,GAAGL,YAAY,CAACW,WAAW,CACpD,cAAc,GAAGN,IAAI,EACpBO,KAAU,IAAK;QACdN,QAAQ,CAACM,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","RewardVideoModule","NativeModules","AD_EVENT_TYPE","exports","_default","info","eventEmitter","NativeEventEmitter","listenerCache","result","startAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","cleanup","Object","values","forEach","subscription","keys","key"],"sourceRoot":"../../../../src","sources":["dy/api/RewardVideo.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,MAAM;EAAEC;AAAkB,CAAC,GAAGC,0BAAa;AAAC,IAChCC,aAAa,GAAAC,OAAA,CAAAD,aAAA,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAeV,SAAAE,SAAUC,IAAgB,EAAE;EACzC,MAAMC,YAAY,GAAG,IAAIC,+BAAkB,CAACP,iBAAiB,CAAC;EAC9D;EACA,MAAMQ,aAA4B,GAAG,CAAC,CAAkB;EACxD,IAAIC,MAAM,GAAGT,iBAAiB,CAACU,OAAO,CAACL,IAAI,CAAC;EAC5C,OAAO;IACLI,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGN,YAAY,CAACU,WAAW,CACpD,cAAc,GAAGJ,IAAI,EACpBK,KAAU,IAAK;QACdJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAC,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEP,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFI,MAAM,CAACI,IAAI,CAACf,aAAa,CAAC,CAACa,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOhB,aAAa,CAACgB,GAAG,CAAkB;MAC5C,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -14,12 +14,13 @@ var _reactNative = require("react-native");
14
14
  const {
15
15
  SplashAd
16
16
  } = _reactNative.NativeModules;
17
- const listenerCache = {};
18
17
  const dyLoadSplashAd = ({
19
18
  codeid,
20
19
  anim = 'default'
21
20
  }) => {
22
21
  const eventEmitter = new _reactNative.NativeEventEmitter(SplashAd);
22
+ // Per-instance listener cache to avoid conflicts with multiple ads
23
+ const listenerCache = {};
23
24
  let result = SplashAd.loadSplashAd({
24
25
  codeid,
25
26
  anim
@@ -27,14 +28,25 @@ const dyLoadSplashAd = ({
27
28
  return {
28
29
  result,
29
30
  subscribe: (type, callback) => {
31
+ // Remove previous listener for this type in this instance only
30
32
  if (listenerCache[type]) {
31
- listenerCache[type].remove();
33
+ var _listenerCache$type;
34
+ (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
32
35
  }
33
36
  return listenerCache[type] = eventEmitter.addListener('SplashAd-' + type, event => {
34
37
  console.log('SplashAd event type ', type);
35
38
  console.log('SplashAd event ', event);
36
39
  callback(event);
37
40
  });
41
+ },
42
+ // Provide cleanup method
43
+ cleanup: () => {
44
+ Object.values(listenerCache).forEach(subscription => {
45
+ subscription === null || subscription === void 0 || subscription.remove();
46
+ });
47
+ Object.keys(listenerCache).forEach(key => {
48
+ delete listenerCache[key];
49
+ });
38
50
  }
39
51
  };
40
52
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","SplashAd","NativeModules","listenerCache","dyLoadSplashAd","codeid","anim","eventEmitter","NativeEventEmitter","result","loadSplashAd","subscribe","type","callback","remove","addListener","event","console","log","exports"],"sourceRoot":"../../../../src","sources":["dy/api/SplashAd.ts"],"mappings":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;AACA;;AAEA,MAAM;EAAEC;AAAS,CAAC,GAAGC,0BAAa;AAclC,MAAMC,aAAkB,GAAG,CAAC,CAAC;AAE7B,MAAMC,cAAc,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI,GAAG;AAA+B,CAAC,KAAK;EAC5E,MAAMC,YAAY,GAAG,IAAIC,+BAAkB,CAACP,QAAQ,CAAC;EACrD,IAAIQ,MAAM,GAAGR,QAAQ,CAACS,YAAY,CAAC;IAAEL,MAAM;IAAEC;EAAK,CAAC,CAAC;EACpD,OAAO;IACLG,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAyB,EAAEC,QAA8B,KAAK;MACxE,IAAIV,aAAa,CAACS,IAAI,CAAC,EAAE;QACvBT,aAAa,CAACS,IAAI,CAAC,CAACE,MAAM,CAAC,CAAC;MAC9B;MACA,OAAQX,aAAa,CAACS,IAAI,CAAC,GAAGL,YAAY,CAACQ,WAAW,CACpD,WAAW,GAAGH,IAAI,EACjBI,KAAU,IAAK;QACdC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEN,IAAI,CAAC;QACzCK,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEF,KAAK,CAAC;QACrCH,QAAQ,CAACG,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH,CAAC;AAACG,OAAA,CAAAf,cAAA,GAAAA,cAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","SplashAd","NativeModules","dyLoadSplashAd","codeid","anim","eventEmitter","NativeEventEmitter","listenerCache","result","loadSplashAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","console","log","cleanup","Object","values","forEach","subscription","keys","key","exports"],"sourceRoot":"../../../../src","sources":["dy/api/SplashAd.ts"],"mappings":";;;;;;AAKA,IAAAA,YAAA,GAAAC,OAAA;AALA;AACA;AACA;AACA;AACA;;AAGA,MAAM;EAAEC;AAAS,CAAC,GAAGC,0BAAa;AAclC,MAAMC,cAAc,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI,GAAG;AAA+B,CAAC,KAAK;EAC5E,MAAMC,YAAY,GAAG,IAAIC,+BAAkB,CAACN,QAAQ,CAAC;EACrD;EACA,MAAMO,aAA4D,GAAG,CAAC,CAAC;EACvE,IAAIC,MAAM,GAAGR,QAAQ,CAACS,YAAY,CAAC;IAAEN,MAAM;IAAEC;EAAK,CAAC,CAAC;EACpD,OAAO;IACLI,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAyB,EAAEC,QAA8B,KAAK;MACxE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGN,YAAY,CAACU,WAAW,CACpD,WAAW,GAAGJ,IAAI,EACjBK,KAAU,IAAK;QACdC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEP,IAAI,CAAC;QACzCM,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEF,KAAK,CAAC;QACrCJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAG,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACd,aAAa,CAAC,CAACe,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAET,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFM,MAAM,CAACI,IAAI,CAACjB,aAAa,CAAC,CAACe,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOlB,aAAa,CAACkB,GAAG,CAAC;MAC3B,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AAACC,OAAA,CAAAxB,cAAA,GAAAA,cAAA","ignoreList":[]}
@@ -16,6 +16,9 @@ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be
16
16
  ios: "- You have run 'pod install'\n",
17
17
  default: ''
18
18
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n' + '\nNote: BannerAd is currently only supported on Android platform.';
19
+
20
+ // Define native component at module level to avoid duplicate registration
21
+ const BannerAdNativeComponent = ComponentName && _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : undefined;
19
22
  const BannerAdView = props => {
20
23
  const {
21
24
  codeid,
@@ -38,15 +41,10 @@ const BannerAdView = props => {
38
41
  return null;
39
42
  }
40
43
  if (!visible || dismissed) return null;
41
-
42
- // Ensure ComponentName is defined for Android
43
- if (!ComponentName) {
44
- return null;
45
- }
46
- const BannerAdComponent = _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : () => {
44
+ if (!BannerAdNativeComponent) {
47
45
  throw new Error(LINKING_ERROR);
48
- };
49
- return /*#__PURE__*/_react.default.createElement(BannerAdComponent, {
46
+ }
47
+ return /*#__PURE__*/_react.default.createElement(BannerAdNativeComponent, {
50
48
  codeid: codeid,
51
49
  adWidth: adWidth,
52
50
  adHeight: height,
@@ -80,5 +78,5 @@ const BannerAdView = props => {
80
78
  }
81
79
  });
82
80
  };
83
- var _default = exports.default = BannerAdView;
81
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(BannerAdView);
84
82
  //# sourceMappingURL=BannerAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComponentName","Platform","select","android","ios","undefined","LINKING_ERROR","BannerAdView","props","codeid","style","adWidth","adHeight","onAdRenderSuccess","onAdError","onAdDismiss","onAdClick","onAdShow","onAdDislike","visible","dismissed","setDismissed","useState","height","setHeight","OS","BannerAdComponent","UIManager","getViewManagerConfig","requireNativeComponent","Error","createElement","width","nativeEvent","_default","exports"],"sourceRoot":"../../../../src","sources":["dy/component/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComponentName","Platform","select","android","ios","undefined","LINKING_ERROR","BannerAdNativeComponent","UIManager","getViewManagerConfig","requireNativeComponent","BannerAdView","props","codeid","style","adWidth","adHeight","onAdRenderSuccess","onAdError","onAdDismiss","onAdClick","onAdShow","onAdDislike","visible","dismissed","setDismissed","useState","height","setHeight","OS","Error","createElement","width","nativeEvent","_default","exports","React","memo"],"sourceRoot":"../../../../src","sources":["dy/component/BannerAd.tsx"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
16
16
  const {
17
17
  DrawFeedAdModule
18
18
  } = _reactNative.NativeModules;
19
- const LINKING_ERROR = `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
19
+ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
20
20
  ios: "- You have run 'pod install'\n",
21
21
  default: ''
22
22
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
@@ -24,7 +24,10 @@ const ComponentName = 'DrawFeedAdViewManager';
24
24
  const loadDrawFeedAd = info => {
25
25
  DrawFeedAdModule.loadDrawFeedAd(info);
26
26
  };
27
+
28
+ // Define native component at module level to avoid duplicate registration
27
29
  exports.loadDrawFeedAd = loadDrawFeedAd;
30
+ const DrawFeedAdNativeComponent = _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : undefined;
28
31
  const DrawFeedView = props => {
29
32
  const {
30
33
  codeid,
@@ -36,10 +39,10 @@ const DrawFeedView = props => {
36
39
  } = props;
37
40
  if (!visible) return null;
38
41
  const styleObj = style ? style : styles.container;
39
- const ViewView = _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : () => {
42
+ if (!DrawFeedAdNativeComponent) {
40
43
  throw new Error(LINKING_ERROR);
41
- };
42
- return /*#__PURE__*/_react.default.createElement(ViewView, {
44
+ }
45
+ return /*#__PURE__*/_react.default.createElement(DrawFeedAdNativeComponent, {
43
46
  codeid: codeid,
44
47
  onAdError: e => {
45
48
  console.log('onAdError DrawFeed', e.nativeEvent);
@@ -65,5 +68,5 @@ const styles = _reactNative.StyleSheet.create({
65
68
  width: '100%'
66
69
  }
67
70
  });
68
- var _default = exports.default = DrawFeedView;
71
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(DrawFeedView);
69
72
  //# sourceMappingURL=DrawFeedAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","DrawFeedAdModule","NativeModules","LINKING_ERROR","Platform","select","ios","ComponentName","loadDrawFeedAd","info","exports","DrawFeedView","props","codeid","onAdError","onAdShow","onAdClick","visible","style","styleObj","styles","container","ViewView","UIManager","getViewManagerConfig","requireNativeComponent","Error","createElement","console","log","nativeEvent","StyleSheet","create","flex","width","_default"],"sourceRoot":"../../../../src","sources":["dy/component/DrawFeedAd.tsx"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAbtB;AACA;AACA;AACA;AACA;;AAUA,MAAM;EAAEG;AAAiB,CAAC,GAAGC,0BAAa;AAE1C,MAAMC,aAAa,GACjB,4EAA4E,GAC5EC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEN,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMO,aAAa,GAAG,uBAAuB;AActC,MAAMC,cAAc,GAAIC,IAAuC,IAAK;EACzER,gBAAgB,CAACO,cAAc,CAACC,IAAI,CAAC;AACvC,CAAC;AAACC,OAAA,CAAAF,cAAA,GAAAA,cAAA;AAEK,MAAMG,YAAY,GAAIC,KAAsB,IAAK;EACtD,MAAM;IACJC,MAAM;IACNC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,OAAO,GAAG,IAAI;IACdC;EACF,CAAC,GAAGN,KAAK;EACT,IAAI,CAACK,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,QAAQ,GAAGD,KAAK,GAAGA,KAAK,GAAGE,MAAM,CAACC,SAAS;EACjD,MAAMC,QAAQ,GACZC,sBAAS,CAACC,oBAAoB,CAACjB,aAAa,CAAC,IAAI,IAAI,GACjD,IAAAkB,mCAAsB,EAAYlB,aAAa,CAAC,GAChD,MAAM;IACJ,MAAM,IAAImB,KAAK,CAACvB,aAAa,CAAC;EAChC,CAAC;EAEP,oBACET,MAAA,CAAAM,OAAA,CAAA2B,aAAA,CAACL,QAAQ;IACPT,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAGhB,CAAM,IAAK;MACrB8B,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE/B,CAAC,CAACgC,WAAW,CAAC;MAChDhB,SAAS,IAAIA,SAAS,CAAChB,CAAC,CAACgC,WAAW,CAAC;IACvC,CAAE;IACFd,SAAS,EAAGlB,CAAM,IAAK;MACrB8B,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE/B,CAAC,CAACgC,WAAW,CAAC;MAChDd,SAAS,IAAIA,SAAS,CAAClB,CAAC,CAACgC,WAAW,CAAC;IACvC,CAAE;IACFf,QAAQ,EAAGjB,CAAM,IAAK;MACpB8B,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAE/B,CAAC,CAACgC,WAAW,CAAC;MAC/Cf,QAAQ,IAAIA,QAAQ,CAACjB,CAAC,CAACgC,WAAW,CAAC;IACrC,CAAE;IACFZ,KAAK,EAAE;MAAE,GAAGC;IAAS;EAAE,CACxB,CAAC;AAEN,CAAC;AAACT,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEF,MAAMS,MAAM,GAAGW,uBAAU,CAACC,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAzB,OAAA,CAAAV,OAAA,GAEYW,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","e","__esModule","default","DrawFeedAdModule","NativeModules","LINKING_ERROR","Platform","select","ios","ComponentName","loadDrawFeedAd","info","exports","DrawFeedAdNativeComponent","UIManager","getViewManagerConfig","requireNativeComponent","undefined","DrawFeedView","props","codeid","onAdError","onAdShow","onAdClick","visible","style","styleObj","styles","container","Error","createElement","console","log","nativeEvent","StyleSheet","create","flex","width","_default","React","memo"],"sourceRoot":"../../../../src","sources":["dy/component/DrawFeedAd.tsx"],"mappings":";;;;;;AAKA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAOsB,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAbtB;AACA;AACA;AACA;AACA;;AAUA,MAAM;EAAEG;AAAiB,CAAC,GAAGC,0BAAa;AAE1C,MAAMC,aAAa,GACjB,kFAAkF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEN,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMO,aAAa,GAAG,uBAAuB;AActC,MAAMC,cAAc,GAAIC,IAAuC,IAAK;EACzER,gBAAgB,CAACO,cAAc,CAACC,IAAI,CAAC;AACvC,CAAC;;AAED;AAAAC,OAAA,CAAAF,cAAA,GAAAA,cAAA;AACA,MAAMG,yBAAyB,GAAGC,sBAAS,CAACC,oBAAoB,CAACN,aAAa,CAAC,IAAI,IAAI,GACnF,IAAAO,mCAAsB,EAAYP,aAAa,CAAC,GAChDQ,SAAS;AAEN,MAAMC,YAAY,GAAIC,KAAsB,IAAK;EACtD,MAAM;IACJC,MAAM;IACNC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,OAAO,GAAG,IAAI;IACdC;EACF,CAAC,GAAGN,KAAK;EACT,IAAI,CAACK,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,QAAQ,GAAGD,KAAK,GAAGA,KAAK,GAAGE,MAAM,CAACC,SAAS;EAEjD,IAAI,CAACf,yBAAyB,EAAE;IAC9B,MAAM,IAAIgB,KAAK,CAACxB,aAAa,CAAC;EAChC;EAEA,oBACET,MAAA,CAAAM,OAAA,CAAA4B,aAAA,CAACjB,yBAAyB;IACxBO,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAGrB,CAAM,IAAK;MACrB+B,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEhC,CAAC,CAACiC,WAAW,CAAC;MAChDZ,SAAS,IAAIA,SAAS,CAACrB,CAAC,CAACiC,WAAW,CAAC;IACvC,CAAE;IACFV,SAAS,EAAGvB,CAAM,IAAK;MACrB+B,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEhC,CAAC,CAACiC,WAAW,CAAC;MAChDV,SAAS,IAAIA,SAAS,CAACvB,CAAC,CAACiC,WAAW,CAAC;IACvC,CAAE;IACFX,QAAQ,EAAGtB,CAAM,IAAK;MACpB+B,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAEhC,CAAC,CAACiC,WAAW,CAAC;MAC/CX,QAAQ,IAAIA,QAAQ,CAACtB,CAAC,CAACiC,WAAW,CAAC;IACrC,CAAE;IACFR,KAAK,EAAE;MAAE,GAAGC;IAAS;EAAE,CACxB,CAAC;AAEN,CAAC;AAACd,OAAA,CAAAM,YAAA,GAAAA,YAAA;AAEF,MAAMS,MAAM,GAAGO,uBAAU,CAACC,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAA1B,OAAA,CAAAV,OAAA,gBAEYqC,cAAK,CAACC,IAAI,CAACtB,YAAY,CAAC","ignoreList":[]}
@@ -14,10 +14,13 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
14
14
  */
15
15
 
16
16
  const ComponentName = 'FeedAdViewManager';
17
- const LINKING_ERROR = `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
17
+ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
18
18
  ios: "- You have run 'pod install'\n",
19
19
  default: ''
20
20
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
21
+
22
+ // Define native component at module level to avoid duplicate registration
23
+ const FeedAdNativeComponent = _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : undefined;
21
24
  const FeedAdView = props => {
22
25
  const {
23
26
  codeid,
@@ -34,10 +37,10 @@ const FeedAdView = props => {
34
37
 
35
38
  // FeedAd是否显示,外部和内部均可控制,外部visible、内部closed
36
39
  if (!visible || closed) return null;
37
- const FeedAdComponent = _reactNative.UIManager.getViewManagerConfig(ComponentName) != null ? (0, _reactNative.requireNativeComponent)(ComponentName) : () => {
40
+ if (!FeedAdNativeComponent) {
38
41
  throw new Error(LINKING_ERROR);
39
- };
40
- return /*#__PURE__*/_react.default.createElement(FeedAdComponent, {
42
+ }
43
+ return /*#__PURE__*/_react.default.createElement(FeedAdNativeComponent, {
41
44
  codeid: codeid
42
45
  // 里面素材的宽度,减30是有些情况下,里面素材过宽贴边显示不全
43
46
  ,
@@ -67,5 +70,5 @@ const FeedAdView = props => {
67
70
  }
68
71
  });
69
72
  };
70
- var _default = exports.default = FeedAdView;
73
+ var _default = exports.default = /*#__PURE__*/_react.default.memo(FeedAdView);
71
74
  //# sourceMappingURL=FeedAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComponentName","LINKING_ERROR","Platform","select","ios","FeedAdView","props","codeid","style","adWidth","onAdLayout","onAdError","onAdClose","onAdClick","visible","closed","setClosed","useState","height","setHeight","FeedAdComponent","UIManager","getViewManagerConfig","requireNativeComponent","Error","createElement","width","nativeEvent","_default","exports"],"sourceRoot":"../../../../src","sources":["dy/component/FeedAd.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ComponentName","LINKING_ERROR","Platform","select","ios","FeedAdNativeComponent","UIManager","getViewManagerConfig","requireNativeComponent","undefined","FeedAdView","props","codeid","style","adWidth","onAdLayout","onAdError","onAdClose","onAdClick","visible","closed","setClosed","useState","height","setHeight","Error","createElement","width","nativeEvent","_default","exports","React","memo"],"sourceRoot":"../../../../src","sources":["dy/component/FeedAd.tsx"],"mappings":"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","ignoreList":[]}
@@ -18,7 +18,6 @@ export let AD_EVENT_TYPE = /*#__PURE__*/function (AD_EVENT_TYPE) {
18
18
  AD_EVENT_TYPE["onAdClose"] = "onAdClose"; // 广告关闭监听
19
19
  return AD_EVENT_TYPE;
20
20
  }({});
21
- let listenerCache = {};
22
21
  export default props => {
23
22
  const {
24
23
  provider,
@@ -26,6 +25,8 @@ export default props => {
26
25
  orientation = 'VERTICAL'
27
26
  } = props;
28
27
  const eventEmitter = new NativeEventEmitter(FullScreenVideoModule);
28
+ // Per-instance listener cache to avoid conflicts with multiple ads
29
+ const listenerCache = {};
29
30
  let result = FullScreenVideoModule.startAd({
30
31
  codeid,
31
32
  orientation,
@@ -34,15 +35,23 @@ export default props => {
34
35
  return {
35
36
  result,
36
37
  subscribe: (type, callback) => {
38
+ // Remove previous listener for this type in this instance only
37
39
  if (listenerCache[type]) {
38
40
  var _listenerCache$type;
39
41
  (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
40
- } else {
41
- console.warn(`Listener for ${type} not found in the cache.`);
42
42
  }
43
43
  return listenerCache[type] = eventEmitter.addListener('FullScreenVideo-' + type, event => {
44
44
  callback(event);
45
45
  });
46
+ },
47
+ // Provide cleanup method
48
+ cleanup: () => {
49
+ Object.values(listenerCache).forEach(subscription => {
50
+ subscription === null || subscription === void 0 || subscription.remove();
51
+ });
52
+ Object.keys(listenerCache).forEach(key => {
53
+ delete listenerCache[key];
54
+ });
46
55
  }
47
56
  };
48
57
  };
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NativeEventEmitter","FullScreenVideoModule","AD_EVENT_TYPE","listenerCache","props","provider","codeid","orientation","eventEmitter","result","startAd","subscribe","type","callback","_listenerCache$type","remove","console","warn","addListener","event"],"sourceRoot":"../../../../src","sources":["dy/api/FullScreenVideo.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAEhE,MAAM;EAAEC;AAAsB,CAAC,GAAGF,aAAa;AAE/C,WAAYG,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAiBzB,IAAIC,aAA4B,GAAG,CAAC,CAAkB;AAEtD,eAAgBC,KAAsB,IAAK;EACzC,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,WAAW,GAAG;EAAW,CAAC,GAAGH,KAAK;EAC5D,MAAMI,YAAY,GAAG,IAAIR,kBAAkB,CAACC,qBAAqB,CAAC;EAClE,IAAIQ,MAAM,GAAGR,qBAAqB,CAACS,OAAO,CAAC;IAAEJ,MAAM;IAAEC,WAAW;IAAEF;EAAS,CAAC,CAAC;EAC7E,OAAO;IACLI,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE,IAAIV,aAAa,CAACS,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAX,aAAa,CAACS,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLC,OAAO,CAACC,IAAI,CAAC,gBAAgBL,IAAI,0BAA0B,CAAC;MAC9D;MACA,OAAQT,aAAa,CAACS,IAAI,CAAC,GAAGJ,YAAY,CAACU,WAAW,CACpD,kBAAkB,GAAGN,IAAI,EACxBO,KAAU,IAAK;QACdN,QAAQ,CAACM,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","NativeEventEmitter","FullScreenVideoModule","AD_EVENT_TYPE","props","provider","codeid","orientation","eventEmitter","listenerCache","result","startAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","cleanup","Object","values","forEach","subscription","keys","key"],"sourceRoot":"../../../../src","sources":["dy/api/FullScreenVideo.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAEhE,MAAM;EAAEC;AAAsB,CAAC,GAAGF,aAAa;AAE/C,WAAYG,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAiBzB,eAAgBC,KAAsB,IAAK;EACzC,MAAM;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,WAAW,GAAG;EAAW,CAAC,GAAGH,KAAK;EAC5D,MAAMI,YAAY,GAAG,IAAIP,kBAAkB,CAACC,qBAAqB,CAAC;EAClE;EACA,MAAMO,aAA4B,GAAG,CAAC,CAAkB;EACxD,IAAIC,MAAM,GAAGR,qBAAqB,CAACS,OAAO,CAAC;IAAEL,MAAM;IAAEC,WAAW;IAAEF;EAAS,CAAC,CAAC;EAC7E,OAAO;IACLK,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGL,YAAY,CAACS,WAAW,CACpD,kBAAkB,GAAGJ,IAAI,EACxBK,KAAU,IAAK;QACdJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAC,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEP,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFI,MAAM,CAACI,IAAI,CAACf,aAAa,CAAC,CAACa,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOhB,aAAa,CAACgB,GAAG,CAAkB;MAC5C,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -12,22 +12,31 @@ export let AD_EVENT_TYPE = /*#__PURE__*/function (AD_EVENT_TYPE) {
12
12
  AD_EVENT_TYPE["onAdClose"] = "onAdClose"; // 广告关闭监听
13
13
  return AD_EVENT_TYPE;
14
14
  }({});
15
- let listenerCache = {};
16
15
  export default function (info) {
17
16
  const eventEmitter = new NativeEventEmitter(RewardVideoModule);
17
+ // Per-instance listener cache to avoid conflicts with multiple ads
18
+ const listenerCache = {};
18
19
  let result = RewardVideoModule.startAd(info);
19
20
  return {
20
21
  result,
21
22
  subscribe: (type, callback) => {
23
+ // Remove previous listener for this type in this instance only
22
24
  if (listenerCache[type]) {
23
25
  var _listenerCache$type;
24
26
  (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
25
- } else {
26
- console.warn(`Listener for ${type} not found in the cache.`);
27
27
  }
28
28
  return listenerCache[type] = eventEmitter.addListener('RewardVideo-' + type, event => {
29
29
  callback(event);
30
30
  });
31
+ },
32
+ // Provide cleanup method
33
+ cleanup: () => {
34
+ Object.values(listenerCache).forEach(subscription => {
35
+ subscription === null || subscription === void 0 || subscription.remove();
36
+ });
37
+ Object.keys(listenerCache).forEach(key => {
38
+ delete listenerCache[key];
39
+ });
31
40
  }
32
41
  };
33
42
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NativeEventEmitter","RewardVideoModule","AD_EVENT_TYPE","listenerCache","info","eventEmitter","result","startAd","subscribe","type","callback","_listenerCache$type","remove","console","warn","addListener","event"],"sourceRoot":"../../../../src","sources":["dy/api/RewardVideo.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAEhE,MAAM;EAAEC;AAAkB,CAAC,GAAGF,aAAa;AAC3C,WAAYG,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAWzB,IAAIC,aAA4B,GAAG,CAAC,CAAkB;AAMtD,eAAe,UAAUC,IAAgB,EAAE;EACzC,MAAMC,YAAY,GAAG,IAAIL,kBAAkB,CAACC,iBAAiB,CAAC;EAC9D,IAAIK,MAAM,GAAGL,iBAAiB,CAACM,OAAO,CAACH,IAAI,CAAC;EAC5C,OAAO;IACLE,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE,IAAIP,aAAa,CAACM,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAR,aAAa,CAACM,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B,CAAC,MAAM;QACLC,OAAO,CAACC,IAAI,CAAC,gBAAgBL,IAAI,0BAA0B,CAAC;MAC9D;MACA,OAAQN,aAAa,CAACM,IAAI,CAAC,GAAGJ,YAAY,CAACU,WAAW,CACpD,cAAc,GAAGN,IAAI,EACpBO,KAAU,IAAK;QACdN,QAAQ,CAACM,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","NativeEventEmitter","RewardVideoModule","AD_EVENT_TYPE","info","eventEmitter","listenerCache","result","startAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","cleanup","Object","values","forEach","subscription","keys","key"],"sourceRoot":"../../../../src","sources":["dy/api/RewardVideo.ts"],"mappings":"AAAA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAEhE,MAAM;EAAEC;AAAkB,CAAC,GAAGF,aAAa;AAC3C,WAAYG,aAAa,0BAAbA,aAAa;EAAbA,aAAa;EACE;EADfA,aAAa;EAEI;EAFjBA,aAAa;EAGE;EAHfA,aAAa,6BAIE;EAAA,OAJfA,aAAa;AAAA;AAezB,eAAe,UAAUC,IAAgB,EAAE;EACzC,MAAMC,YAAY,GAAG,IAAIJ,kBAAkB,CAACC,iBAAiB,CAAC;EAC9D;EACA,MAAMI,aAA4B,GAAG,CAAC,CAAkB;EACxD,IAAIC,MAAM,GAAGL,iBAAiB,CAACM,OAAO,CAACJ,IAAI,CAAC;EAC5C,OAAO;IACLG,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAmB,EAAEC,QAA8B,KAAK;MAClE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGL,YAAY,CAACS,WAAW,CACpD,cAAc,GAAGJ,IAAI,EACpBK,KAAU,IAAK;QACdJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAC,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACZ,aAAa,CAAC,CAACa,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAEP,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFI,MAAM,CAACI,IAAI,CAACf,aAAa,CAAC,CAACa,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOhB,aAAa,CAACgB,GAAG,CAAkB;MAC5C,CAAC,CAAC;IACJ;EACF,CAAC;AACH","ignoreList":[]}
@@ -7,12 +7,13 @@ import { NativeModules, NativeEventEmitter } from 'react-native';
7
7
  const {
8
8
  SplashAd
9
9
  } = NativeModules;
10
- const listenerCache = {};
11
10
  const dyLoadSplashAd = ({
12
11
  codeid,
13
12
  anim = 'default'
14
13
  }) => {
15
14
  const eventEmitter = new NativeEventEmitter(SplashAd);
15
+ // Per-instance listener cache to avoid conflicts with multiple ads
16
+ const listenerCache = {};
16
17
  let result = SplashAd.loadSplashAd({
17
18
  codeid,
18
19
  anim
@@ -20,14 +21,25 @@ const dyLoadSplashAd = ({
20
21
  return {
21
22
  result,
22
23
  subscribe: (type, callback) => {
24
+ // Remove previous listener for this type in this instance only
23
25
  if (listenerCache[type]) {
24
- listenerCache[type].remove();
26
+ var _listenerCache$type;
27
+ (_listenerCache$type = listenerCache[type]) === null || _listenerCache$type === void 0 || _listenerCache$type.remove();
25
28
  }
26
29
  return listenerCache[type] = eventEmitter.addListener('SplashAd-' + type, event => {
27
30
  console.log('SplashAd event type ', type);
28
31
  console.log('SplashAd event ', event);
29
32
  callback(event);
30
33
  });
34
+ },
35
+ // Provide cleanup method
36
+ cleanup: () => {
37
+ Object.values(listenerCache).forEach(subscription => {
38
+ subscription === null || subscription === void 0 || subscription.remove();
39
+ });
40
+ Object.keys(listenerCache).forEach(key => {
41
+ delete listenerCache[key];
42
+ });
31
43
  }
32
44
  };
33
45
  };
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","NativeEventEmitter","SplashAd","listenerCache","dyLoadSplashAd","codeid","anim","eventEmitter","result","loadSplashAd","subscribe","type","callback","remove","addListener","event","console","log"],"sourceRoot":"../../../../src","sources":["dy/api/SplashAd.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAChE,MAAM;EAAEC;AAAS,CAAC,GAAGF,aAAa;AAclC,MAAMG,aAAkB,GAAG,CAAC,CAAC;AAE7B,MAAMC,cAAc,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI,GAAG;AAA+B,CAAC,KAAK;EAC5E,MAAMC,YAAY,GAAG,IAAIN,kBAAkB,CAACC,QAAQ,CAAC;EACrD,IAAIM,MAAM,GAAGN,QAAQ,CAACO,YAAY,CAAC;IAAEJ,MAAM;IAAEC;EAAK,CAAC,CAAC;EACpD,OAAO;IACLE,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAyB,EAAEC,QAA8B,KAAK;MACxE,IAAIT,aAAa,CAACQ,IAAI,CAAC,EAAE;QACvBR,aAAa,CAACQ,IAAI,CAAC,CAACE,MAAM,CAAC,CAAC;MAC9B;MACA,OAAQV,aAAa,CAACQ,IAAI,CAAC,GAAGJ,YAAY,CAACO,WAAW,CACpD,WAAW,GAAGH,IAAI,EACjBI,KAAU,IAAK;QACdC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEN,IAAI,CAAC;QACzCK,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEF,KAAK,CAAC;QACrCH,QAAQ,CAACG,KAAK,CAAC;MACjB,CACF,CAAC;IACH;EACF,CAAC;AACH,CAAC;AACD,SAASX,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","NativeEventEmitter","SplashAd","dyLoadSplashAd","codeid","anim","eventEmitter","listenerCache","result","loadSplashAd","subscribe","type","callback","_listenerCache$type","remove","addListener","event","console","log","cleanup","Object","values","forEach","subscription","keys","key"],"sourceRoot":"../../../../src","sources":["dy/api/SplashAd.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,kBAAkB,QAAQ,cAAc;AAEhE,MAAM;EAAEC;AAAS,CAAC,GAAGF,aAAa;AAclC,MAAMG,cAAc,GAAGA,CAAC;EAAEC,MAAM;EAAEC,IAAI,GAAG;AAA+B,CAAC,KAAK;EAC5E,MAAMC,YAAY,GAAG,IAAIL,kBAAkB,CAACC,QAAQ,CAAC;EACrD;EACA,MAAMK,aAA4D,GAAG,CAAC,CAAC;EACvE,IAAIC,MAAM,GAAGN,QAAQ,CAACO,YAAY,CAAC;IAAEL,MAAM;IAAEC;EAAK,CAAC,CAAC;EACpD,OAAO;IACLG,MAAM;IACNE,SAAS,EAAEA,CAACC,IAAyB,EAAEC,QAA8B,KAAK;MACxE;MACA,IAAIL,aAAa,CAACI,IAAI,CAAC,EAAE;QAAA,IAAAE,mBAAA;QACvB,CAAAA,mBAAA,GAAAN,aAAa,CAACI,IAAI,CAAC,cAAAE,mBAAA,eAAnBA,mBAAA,CAAqBC,MAAM,CAAC,CAAC;MAC/B;MACA,OAAQP,aAAa,CAACI,IAAI,CAAC,GAAGL,YAAY,CAACS,WAAW,CACpD,WAAW,GAAGJ,IAAI,EACjBK,KAAU,IAAK;QACdC,OAAO,CAACC,GAAG,CAAC,sBAAsB,EAAEP,IAAI,CAAC;QACzCM,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEF,KAAK,CAAC;QACrCJ,QAAQ,CAACI,KAAK,CAAC;MACjB,CACF,CAAC;IACH,CAAC;IACD;IACAG,OAAO,EAAEA,CAAA,KAAM;MACbC,MAAM,CAACC,MAAM,CAACd,aAAa,CAAC,CAACe,OAAO,CAAEC,YAAY,IAAK;QACrDA,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAET,MAAM,CAAC,CAAC;MACxB,CAAC,CAAC;MACFM,MAAM,CAACI,IAAI,CAACjB,aAAa,CAAC,CAACe,OAAO,CAAEG,GAAG,IAAK;QAC1C,OAAOlB,aAAa,CAACkB,GAAG,CAAC;MAC3B,CAAC,CAAC;IACJ;EACF,CAAC;AACH,CAAC;AACD,SAAStB,cAAc","ignoreList":[]}
@@ -9,6 +9,9 @@ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be
9
9
  ios: "- You have run 'pod install'\n",
10
10
  default: ''
11
11
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n' + '\nNote: BannerAd is currently only supported on Android platform.';
12
+
13
+ // Define native component at module level to avoid duplicate registration
14
+ const BannerAdNativeComponent = ComponentName && UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : undefined;
12
15
  const BannerAdView = props => {
13
16
  const {
14
17
  codeid,
@@ -31,15 +34,10 @@ const BannerAdView = props => {
31
34
  return null;
32
35
  }
33
36
  if (!visible || dismissed) return null;
34
-
35
- // Ensure ComponentName is defined for Android
36
- if (!ComponentName) {
37
- return null;
38
- }
39
- const BannerAdComponent = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : () => {
37
+ if (!BannerAdNativeComponent) {
40
38
  throw new Error(LINKING_ERROR);
41
- };
42
- return /*#__PURE__*/React.createElement(BannerAdComponent, {
39
+ }
40
+ return /*#__PURE__*/React.createElement(BannerAdNativeComponent, {
43
41
  codeid: codeid,
44
42
  adWidth: adWidth,
45
43
  adHeight: height,
@@ -73,5 +71,5 @@ const BannerAdView = props => {
73
71
  }
74
72
  });
75
73
  };
76
- export default BannerAdView;
74
+ export default /*#__PURE__*/React.memo(BannerAdView);
77
75
  //# sourceMappingURL=BannerAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Platform","requireNativeComponent","UIManager","ComponentName","select","android","ios","undefined","LINKING_ERROR","default","BannerAdView","props","codeid","style","adWidth","adHeight","onAdRenderSuccess","onAdError","onAdDismiss","onAdClick","onAdShow","onAdDislike","visible","dismissed","setDismissed","height","setHeight","OS","BannerAdComponent","getViewManagerConfig","Error","createElement","width","e","nativeEvent"],"sourceRoot":"../../../../src","sources":["dy/component/BannerAd.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,QAAQ,EAAEC,sBAAsB,EAAEC,SAAS,QAAQ,cAAc;AAG1E;AACA,MAAMC,aAAa,GAAGH,QAAQ,CAACI,MAAM,CAAC;EACpCC,OAAO,EAAE,4BAA4B;EACrCC,GAAG,EAAEC;AACP,CAAC,CAAuB;AAgBxB,MAAMC,aAAa,GACjB,kFAAkF,GAClFR,QAAQ,CAACI,MAAM,CAAC;EAAEE,GAAG,EAAE,gCAAgC;EAAEG,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B,GAC/B,mEAAmE;AAErE,MAAMC,YAAY,GAAIC,KAAoB,IAAK;EAC7C,MAAM;IACJC,MAAM;IACNC,KAAK;IACLC,OAAO,GAAG,GAAG;IACbC,QAAQ,GAAG,EAAE;IACbC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,WAAW;IACXC,OAAO,GAAG;EACZ,CAAC,GAAGX,KAAK;EAET,MAAM,CAACY,SAAS,EAAEC,YAAY,CAAC,GAAGzB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC0B,MAAM,EAAEC,SAAS,CAAC,GAAG3B,QAAQ,CAACgB,QAAQ,CAAC;;EAE9C;EACA,IAAIf,QAAQ,CAAC2B,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAO,IAAI;EACb;EAEA,IAAI,CAACL,OAAO,IAAIC,SAAS,EAAE,OAAO,IAAI;;EAEtC;EACA,IAAI,CAACpB,aAAa,EAAE;IAClB,OAAO,IAAI;EACb;EAEA,MAAMyB,iBAAiB,GACrB1B,SAAS,CAAC2B,oBAAoB,CAAC1B,aAAa,CAAC,IAAI,IAAI,GACjDF,sBAAsB,CAAgBE,aAAa,CAAC,GACpD,MAAM;IACJ,MAAM,IAAI2B,KAAK,CAACtB,aAAa,CAAC;EAChC,CAAC;EAEP,oBACEV,KAAA,CAAAiC,aAAA,CAACH,iBAAiB;IAChBhB,MAAM,EAAEA,MAAO;IACfE,OAAO,EAAEA,OAAQ;IACjBC,QAAQ,EAAEU,MAAO;IACjBZ,KAAK,EAAE;MAAEmB,KAAK,EAAElB,OAAO;MAAEW,MAAM;MAAE,GAAGZ;IAAM,CAAE;IAC5CI,SAAS,EAAGgB,CAAM,IAAK;MACrBhB,SAAS,IAAIA,SAAS,CAACgB,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFf,SAAS,EAAGc,CAAM,IAAK;MACrBd,SAAS,IAAIA,SAAS,CAACc,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFhB,WAAW,EAAGe,CAAM,IAAK;MACvBT,YAAY,CAAC,IAAI,CAAC;MAClBN,WAAW,IAAIA,WAAW,CAACe,CAAC,CAACC,WAAW,CAAC;IAC3C,CAAE;IACFd,QAAQ,EAAGa,CAAM,IAAK;MACpBb,QAAQ,IAAIA,QAAQ,CAACa,CAAC,CAACC,WAAW,CAAC;IACrC,CAAE;IACFlB,iBAAiB,EAAGiB,CAAM,IAAK;MAC7B,IAAIA,CAAC,CAACC,WAAW,CAACT,MAAM,EAAE;QACxBC,SAAS,CAACO,CAAC,CAACC,WAAW,CAACT,MAAM,GAAG,EAAE,CAAC;QACpCT,iBAAiB,IAAIA,iBAAiB,CAACiB,CAAC,CAACC,WAAW,CAAC;MACvD;IACF,CAAE;IACFb,WAAW,EAAGY,CAAM,IAAK;MACvBT,YAAY,CAAC,IAAI,CAAC;MAClBH,WAAW,IAAIA,WAAW,CAACY,CAAC,CAACC,WAAW,CAAC;IAC3C;EAAE,CACH,CAAC;AAEN,CAAC;AAED,eAAexB,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","Platform","requireNativeComponent","UIManager","ComponentName","select","android","ios","undefined","LINKING_ERROR","default","BannerAdNativeComponent","getViewManagerConfig","BannerAdView","props","codeid","style","adWidth","adHeight","onAdRenderSuccess","onAdError","onAdDismiss","onAdClick","onAdShow","onAdDislike","visible","dismissed","setDismissed","height","setHeight","OS","Error","createElement","width","e","nativeEvent","memo"],"sourceRoot":"../../../../src","sources":["dy/component/BannerAd.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,QAAQ,EAAEC,sBAAsB,EAAEC,SAAS,QAAQ,cAAc;AAG1E;AACA,MAAMC,aAAa,GAAGH,QAAQ,CAACI,MAAM,CAAC;EACpCC,OAAO,EAAE,4BAA4B;EACrCC,GAAG,EAAEC;AACP,CAAC,CAAuB;AAgBxB,MAAMC,aAAa,GACjB,kFAAkF,GAClFR,QAAQ,CAACI,MAAM,CAAC;EAAEE,GAAG,EAAE,gCAAgC;EAAEG,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B,GAC/B,mEAAmE;;AAErE;AACA,MAAMC,uBAAuB,GAAGP,aAAa,IAAID,SAAS,CAACS,oBAAoB,CAACR,aAAa,CAAC,IAAI,IAAI,GAClGF,sBAAsB,CAAgBE,aAAa,CAAC,GACpDI,SAAS;AAEb,MAAMK,YAAY,GAAIC,KAAoB,IAAK;EAC7C,MAAM;IACJC,MAAM;IACNC,KAAK;IACLC,OAAO,GAAG,GAAG;IACbC,QAAQ,GAAG,EAAE;IACbC,iBAAiB;IACjBC,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,WAAW;IACXC,OAAO,GAAG;EACZ,CAAC,GAAGX,KAAK;EAET,MAAM,CAACY,SAAS,EAAEC,YAAY,CAAC,GAAG3B,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAM,CAAC4B,MAAM,EAAEC,SAAS,CAAC,GAAG7B,QAAQ,CAACkB,QAAQ,CAAC;;EAE9C;EACA,IAAIjB,QAAQ,CAAC6B,EAAE,KAAK,SAAS,EAAE;IAC7B,OAAO,IAAI;EACb;EAEA,IAAI,CAACL,OAAO,IAAIC,SAAS,EAAE,OAAO,IAAI;EAEtC,IAAI,CAACf,uBAAuB,EAAE;IAC5B,MAAM,IAAIoB,KAAK,CAACtB,aAAa,CAAC;EAChC;EAEA,oBACEV,KAAA,CAAAiC,aAAA,CAACrB,uBAAuB;IACtBI,MAAM,EAAEA,MAAO;IACfE,OAAO,EAAEA,OAAQ;IACjBC,QAAQ,EAAEU,MAAO;IACjBZ,KAAK,EAAE;MAAEiB,KAAK,EAAEhB,OAAO;MAAEW,MAAM;MAAE,GAAGZ;IAAM,CAAE;IAC5CI,SAAS,EAAGc,CAAM,IAAK;MACrBd,SAAS,IAAIA,SAAS,CAACc,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFb,SAAS,EAAGY,CAAM,IAAK;MACrBZ,SAAS,IAAIA,SAAS,CAACY,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFd,WAAW,EAAGa,CAAM,IAAK;MACvBP,YAAY,CAAC,IAAI,CAAC;MAClBN,WAAW,IAAIA,WAAW,CAACa,CAAC,CAACC,WAAW,CAAC;IAC3C,CAAE;IACFZ,QAAQ,EAAGW,CAAM,IAAK;MACpBX,QAAQ,IAAIA,QAAQ,CAACW,CAAC,CAACC,WAAW,CAAC;IACrC,CAAE;IACFhB,iBAAiB,EAAGe,CAAM,IAAK;MAC7B,IAAIA,CAAC,CAACC,WAAW,CAACP,MAAM,EAAE;QACxBC,SAAS,CAACK,CAAC,CAACC,WAAW,CAACP,MAAM,GAAG,EAAE,CAAC;QACpCT,iBAAiB,IAAIA,iBAAiB,CAACe,CAAC,CAACC,WAAW,CAAC;MACvD;IACF,CAAE;IACFX,WAAW,EAAGU,CAAM,IAAK;MACvBP,YAAY,CAAC,IAAI,CAAC;MAClBH,WAAW,IAAIA,WAAW,CAACU,CAAC,CAACC,WAAW,CAAC;IAC3C;EAAE,CACH,CAAC;AAEN,CAAC;AAED,4BAAepC,KAAK,CAACqC,IAAI,CAACvB,YAAY,CAAC","ignoreList":[]}
@@ -8,7 +8,7 @@ import { UIManager, StyleSheet, NativeModules, Platform, requireNativeComponent
8
8
  const {
9
9
  DrawFeedAdModule
10
10
  } = NativeModules;
11
- const LINKING_ERROR = `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
11
+ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
12
12
  ios: "- You have run 'pod install'\n",
13
13
  default: ''
14
14
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
@@ -16,6 +16,9 @@ const ComponentName = 'DrawFeedAdViewManager';
16
16
  export const loadDrawFeedAd = info => {
17
17
  DrawFeedAdModule.loadDrawFeedAd(info);
18
18
  };
19
+
20
+ // Define native component at module level to avoid duplicate registration
21
+ const DrawFeedAdNativeComponent = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : undefined;
19
22
  export const DrawFeedView = props => {
20
23
  const {
21
24
  codeid,
@@ -27,10 +30,10 @@ export const DrawFeedView = props => {
27
30
  } = props;
28
31
  if (!visible) return null;
29
32
  const styleObj = style ? style : styles.container;
30
- const ViewView = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : () => {
33
+ if (!DrawFeedAdNativeComponent) {
31
34
  throw new Error(LINKING_ERROR);
32
- };
33
- return /*#__PURE__*/React.createElement(ViewView, {
35
+ }
36
+ return /*#__PURE__*/React.createElement(DrawFeedAdNativeComponent, {
34
37
  codeid: codeid,
35
38
  onAdError: e => {
36
39
  console.log('onAdError DrawFeed', e.nativeEvent);
@@ -55,5 +58,5 @@ const styles = StyleSheet.create({
55
58
  width: '100%'
56
59
  }
57
60
  });
58
- export default DrawFeedView;
61
+ export default /*#__PURE__*/React.memo(DrawFeedView);
59
62
  //# sourceMappingURL=DrawFeedAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","UIManager","StyleSheet","NativeModules","Platform","requireNativeComponent","DrawFeedAdModule","LINKING_ERROR","select","ios","default","ComponentName","loadDrawFeedAd","info","DrawFeedView","props","codeid","onAdError","onAdShow","onAdClick","visible","style","styleObj","styles","container","ViewView","getViewManagerConfig","Error","createElement","e","console","log","nativeEvent","create","flex","width"],"sourceRoot":"../../../../src","sources":["dy/component/DrawFeedAd.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAEEC,SAAS,EACTC,UAAU,EACVC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,QACjB,cAAc;AACrB,MAAM;EAAEC;AAAiB,CAAC,GAAGH,aAAa;AAE1C,MAAMI,aAAa,GACjB,4EAA4E,GAC5EH,QAAQ,CAACI,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,aAAa,GAAG,uBAAuB;AAc7C,OAAO,MAAMC,cAAc,GAAIC,IAAuC,IAAK;EACzEP,gBAAgB,CAACM,cAAc,CAACC,IAAI,CAAC;AACvC,CAAC;AAED,OAAO,MAAMC,YAAY,GAAIC,KAAsB,IAAK;EACtD,MAAM;IACJC,MAAM;IACNC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,OAAO,GAAG,IAAI;IACdC;EACF,CAAC,GAAGN,KAAK;EACT,IAAI,CAACK,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,QAAQ,GAAGD,KAAK,GAAGA,KAAK,GAAGE,MAAM,CAACC,SAAS;EACjD,MAAMC,QAAQ,GACZxB,SAAS,CAACyB,oBAAoB,CAACf,aAAa,CAAC,IAAI,IAAI,GACjDN,sBAAsB,CAAYM,aAAa,CAAC,GAChD,MAAM;IACJ,MAAM,IAAIgB,KAAK,CAACpB,aAAa,CAAC;EAChC,CAAC;EAEP,oBACEP,KAAA,CAAA4B,aAAA,CAACH,QAAQ;IACPT,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAGY,CAAM,IAAK;MACrBC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAChDf,SAAS,IAAIA,SAAS,CAACY,CAAC,CAACG,WAAW,CAAC;IACvC,CAAE;IACFb,SAAS,EAAGU,CAAM,IAAK;MACrBC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAChDb,SAAS,IAAIA,SAAS,CAACU,CAAC,CAACG,WAAW,CAAC;IACvC,CAAE;IACFd,QAAQ,EAAGW,CAAM,IAAK;MACpBC,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAC/Cd,QAAQ,IAAIA,QAAQ,CAACW,CAAC,CAACG,WAAW,CAAC;IACrC,CAAE;IACFX,KAAK,EAAE;MAAE,GAAGC;IAAS;EAAE,CACxB,CAAC;AAEN,CAAC;AAED,MAAMC,MAAM,GAAGrB,UAAU,CAAC+B,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,eAAerB,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["React","UIManager","StyleSheet","NativeModules","Platform","requireNativeComponent","DrawFeedAdModule","LINKING_ERROR","select","ios","default","ComponentName","loadDrawFeedAd","info","DrawFeedAdNativeComponent","getViewManagerConfig","undefined","DrawFeedView","props","codeid","onAdError","onAdShow","onAdClick","visible","style","styleObj","styles","container","Error","createElement","e","console","log","nativeEvent","create","flex","width","memo"],"sourceRoot":"../../../../src","sources":["dy/component/DrawFeedAd.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAEEC,SAAS,EACTC,UAAU,EACVC,aAAa,EACbC,QAAQ,EACRC,sBAAsB,QACjB,cAAc;AACrB,MAAM;EAAEC;AAAiB,CAAC,GAAGH,aAAa;AAE1C,MAAMI,aAAa,GACjB,kFAAkF,GAClFH,QAAQ,CAACI,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,aAAa,GAAG,uBAAuB;AAc7C,OAAO,MAAMC,cAAc,GAAIC,IAAuC,IAAK;EACzEP,gBAAgB,CAACM,cAAc,CAACC,IAAI,CAAC;AACvC,CAAC;;AAED;AACA,MAAMC,yBAAyB,GAAGb,SAAS,CAACc,oBAAoB,CAACJ,aAAa,CAAC,IAAI,IAAI,GACnFN,sBAAsB,CAAYM,aAAa,CAAC,GAChDK,SAAS;AAEb,OAAO,MAAMC,YAAY,GAAIC,KAAsB,IAAK;EACtD,MAAM;IACJC,MAAM;IACNC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,OAAO,GAAG,IAAI;IACdC;EACF,CAAC,GAAGN,KAAK;EACT,IAAI,CAACK,OAAO,EAAE,OAAO,IAAI;EAEzB,MAAME,QAAQ,GAAGD,KAAK,GAAGA,KAAK,GAAGE,MAAM,CAACC,SAAS;EAEjD,IAAI,CAACb,yBAAyB,EAAE;IAC9B,MAAM,IAAIc,KAAK,CAACrB,aAAa,CAAC;EAChC;EAEA,oBACEP,KAAA,CAAA6B,aAAA,CAACf,yBAAyB;IACxBK,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAGU,CAAM,IAAK;MACrBC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAChDb,SAAS,IAAIA,SAAS,CAACU,CAAC,CAACG,WAAW,CAAC;IACvC,CAAE;IACFX,SAAS,EAAGQ,CAAM,IAAK;MACrBC,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAChDX,SAAS,IAAIA,SAAS,CAACQ,CAAC,CAACG,WAAW,CAAC;IACvC,CAAE;IACFZ,QAAQ,EAAGS,CAAM,IAAK;MACpBC,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAEF,CAAC,CAACG,WAAW,CAAC;MAC/CZ,QAAQ,IAAIA,QAAQ,CAACS,CAAC,CAACG,WAAW,CAAC;IACrC,CAAE;IACFT,KAAK,EAAE;MAAE,GAAGC;IAAS;EAAE,CACxB,CAAC;AAEN,CAAC;AAED,MAAMC,MAAM,GAAGxB,UAAU,CAACgC,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE;EACT;AACF,CAAC,CAAC;AAEF,4BAAepC,KAAK,CAACqC,IAAI,CAACpB,YAAY,CAAC","ignoreList":[]}
@@ -6,10 +6,13 @@
6
6
  import React, { useState } from 'react';
7
7
  import { Platform, requireNativeComponent, UIManager } from 'react-native';
8
8
  const ComponentName = 'FeedAdViewManager';
9
- const LINKING_ERROR = `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
9
+ const LINKING_ERROR = `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
10
10
  ios: "- You have run 'pod install'\n",
11
11
  default: ''
12
12
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
13
+
14
+ // Define native component at module level to avoid duplicate registration
15
+ const FeedAdNativeComponent = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : undefined;
13
16
  const FeedAdView = props => {
14
17
  const {
15
18
  codeid,
@@ -26,10 +29,10 @@ const FeedAdView = props => {
26
29
 
27
30
  // FeedAd是否显示,外部和内部均可控制,外部visible、内部closed
28
31
  if (!visible || closed) return null;
29
- const FeedAdComponent = UIManager.getViewManagerConfig(ComponentName) != null ? requireNativeComponent(ComponentName) : () => {
32
+ if (!FeedAdNativeComponent) {
30
33
  throw new Error(LINKING_ERROR);
31
- };
32
- return /*#__PURE__*/React.createElement(FeedAdComponent, {
34
+ }
35
+ return /*#__PURE__*/React.createElement(FeedAdNativeComponent, {
33
36
  codeid: codeid
34
37
  // 里面素材的宽度,减30是有些情况下,里面素材过宽贴边显示不全
35
38
  ,
@@ -59,5 +62,5 @@ const FeedAdView = props => {
59
62
  }
60
63
  });
61
64
  };
62
- export default FeedAdView;
65
+ export default /*#__PURE__*/React.memo(FeedAdView);
63
66
  //# sourceMappingURL=FeedAd.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useState","Platform","requireNativeComponent","UIManager","ComponentName","LINKING_ERROR","select","ios","default","FeedAdView","props","codeid","style","adWidth","onAdLayout","onAdError","onAdClose","onAdClick","visible","closed","setClosed","height","setHeight","FeedAdComponent","getViewManagerConfig","Error","createElement","width","e","nativeEvent"],"sourceRoot":"../../../../src","sources":["dy/component/FeedAd.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,QAAQ,EAAEC,sBAAsB,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,aAAa,GAAG,mBAAmB;AAazC,MAAMC,aAAa,GACjB,4EAA4E,GAC5EJ,QAAQ,CAACK,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,UAAU,GAAIC,KAAkB,IAAK;EACzC,MAAM;IACJC,MAAM;IACNC,KAAK;IACLC,OAAO,GAAG,GAAG;IACbC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,OAAO,GAAG;EACZ,CAAC,GAAGR,KAAK;EAET,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM,CAACqB,MAAM,EAAEC,SAAS,CAAC,GAAGtB,QAAQ,CAAC,CAAC,CAAC;;EAEvC;EACA,IAAI,CAACkB,OAAO,IAAIC,MAAM,EAAE,OAAO,IAAI;EAEnC,MAAMI,eAAe,GACnBpB,SAAS,CAACqB,oBAAoB,CAACpB,aAAa,CAAC,IAAI,IAAI,GACjDF,sBAAsB,CAAcE,aAAa,CAAC,GAClD,MAAM;IACJ,MAAM,IAAIqB,KAAK,CAACpB,aAAa,CAAC;EAChC,CAAC;EACP,oBACEN,KAAA,CAAA2B,aAAA,CAACH,eAAe;IACdZ,MAAM,EAAEA;IACR;IAAA;IACAE,OAAO,EAAEA,OAAO,GAAG;IACnB;IAAA;IACAD,KAAK,EAAE;MAAEe,KAAK,EAAEd,OAAO;MAAEQ,MAAM;MAAE,GAAGT;IAAM,CAAE;IAC5CG,SAAS,EAAGa,CAAM,IAAK;MACrBb,SAAS,IAAIA,SAAS,CAACa,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFZ,SAAS,EAAGW,CAAM,IAAK;MACrBX,SAAS,IAAIA,SAAS,CAACW,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFb,SAAS,EAAGY,CAAM,IAAK;MACrBR,SAAS,CAAC,IAAI,CAAC;MACfJ,SAAS,IAAIA,SAAS,CAACY,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFf,UAAU,EAAGc,CAAM,IAAK;MACtB,IAAIA,CAAC,CAACC,WAAW,CAACR,MAAM,EAAE;QACxBC,SAAS,CAACM,CAAC,CAACC,WAAW,CAACR,MAAM,GAAG,EAAE,CAAC;QACpCP,UAAU,IAAIA,UAAU,CAACc,CAAC,CAACC,WAAW,CAAC;MACzC;IACF;EAAE,CACH,CAAC;AAEN,CAAC;AACD,eAAepB,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["React","useState","Platform","requireNativeComponent","UIManager","ComponentName","LINKING_ERROR","select","ios","default","FeedAdNativeComponent","getViewManagerConfig","undefined","FeedAdView","props","codeid","style","adWidth","onAdLayout","onAdError","onAdClose","onAdClick","visible","closed","setClosed","height","setHeight","Error","createElement","width","e","nativeEvent","memo"],"sourceRoot":"../../../../src","sources":["dy/component/FeedAd.tsx"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,QAAQ,EAAEC,sBAAsB,EAAEC,SAAS,QAAQ,cAAc;AAG1E,MAAMC,aAAa,GAAG,mBAAmB;AAazC,MAAMC,aAAa,GACjB,kFAAkF,GAClFJ,QAAQ,CAACK,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;;AAEjC;AACA,MAAMC,qBAAqB,GAAGN,SAAS,CAACO,oBAAoB,CAACN,aAAa,CAAC,IAAI,IAAI,GAC/EF,sBAAsB,CAAcE,aAAa,CAAC,GAClDO,SAAS;AAEb,MAAMC,UAAU,GAAIC,KAAkB,IAAK;EACzC,MAAM;IACJC,MAAM;IACNC,KAAK;IACLC,OAAO,GAAG,GAAG;IACbC,UAAU;IACVC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,OAAO,GAAG;EACZ,CAAC,GAAGR,KAAK;EAET,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAGvB,QAAQ,CAAC,KAAK,CAAC;EAC3C,MAAM,CAACwB,MAAM,EAAEC,SAAS,CAAC,GAAGzB,QAAQ,CAAC,CAAC,CAAC;;EAEvC;EACA,IAAI,CAACqB,OAAO,IAAIC,MAAM,EAAE,OAAO,IAAI;EAEnC,IAAI,CAACb,qBAAqB,EAAE;IAC1B,MAAM,IAAIiB,KAAK,CAACrB,aAAa,CAAC;EAChC;EAEA,oBACEN,KAAA,CAAA4B,aAAA,CAAClB,qBAAqB;IACpBK,MAAM,EAAEA;IACR;IAAA;IACAE,OAAO,EAAEA,OAAO,GAAG;IACnB;IAAA;IACAD,KAAK,EAAE;MAAEa,KAAK,EAAEZ,OAAO;MAAEQ,MAAM;MAAE,GAAGT;IAAM,CAAE;IAC5CG,SAAS,EAAGW,CAAM,IAAK;MACrBX,SAAS,IAAIA,SAAS,CAACW,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFV,SAAS,EAAGS,CAAM,IAAK;MACrBT,SAAS,IAAIA,SAAS,CAACS,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFX,SAAS,EAAGU,CAAM,IAAK;MACrBN,SAAS,CAAC,IAAI,CAAC;MACfJ,SAAS,IAAIA,SAAS,CAACU,CAAC,CAACC,WAAW,CAAC;IACvC,CAAE;IACFb,UAAU,EAAGY,CAAM,IAAK;MACtB,IAAIA,CAAC,CAACC,WAAW,CAACN,MAAM,EAAE;QACxBC,SAAS,CAACI,CAAC,CAACC,WAAW,CAACN,MAAM,GAAG,EAAE,CAAC;QACpCP,UAAU,IAAIA,UAAU,CAACY,CAAC,CAACC,WAAW,CAAC;MACzC;IACF;EAAE,CACH,CAAC;AAEN,CAAC;AAED,4BAAe/B,KAAK,CAACgC,IAAI,CAACnB,UAAU,CAAC","ignoreList":[]}
@@ -17,6 +17,7 @@ interface FullScreenProps {
17
17
  declare const _default: (props: FullScreenProps) => {
18
18
  result: any;
19
19
  subscribe: (type: AD_EVENT_TYPE, callback: (event: any) => void) => import("react-native").EmitterSubscription;
20
+ cleanup: () => void;
20
21
  };
21
22
  export default _default;
22
23
  //# sourceMappingURL=FullScreenVideo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FullScreenVideo.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/FullScreenVideo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,oBAAY,aAAa;IACvB,SAAS,cAAc,CAAE,WAAW;IACpC,UAAU,eAAe,CAAE,WAAW;IACtC,SAAS,cAAc,CAAE,UAAU;IACnC,SAAS,cAAc;CACxB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC/B;yBAQe,OAAO,eAAe;;sBAMhB,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;;AANnE,wBAoBE"}
1
+ {"version":3,"file":"FullScreenVideo.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/FullScreenVideo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,oBAAY,aAAa;IACvB,SAAS,cAAc,CAAE,WAAW;IACpC,UAAU,eAAe,CAAE,WAAW;IACtC,SAAS,cAAc,CAAE,UAAU;IACnC,SAAS,cAAc;CACxB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC/B;yBAMe,OAAO,eAAe;;sBAQhB,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;;;AARnE,wBA8BE"}
@@ -10,6 +10,7 @@ type rewardInfo = {
10
10
  export default function (info: rewardInfo): {
11
11
  result: any;
12
12
  subscribe: (type: AD_EVENT_TYPE, callback: (event: any) => void) => import("react-native").EmitterSubscription;
13
+ cleanup: () => void;
13
14
  };
14
15
  export {};
15
16
  //# sourceMappingURL=RewardVideo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RewardVideo.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/RewardVideo.ts"],"names":[],"mappings":"AAGA,oBAAY,aAAa;IACvB,SAAS,cAAc,CAAE,WAAW;IACpC,UAAU,eAAe,CAAE,WAAW;IACtC,SAAS,cAAc,CAAE,UAAU;IACnC,SAAS,cAAc;CACxB;AAQD,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,IAAI,EAAE,UAAU;;sBAKnB,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;EAclE"}
1
+ {"version":3,"file":"RewardVideo.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/RewardVideo.ts"],"names":[],"mappings":"AAGA,oBAAY,aAAa;IACvB,SAAS,cAAc,CAAE,WAAW;IACpC,UAAU,eAAe,CAAE,WAAW;IACtC,SAAS,cAAc,CAAE,UAAU;IACnC,SAAS,cAAc;CACxB;AAMD,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,WAAW,IAAI,EAAE,UAAU;;sBAOnB,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;;EAsBlE"}
@@ -12,6 +12,7 @@ export interface SPLASHAD_PROPS_TYPE {
12
12
  declare const dyLoadSplashAd: ({ codeid, anim }: SPLASHAD_PROPS_TYPE) => {
13
13
  result: any;
14
14
  subscribe: (type: keyof AD_EVENT_TYPE, callback: (event: any) => void) => import("react-native").EmitterSubscription;
15
+ cleanup: () => void;
15
16
  };
16
17
  export { dyLoadSplashAd };
17
18
  //# sourceMappingURL=SplashAd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SplashAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/SplashAd.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CAC3D;AAID,QAAA,MAAM,cAAc,GAAI,kBAA8B,mBAAmB;;sBAKnD,MAAM,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;CAcxE,CAAC;AACF,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"SplashAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/api/SplashAd.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CAC3D;AAED,QAAA,MAAM,cAAc,GAAI,kBAA8B,mBAAmB;;sBAOnD,MAAM,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;;CAwBxE,CAAC;AACF,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -13,6 +13,6 @@ export interface BannerAdProps {
13
13
  onAdShow?: Function;
14
14
  onAdDislike?: Function;
15
15
  }
16
- declare const BannerAdView: (props: BannerAdProps) => React.JSX.Element | null;
17
- export default BannerAdView;
16
+ declare const _default: React.MemoExoticComponent<(props: BannerAdProps) => React.JSX.Element | null>;
17
+ export default _default;
18
18
  //# sourceMappingURL=BannerAd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQ9C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB;AASD,QAAA,MAAM,YAAY,GAAI,OAAO,aAAa,6BAoEzC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"BannerAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/BannerAd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQ9C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB;0DAc4B,aAAa;AA8D1C,wBAAwC"}
@@ -19,5 +19,6 @@ export declare const loadDrawFeedAd: (info: {
19
19
  codeid: string;
20
20
  }) => void;
21
21
  export declare const DrawFeedView: (props: DrawFeedAdProps) => React.JSX.Element | null;
22
- export default DrawFeedView;
22
+ declare const _default: React.MemoExoticComponent<(props: DrawFeedAdProps) => React.JSX.Element | null>;
23
+ export default _default;
23
24
  //# sourceMappingURL=DrawFeedAd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DrawFeedAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/DrawFeedAd.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,cAAc,CAAC;AAWtB,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,SAErE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,6BAqClD,CAAC;AASF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"DrawFeedAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/DrawFeedAd.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,cAAc,CAAC;AAWtB,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB,CAAC;AAIF,eAAO,MAAM,cAAc,GAAI,MAAM;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,SAErE,CAAC;AAOF,eAAO,MAAM,YAAY,GAAI,OAAO,eAAe,6BAmClD,CAAC;0DAnCkC,eAAe;AA4CnD,wBAAwC"}
@@ -15,6 +15,6 @@ export interface FeedAdProps {
15
15
  onAdClose?: Function;
16
16
  onAdClick?: Function;
17
17
  }
18
- declare const FeedAdView: (props: FeedAdProps) => React.JSX.Element | null;
19
- export default FeedAdView;
18
+ declare const _default: React.MemoExoticComponent<(props: FeedAdProps) => React.JSX.Element | null>;
19
+ export default _default;
20
20
  //# sourceMappingURL=FeedAd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/FeedAd.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAQD,QAAA,MAAM,UAAU,GAAI,OAAO,WAAW,6BAiDrC,CAAC;AACF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"FeedAd.d.ts","sourceRoot":"","sources":["../../../../../src/dy/component/FeedAd.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;0DAa0B,WAAW;AAiDtC,wBAAsC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24jieqi/react-native-brayant-ad",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "国内广告联盟sdk封装",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -25,19 +25,18 @@ type ListenerCache = {
25
25
  [K in AD_EVENT_TYPE]: EventSubscription | undefined;
26
26
  };
27
27
 
28
- let listenerCache: ListenerCache = {} as ListenerCache;
29
-
30
28
  export default (props: FullScreenProps) => {
31
29
  const { provider, codeid, orientation = 'VERTICAL' } = props;
32
30
  const eventEmitter = new NativeEventEmitter(FullScreenVideoModule);
31
+ // Per-instance listener cache to avoid conflicts with multiple ads
32
+ const listenerCache: ListenerCache = {} as ListenerCache;
33
33
  let result = FullScreenVideoModule.startAd({ codeid, orientation, provider });
34
34
  return {
35
35
  result,
36
36
  subscribe: (type: AD_EVENT_TYPE, callback: (event: any) => void) => {
37
+ // Remove previous listener for this type in this instance only
37
38
  if (listenerCache[type]) {
38
39
  listenerCache[type]?.remove();
39
- } else {
40
- console.warn(`Listener for ${type} not found in the cache.`);
41
40
  }
42
41
  return (listenerCache[type] = eventEmitter.addListener(
43
42
  'FullScreenVideo-' + type,
@@ -46,5 +45,14 @@ export default (props: FullScreenProps) => {
46
45
  }
47
46
  ));
48
47
  },
48
+ // Provide cleanup method
49
+ cleanup: () => {
50
+ Object.values(listenerCache).forEach((subscription) => {
51
+ subscription?.remove();
52
+ });
53
+ Object.keys(listenerCache).forEach((key) => {
54
+ delete listenerCache[key as AD_EVENT_TYPE];
55
+ });
56
+ },
49
57
  };
50
58
  };
@@ -12,22 +12,21 @@ type ListenerCache = {
12
12
  [K in AD_EVENT_TYPE]: EventSubscription | undefined;
13
13
  };
14
14
 
15
- let listenerCache: ListenerCache = {} as ListenerCache;
16
-
17
15
  type rewardInfo = {
18
16
  codeid: string;
19
17
  };
20
18
 
21
19
  export default function (info: rewardInfo) {
22
20
  const eventEmitter = new NativeEventEmitter(RewardVideoModule);
21
+ // Per-instance listener cache to avoid conflicts with multiple ads
22
+ const listenerCache: ListenerCache = {} as ListenerCache;
23
23
  let result = RewardVideoModule.startAd(info);
24
24
  return {
25
25
  result,
26
26
  subscribe: (type: AD_EVENT_TYPE, callback: (event: any) => void) => {
27
+ // Remove previous listener for this type in this instance only
27
28
  if (listenerCache[type]) {
28
29
  listenerCache[type]?.remove();
29
- } else {
30
- console.warn(`Listener for ${type} not found in the cache.`);
31
30
  }
32
31
  return (listenerCache[type] = eventEmitter.addListener(
33
32
  'RewardVideo-' + type,
@@ -36,5 +35,14 @@ export default function (info: rewardInfo) {
36
35
  }
37
36
  ));
38
37
  },
38
+ // Provide cleanup method
39
+ cleanup: () => {
40
+ Object.values(listenerCache).forEach((subscription) => {
41
+ subscription?.remove();
42
+ });
43
+ Object.keys(listenerCache).forEach((key) => {
44
+ delete listenerCache[key as AD_EVENT_TYPE];
45
+ });
46
+ },
39
47
  };
40
48
  }
@@ -4,6 +4,7 @@
4
4
  * @description: 开屏广告
5
5
  */
6
6
  import { NativeModules, NativeEventEmitter } from 'react-native';
7
+ import type { EventSubscription } from 'react-native';
7
8
  const { SplashAd } = NativeModules;
8
9
 
9
10
  export interface AD_EVENT_TYPE {
@@ -18,16 +19,17 @@ export interface SPLASHAD_PROPS_TYPE {
18
19
  anim?: 'default' | 'none' | 'catalyst' | 'slide' | 'fade';
19
20
  }
20
21
 
21
- const listenerCache: any = {};
22
-
23
22
  const dyLoadSplashAd = ({ codeid, anim = 'default' }: SPLASHAD_PROPS_TYPE) => {
24
23
  const eventEmitter = new NativeEventEmitter(SplashAd);
24
+ // Per-instance listener cache to avoid conflicts with multiple ads
25
+ const listenerCache: Record<string, EventSubscription | undefined> = {};
25
26
  let result = SplashAd.loadSplashAd({ codeid, anim });
26
27
  return {
27
28
  result,
28
29
  subscribe: (type: keyof AD_EVENT_TYPE, callback: (event: any) => void) => {
30
+ // Remove previous listener for this type in this instance only
29
31
  if (listenerCache[type]) {
30
- listenerCache[type].remove();
32
+ listenerCache[type]?.remove();
31
33
  }
32
34
  return (listenerCache[type] = eventEmitter.addListener(
33
35
  'SplashAd-' + type,
@@ -38,6 +40,15 @@ const dyLoadSplashAd = ({ codeid, anim = 'default' }: SPLASHAD_PROPS_TYPE) => {
38
40
  }
39
41
  ));
40
42
  },
43
+ // Provide cleanup method
44
+ cleanup: () => {
45
+ Object.values(listenerCache).forEach((subscription) => {
46
+ subscription?.remove();
47
+ });
48
+ Object.keys(listenerCache).forEach((key) => {
49
+ delete listenerCache[key];
50
+ });
51
+ },
41
52
  };
42
53
  };
43
54
  export { dyLoadSplashAd };
@@ -29,6 +29,11 @@ const LINKING_ERROR =
29
29
  '- You are not using Expo Go\n' +
30
30
  '\nNote: BannerAd is currently only supported on Android platform.';
31
31
 
32
+ // Define native component at module level to avoid duplicate registration
33
+ const BannerAdNativeComponent = ComponentName && UIManager.getViewManagerConfig(ComponentName) != null
34
+ ? requireNativeComponent<BannerAdProps>(ComponentName)
35
+ : undefined;
36
+
32
37
  const BannerAdView = (props: BannerAdProps) => {
33
38
  const {
34
39
  codeid,
@@ -54,20 +59,12 @@ const BannerAdView = (props: BannerAdProps) => {
54
59
 
55
60
  if (!visible || dismissed) return null;
56
61
 
57
- // Ensure ComponentName is defined for Android
58
- if (!ComponentName) {
59
- return null;
62
+ if (!BannerAdNativeComponent) {
63
+ throw new Error(LINKING_ERROR);
60
64
  }
61
65
 
62
- const BannerAdComponent =
63
- UIManager.getViewManagerConfig(ComponentName) != null
64
- ? requireNativeComponent<BannerAdProps>(ComponentName)
65
- : () => {
66
- throw new Error(LINKING_ERROR);
67
- };
68
-
69
66
  return (
70
- <BannerAdComponent
67
+ <BannerAdNativeComponent
71
68
  codeid={codeid}
72
69
  adWidth={adWidth}
73
70
  adHeight={height}
@@ -99,4 +96,5 @@ const BannerAdView = (props: BannerAdProps) => {
99
96
  );
100
97
  };
101
98
 
102
- export default BannerAdView;
99
+ export default React.memo(BannerAdView);
100
+
@@ -15,7 +15,7 @@ import {
15
15
  const { DrawFeedAdModule } = NativeModules;
16
16
 
17
17
  const LINKING_ERROR =
18
- `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` +
18
+ `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` +
19
19
  Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
20
20
  '- You rebuilt the app after installing the package\n' +
21
21
  '- You are not using Expo Go\n';
@@ -38,6 +38,11 @@ export const loadDrawFeedAd = (info: { appid: string; codeid: string }) => {
38
38
  DrawFeedAdModule.loadDrawFeedAd(info);
39
39
  };
40
40
 
41
+ // Define native component at module level to avoid duplicate registration
42
+ const DrawFeedAdNativeComponent = UIManager.getViewManagerConfig(ComponentName) != null
43
+ ? requireNativeComponent<ViewProps>(ComponentName)
44
+ : undefined;
45
+
41
46
  export const DrawFeedView = (props: DrawFeedAdProps) => {
42
47
  const {
43
48
  codeid,
@@ -50,15 +55,13 @@ export const DrawFeedView = (props: DrawFeedAdProps) => {
50
55
  if (!visible) return null;
51
56
 
52
57
  const styleObj = style ? style : styles.container;
53
- const ViewView =
54
- UIManager.getViewManagerConfig(ComponentName) != null
55
- ? requireNativeComponent<ViewProps>(ComponentName)
56
- : () => {
57
- throw new Error(LINKING_ERROR);
58
- };
58
+
59
+ if (!DrawFeedAdNativeComponent) {
60
+ throw new Error(LINKING_ERROR);
61
+ }
59
62
 
60
63
  return (
61
- <ViewView
64
+ <DrawFeedAdNativeComponent
62
65
  codeid={codeid}
63
66
  onAdError={(e: any) => {
64
67
  console.log('onAdError DrawFeed', e.nativeEvent);
@@ -84,4 +87,4 @@ const styles = StyleSheet.create({
84
87
  },
85
88
  });
86
89
 
87
- export default DrawFeedView;
90
+ export default React.memo(DrawFeedView);
@@ -6,6 +6,7 @@
6
6
  import React, { useState } from 'react';
7
7
  import { Platform, requireNativeComponent, UIManager } from 'react-native';
8
8
  import type { ViewStyle } from 'react-native';
9
+
9
10
  const ComponentName = 'FeedAdViewManager';
10
11
 
11
12
  export interface FeedAdProps {
@@ -20,11 +21,16 @@ export interface FeedAdProps {
20
21
  }
21
22
 
22
23
  const LINKING_ERROR =
23
- `The package 'react-native-view' doesn't seem to be linked. Make sure: \n\n` +
24
+ `The package 'react-native-brayant-ad' doesn't seem to be linked. Make sure: \n\n` +
24
25
  Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
25
26
  '- You rebuilt the app after installing the package\n' +
26
27
  '- You are not using Expo Go\n';
27
28
 
29
+ // Define native component at module level to avoid duplicate registration
30
+ const FeedAdNativeComponent = UIManager.getViewManagerConfig(ComponentName) != null
31
+ ? requireNativeComponent<FeedAdProps>(ComponentName)
32
+ : undefined;
33
+
28
34
  const FeedAdView = (props: FeedAdProps) => {
29
35
  const {
30
36
  codeid,
@@ -43,14 +49,12 @@ const FeedAdView = (props: FeedAdProps) => {
43
49
  // FeedAd是否显示,外部和内部均可控制,外部visible、内部closed
44
50
  if (!visible || closed) return null;
45
51
 
46
- const FeedAdComponent =
47
- UIManager.getViewManagerConfig(ComponentName) != null
48
- ? requireNativeComponent<FeedAdProps>(ComponentName)
49
- : () => {
50
- throw new Error(LINKING_ERROR);
51
- };
52
+ if (!FeedAdNativeComponent) {
53
+ throw new Error(LINKING_ERROR);
54
+ }
55
+
52
56
  return (
53
- <FeedAdComponent
57
+ <FeedAdNativeComponent
54
58
  codeid={codeid}
55
59
  // 里面素材的宽度,减30是有些情况下,里面素材过宽贴边显示不全
56
60
  adWidth={adWidth - 30}
@@ -75,4 +79,5 @@ const FeedAdView = (props: FeedAdProps) => {
75
79
  />
76
80
  );
77
81
  };
78
- export default FeedAdView;
82
+
83
+ export default React.memo(FeedAdView);