@24jieqi/react-native-brayant-ad 0.1.23 → 0.1.25

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.
@@ -70,6 +70,15 @@ public class DyADCore {
70
70
  public static CSJSplashAd splashAd;
71
71
  public static ReactContext reactContext;
72
72
 
73
+ // 开屏广告预加载状态管理
74
+ public static final int SPLASH_PRELOAD_IDLE = 0; // 未预加载
75
+ public static final int SPLASH_PRELOAD_LOADING = 1; // 预加载中
76
+ public static final int SPLASH_PRELOAD_SUCCESS = 2; // 预加载成功
77
+ public static final int SPLASH_PRELOAD_FAIL = 3; // 预加载失败
78
+ public static int splashPreloadStatus = SPLASH_PRELOAD_IDLE;
79
+ public static long splashPreloadTime = 0; // 预加载成功时间戳
80
+ public static final long SPLASH_PRELOAD_VALID_DURATION = 5 * 60 * 1000; // 预加载有效期5分钟
81
+
73
82
  public static void initSdk(Context context, String appId, Boolean debug) {
74
83
  if (TTAdSdk != null && Objects.equals(tt_appid, appId)) {
75
84
  //已初始化
@@ -38,6 +38,8 @@ public class BannerAdView extends RelativeLayout {
38
38
  inflate(context, R.layout.feed_view, this);
39
39
  Utils.setupLayoutHack(this);
40
40
 
41
+ setVisibility(View.INVISIBLE);
42
+
41
43
  RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
42
44
  RelativeLayout.LayoutParams.MATCH_PARENT,
43
45
  mExpectedHeight
@@ -73,7 +75,7 @@ public class BannerAdView extends RelativeLayout {
73
75
  */
74
76
  public void setVisibility(boolean visible) {
75
77
  if (visible) {
76
- super.setVisibility(View.VISIBLE);
78
+ // 触发加载,但暂不显示(等待渲染成功)
77
79
  showAd();
78
80
  } else {
79
81
  super.setVisibility(View.INVISIBLE);
@@ -50,11 +50,11 @@ public class DrawFeedView extends RelativeLayout {
50
50
  reactContext = context;
51
51
  mContext = context;
52
52
 
53
- // 初始化广告渲染组件
54
53
  inflate(mContext, R.layout.draw_video, this);
55
54
  mContainer = findViewById(R.id.tt_video_layout_hxb);
56
55
 
57
- // 这个函数很关键,不然不能触发再次渲染,让 view 在 RN 里渲染成功!!
56
+ setVisibility(View.INVISIBLE);
57
+
58
58
  Utils.setupLayoutHack(this);
59
59
  }
60
60
 
@@ -214,6 +214,7 @@ public class DrawFeedView extends RelativeLayout {
214
214
  public void onRenderSuccess(View view, float width, float height) {
215
215
  Log.d(TAG, "express onRenderSuccess");
216
216
  mContainer.addView(ad.getExpressAdView());
217
+ DrawFeedView.this.setVisibility(View.VISIBLE);
217
218
  onExpressAdLoad();
218
219
  }
219
220
  }
@@ -301,6 +302,8 @@ public class DrawFeedView extends RelativeLayout {
301
302
  View view = ad.getAdView();
302
303
  mContainer.addView(view);
303
304
 
305
+ DrawFeedView.this.setVisibility(View.VISIBLE);
306
+
304
307
  // 广告替换用户头像
305
308
  String headicon = "";
306
309
  if (ad.getIcon() != null && ad.getIcon().getImageUrl() != null) {
@@ -308,7 +311,6 @@ public class DrawFeedView extends RelativeLayout {
308
311
  }
309
312
  onNativeAdLoad(headicon);
310
313
 
311
- // 点击标题,下载按钮+事件
312
314
  initAdViewAndAction(ad, mContainer);
313
315
  }
314
316
  }
@@ -50,6 +50,9 @@ public class FeedAdView extends RelativeLayout {
50
50
  //开始展开
51
51
  inflate(context, R.layout.feed_view, this);
52
52
 
53
+ // 初始隐藏容器,避免白屏闪现
54
+ setVisibility(View.INVISIBLE);
55
+
53
56
  // 这个函数很关键,不然不能触发再次渲染,让 view 在 RN 里渲染成功!!
54
57
  Utils.setupLayoutHack(this);
55
58
  }
@@ -173,18 +176,15 @@ public class FeedAdView extends RelativeLayout {
173
176
 
174
177
  @Override
175
178
  public void onRenderSuccess(View view, float width, float height) {
176
- // 返回view的宽高 单位 dp
177
- // TToast.show(mContext, "渲染成功");
178
- // 在渲染成功回调时展示广告,提升体验
179
179
  RelativeLayout mExpressContainer = findViewById(R.id.feed_container);
180
180
  if (mExpressContainer != null) {
181
181
  mExpressContainer.addView(view);
182
182
  }
183
+ FeedAdView.this.setVisibility(View.VISIBLE);
183
184
  onAdLayout((int) width, (int) height);
184
185
  }
185
186
  }
186
187
  );
187
- // dislike设置
188
188
  bindDislike(ad, true);
189
189
  if (ad.getInteractionType() != TTAdConstant.INTERACTION_TYPE_DOWNLOAD) {
190
190
  return;
@@ -2,21 +2,35 @@ package com.brayantad.dy.splash;
2
2
 
3
3
  import android.app.Activity;
4
4
  import android.content.Intent;
5
+ import android.util.Log;
5
6
 
6
7
  import androidx.annotation.NonNull;
7
8
 
8
9
  import com.brayantad.dy.DyADCore;
9
10
  import com.brayantad.dy.splash.activity.SplashActivity;
11
+ import com.bytedance.sdk.openadsdk.AdSlot;
12
+ import com.bytedance.sdk.openadsdk.CSJAdError;
13
+ import com.bytedance.sdk.openadsdk.CSJSplashAd;
14
+ import com.bytedance.sdk.openadsdk.TTAdNative;
15
+ import com.bytedance.sdk.openadsdk.TTAdSdk;
16
+ import com.facebook.react.bridge.Arguments;
17
+ import com.facebook.react.bridge.Promise;
10
18
  import com.facebook.react.bridge.ReactApplicationContext;
11
19
  import com.facebook.react.bridge.ReactContextBaseJavaModule;
12
20
  import com.facebook.react.bridge.ReactMethod;
13
21
  import com.facebook.react.bridge.ReadableMap;
22
+ import com.facebook.react.bridge.WritableMap;
23
+ import com.facebook.react.modules.core.DeviceEventManagerModule;
24
+
25
+ import static com.bytedance.sdk.openadsdk.TTAdLoadType.PRELOAD;
14
26
 
15
27
  // 开屏广告
16
28
  public class SplashAdModule extends ReactContextBaseJavaModule {
17
29
 
18
30
  String TAG = "SplashAd";
19
31
  ReactApplicationContext mContext;
32
+ // 开屏广告预加载超时时间
33
+ private static final int PRELOAD_TIME_OUT = 3500;
20
34
 
21
35
  public SplashAdModule(@NonNull ReactApplicationContext reactContext) {
22
36
  super(reactContext);
@@ -29,6 +43,147 @@ public class SplashAdModule extends ReactContextBaseJavaModule {
29
43
  return TAG;
30
44
  }
31
45
 
46
+ /**
47
+ * 预加载开屏广告
48
+ * 在应用启动时调用,提前加载广告,避免展示时出现白屏
49
+ */
50
+ @ReactMethod
51
+ public void preloadSplashAd(ReadableMap options, Promise promise) {
52
+ String codeid = options.hasKey("codeid") ? options.getString("codeid") : null;
53
+
54
+ if (codeid == null || codeid.isEmpty()) {
55
+ promise.reject("INVALID_CODEID", "广告位ID不能为空");
56
+ return;
57
+ }
58
+
59
+ // 检查是否已有有效预加载
60
+ if (DyADCore.splashAd != null && isPreloadValid()) {
61
+ Log.d(TAG, "预加载广告已存在且有效,无需重新加载");
62
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_SUCCESS;
63
+ WritableMap result = Arguments.createMap();
64
+ result.putBoolean("success", true);
65
+ result.putString("message", "使用已预加载的广告");
66
+ promise.resolve(result);
67
+ return;
68
+ }
69
+
70
+ // 检查SDK是否初始化
71
+ if (DyADCore.TTAdSdk == null || !TTAdSdk.isSdkReady()) {
72
+ promise.reject("SDK_NOT_READY", "广告SDK未初始化");
73
+ return;
74
+ }
75
+
76
+ // 设置预加载状态为加载中
77
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_LOADING;
78
+
79
+ TTAdNative mTTAdNative = DyADCore.TTAdSdk;
80
+
81
+ // 创建开屏广告请求参数
82
+ AdSlot adSlot = new AdSlot.Builder()
83
+ .setCodeId(codeid)
84
+ .setSupportDeepLink(true)
85
+ .setExpressViewAcceptedSize(1080, 1920)
86
+ .setAdLoadType(PRELOAD)
87
+ .build();
88
+
89
+ // 请求广告
90
+ mTTAdNative.loadSplashAd(
91
+ adSlot,
92
+ new TTAdNative.CSJSplashAdListener() {
93
+ @Override
94
+ public void onSplashLoadSuccess(CSJSplashAd csjSplashAd) {
95
+ // 素材加载成功
96
+ }
97
+
98
+ @Override
99
+ public void onSplashLoadFail(CSJAdError csjAdError) {
100
+ Log.d(TAG, "预加载开屏广告失败:" + csjAdError);
101
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_FAIL;
102
+ DyADCore.splashAd = null;
103
+
104
+ // 发送预加载失败事件
105
+ WritableMap eventParams = Arguments.createMap();
106
+ eventParams.putString("error", csjAdError != null ? csjAdError.getMsg() : "未知错误");
107
+ sendEvent("SplashAd-onPreloadFail", eventParams);
108
+
109
+ promise.reject("PRELOAD_FAIL", csjAdError != null ? csjAdError.getMsg() : "预加载失败");
110
+ }
111
+
112
+ @Override
113
+ public void onSplashRenderSuccess(CSJSplashAd csjSplashAd) {
114
+ Log.d(TAG, "预加载开屏广告成功");
115
+ DyADCore.splashAd = csjSplashAd;
116
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_SUCCESS;
117
+ DyADCore.splashPreloadTime = System.currentTimeMillis();
118
+
119
+ // 发送预加载成功事件
120
+ WritableMap eventParams = Arguments.createMap();
121
+ eventParams.putBoolean("success", true);
122
+ sendEvent("SplashAd-onPreloadSuccess", eventParams);
123
+
124
+ WritableMap result = Arguments.createMap();
125
+ result.putBoolean("success", true);
126
+ result.putString("message", "预加载成功");
127
+ promise.resolve(result);
128
+ }
129
+
130
+ @Override
131
+ public void onSplashRenderFail(CSJSplashAd csjSplashAd, CSJAdError csjAdError) {
132
+ Log.d(TAG, "预加载开屏广告渲染失败:" + csjAdError);
133
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_FAIL;
134
+ DyADCore.splashAd = null;
135
+
136
+ // 发送预加载失败事件
137
+ WritableMap eventParams = Arguments.createMap();
138
+ eventParams.putString("error", csjAdError != null ? csjAdError.getMsg() : "渲染失败");
139
+ sendEvent("SplashAd-onPreloadFail", eventParams);
140
+
141
+ promise.reject("RENDER_FAIL", csjAdError != null ? csjAdError.getMsg() : "渲染失败");
142
+ }
143
+ },
144
+ PRELOAD_TIME_OUT
145
+ );
146
+ }
147
+
148
+ /**
149
+ * 检查预加载的广告是否仍然有效(5分钟有效期)
150
+ */
151
+ private boolean isPreloadValid() {
152
+ if (DyADCore.splashPreloadTime == 0) return false;
153
+ long elapsed = System.currentTimeMillis() - DyADCore.splashPreloadTime;
154
+ return elapsed < DyADCore.SPLASH_PRELOAD_VALID_DURATION;
155
+ }
156
+
157
+ /**
158
+ * 检查是否有预加载的广告可用
159
+ */
160
+ @ReactMethod
161
+ public void hasPreloadedAd(Promise promise) {
162
+ boolean hasAd = DyADCore.splashAd != null && isPreloadValid();
163
+ WritableMap result = Arguments.createMap();
164
+ result.putBoolean("hasAd", hasAd);
165
+ result.putInt("status", DyADCore.splashPreloadStatus);
166
+ promise.resolve(result);
167
+ }
168
+
169
+ /**
170
+ * 清除预加载的广告缓存
171
+ */
172
+ @ReactMethod
173
+ public void clearPreloadedAd() {
174
+ DyADCore.splashAd = null;
175
+ DyADCore.splashPreloadStatus = DyADCore.SPLASH_PRELOAD_IDLE;
176
+ DyADCore.splashPreloadTime = 0;
177
+ }
178
+
179
+ private void sendEvent(String eventName, WritableMap params) {
180
+ if (mContext != null && mContext.hasActiveCatalystInstance()) {
181
+ mContext
182
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
183
+ .emit(eventName, params);
184
+ }
185
+ }
186
+
32
187
  @ReactMethod
33
188
  public void loadSplashAd(ReadableMap options) {
34
189
  String codeid = options.hasKey("codeid") ? options.getString("codeid") : null;
@@ -73,19 +73,25 @@ public class SplashActivity extends AppCompatActivity implements WeakHandler.IHa
73
73
  // 在开屏时候申请不太合适,因为该页面倒计时结束或者请求超时会跳转,在该页面申请权限,体验不好
74
74
  // TTAdManagerHolder.getInstance(this).requestPermissionIfNecessary(this);
75
75
 
76
- // 定时,AD_TIME_OUT时间到时执行,如果开屏广告没有加载则跳转到主页面
77
- mHandler.sendEmptyMessageDelayed(MSG_GO_MAIN, AD_TIME_OUT);
78
-
79
76
  // 初始化自定义广告 View
80
77
  initView();
81
78
 
82
79
  // 绑定广告控制 Activity
83
80
  DyADCore.hookActivity(this);
81
+
84
82
  boolean sdkReady = TTAdSdk.isSdkReady();
85
- if (DyADCore.splashAd != null && sdkReady ) {
86
- // 直接展示预加载的开屏广告
83
+ boolean hasPreloadedAd = DyADCore.splashAd != null && sdkReady && isPreloadValid();
84
+
85
+ if (hasPreloadedAd) {
86
+ // 直接展示预加载的开屏广告,无需等待加载
87
+ Log.d(TAG, "使用预加载的开屏广告,直接展示");
87
88
  showSplashAd();
88
89
  } else {
90
+ // 没有预加载或已过期,需要实时加载
91
+ Log.d(TAG, "没有预加载广告,开始实时加载");
92
+
93
+ // 定时,AD_TIME_OUT时间到时执行,如果开屏广告没有加载则跳转到主页面
94
+ mHandler.sendEmptyMessageDelayed(MSG_GO_MAIN, AD_TIME_OUT);
89
95
 
90
96
  // 加载并显示开屏广告
91
97
  loadSplashAd(
@@ -99,6 +105,15 @@ public class SplashActivity extends AppCompatActivity implements WeakHandler.IHa
99
105
  }
100
106
  }
101
107
 
108
+ /**
109
+ * 检查预加载的广告是否仍然有效(5分钟有效期)
110
+ */
111
+ private boolean isPreloadValid() {
112
+ if (DyADCore.splashPreloadTime == 0) return false;
113
+ long elapsed = System.currentTimeMillis() - DyADCore.splashPreloadTime;
114
+ return elapsed < DyADCore.SPLASH_PRELOAD_VALID_DURATION;
115
+ }
116
+
102
117
  // 初始化开屏广告 View
103
118
  private void initView() {
104
119
  // 初始化广告渲染组件
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.dyLoadSplashAd = void 0;
6
+ exports.preloadSplashAd = exports.hasPreloadedSplashAd = exports.dyLoadSplashAd = exports.clearPreloadedSplashAd = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  /**
9
9
  * @Author: 马海
@@ -50,5 +50,33 @@ const dyLoadSplashAd = ({
50
50
  }
51
51
  };
52
52
  };
53
+
54
+ /**
55
+ * 预加载开屏广告
56
+ * 在应用启动时调用,提前加载广告,避免展示时出现白屏
57
+ * @param options 预加载选项
58
+ * @returns Promise<预加载结果>
59
+ */
53
60
  exports.dyLoadSplashAd = dyLoadSplashAd;
61
+ const preloadSplashAd = async options => {
62
+ return SplashAd.preloadSplashAd(options);
63
+ };
64
+
65
+ /**
66
+ * 检查是否有预加载的广告可用
67
+ * @returns Promise<检查结果>
68
+ */
69
+ exports.preloadSplashAd = preloadSplashAd;
70
+ const hasPreloadedSplashAd = async () => {
71
+ return SplashAd.hasPreloadedAd();
72
+ };
73
+
74
+ /**
75
+ * 清除预加载的广告缓存
76
+ */
77
+ exports.hasPreloadedSplashAd = hasPreloadedSplashAd;
78
+ const clearPreloadedSplashAd = () => {
79
+ SplashAd.clearPreloadedAd();
80
+ };
81
+ exports.clearPreloadedSplashAd = clearPreloadedSplashAd;
54
82
  //# sourceMappingURL=SplashAd.js.map
@@ -1 +1 @@
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":[]}
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","preloadSplashAd","options","hasPreloadedSplashAd","hasPreloadedAd","clearPreloadedSplashAd","clearPreloadedAd"],"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;AA+BlC,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;;AAED;AACA;AACA;AACA;AACA;AACA;AALAC,OAAA,CAAAxB,cAAA,GAAAA,cAAA;AAMA,MAAMyB,eAAe,GAAG,MAAOC,OAA6B,IAAmC;EAC7F,OAAO5B,QAAQ,CAAC2B,eAAe,CAACC,OAAO,CAAC;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AAHAF,OAAA,CAAAC,eAAA,GAAAA,eAAA;AAIA,MAAME,oBAAoB,GAAG,MAAAA,CAAA,KAAgD;EAC3E,OAAO7B,QAAQ,CAAC8B,cAAc,CAAC,CAAC;AAClC,CAAC;;AAED;AACA;AACA;AAFAJ,OAAA,CAAAG,oBAAA,GAAAA,oBAAA;AAGA,MAAME,sBAAsB,GAAGA,CAAA,KAAY;EACzC/B,QAAQ,CAACgC,gBAAgB,CAAC,CAAC;AAC7B,CAAC;AAACN,OAAA,CAAAK,sBAAA,GAAAA,sBAAA","ignoreList":[]}
@@ -21,12 +21,24 @@ Object.defineProperty(exports, "FeedAdView", {
21
21
  return _FeedAd.default;
22
22
  }
23
23
  });
24
+ Object.defineProperty(exports, "clearPreloadedSplashAd", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _SplashAd.clearPreloadedSplashAd;
28
+ }
29
+ });
24
30
  Object.defineProperty(exports, "dyLoadSplashAd", {
25
31
  enumerable: true,
26
32
  get: function () {
27
33
  return _SplashAd.dyLoadSplashAd;
28
34
  }
29
35
  });
36
+ Object.defineProperty(exports, "hasPreloadedSplashAd", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _SplashAd.hasPreloadedSplashAd;
40
+ }
41
+ });
30
42
  Object.defineProperty(exports, "init", {
31
43
  enumerable: true,
32
44
  get: function () {
@@ -46,6 +58,12 @@ Object.defineProperty(exports, "loadFeedAd", {
46
58
  }
47
59
  });
48
60
  exports.multiply = multiply;
61
+ Object.defineProperty(exports, "preloadSplashAd", {
62
+ enumerable: true,
63
+ get: function () {
64
+ return _SplashAd.preloadSplashAd;
65
+ }
66
+ });
49
67
  Object.defineProperty(exports, "requestPermission", {
50
68
  enumerable: true,
51
69
  get: function () {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_AdManager","_RewardVideo","_interopRequireDefault","_SplashAd","_DrawFeedAd","_FeedAd","_BannerAd","_FullScreenVideo","e","__esModule","default","LINKING_ERROR","Platform","select","ios","BrayantAd","NativeModules","Proxy","get","Error","multiply","a","b"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,SAAA,GAAAJ,sBAAA,CAAAH,OAAA;AAEA,IAAAQ,gBAAA,GAAAL,sBAAA,CAAAH,OAAA;AAA4D,SAAAG,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAC5D,MAAMG,aAAa,GACjB,kFAAkF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMK,SAAS,GAAGC,0BAAa,CAACD,SAAS,GACrCC,0BAAa,CAACD,SAAS,GACvB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEE,SAASS,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAmB;EAC9D,OAAOP,SAAS,CAACK,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACjC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_AdManager","_RewardVideo","_interopRequireDefault","_SplashAd","_DrawFeedAd","_FeedAd","_BannerAd","_FullScreenVideo","e","__esModule","default","LINKING_ERROR","Platform","select","ios","BrayantAd","NativeModules","Proxy","get","Error","multiply","a","b"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,YAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAMA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,OAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,SAAA,GAAAJ,sBAAA,CAAAH,OAAA;AAEA,IAAAQ,gBAAA,GAAAL,sBAAA,CAAAH,OAAA;AAA4D,SAAAG,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAC5D,MAAMG,aAAa,GACjB,kFAAkF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEJ,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMK,SAAS,GAAGC,0BAAa,CAACD,SAAS,GACrCC,0BAAa,CAACD,SAAS,GACvB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACR,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEE,SAASS,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAmB;EAC9D,OAAOP,SAAS,CAACK,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACjC","ignoreList":[]}
@@ -43,5 +43,30 @@ const dyLoadSplashAd = ({
43
43
  }
44
44
  };
45
45
  };
46
- export { dyLoadSplashAd };
46
+
47
+ /**
48
+ * 预加载开屏广告
49
+ * 在应用启动时调用,提前加载广告,避免展示时出现白屏
50
+ * @param options 预加载选项
51
+ * @returns Promise<预加载结果>
52
+ */
53
+ const preloadSplashAd = async options => {
54
+ return SplashAd.preloadSplashAd(options);
55
+ };
56
+
57
+ /**
58
+ * 检查是否有预加载的广告可用
59
+ * @returns Promise<检查结果>
60
+ */
61
+ const hasPreloadedSplashAd = async () => {
62
+ return SplashAd.hasPreloadedAd();
63
+ };
64
+
65
+ /**
66
+ * 清除预加载的广告缓存
67
+ */
68
+ const clearPreloadedSplashAd = () => {
69
+ SplashAd.clearPreloadedAd();
70
+ };
71
+ export { dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd };
47
72
  //# sourceMappingURL=SplashAd.js.map
@@ -1 +1 @@
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":[]}
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","preloadSplashAd","options","hasPreloadedSplashAd","hasPreloadedAd","clearPreloadedSplashAd","clearPreloadedAd"],"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;AA+BlC,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;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,MAAOC,OAA6B,IAAmC;EAC7F,OAAOzB,QAAQ,CAACwB,eAAe,CAACC,OAAO,CAAC;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMC,oBAAoB,GAAG,MAAAA,CAAA,KAAgD;EAC3E,OAAO1B,QAAQ,CAAC2B,cAAc,CAAC,CAAC;AAClC,CAAC;;AAED;AACA;AACA;AACA,MAAMC,sBAAsB,GAAGA,CAAA,KAAY;EACzC5B,QAAQ,CAAC6B,gBAAgB,CAAC,CAAC;AAC7B,CAAC;AAED,SACE5B,cAAc,EACduB,eAAe,EACfE,oBAAoB,EACpBE,sBAAsB","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
2
  import { init, loadFeedAd, requestPermission } from './dy/api/AdManager';
3
3
  import startRewardVideo from './dy/api/RewardVideo';
4
- import { dyLoadSplashAd } from './dy/api/SplashAd';
4
+ import { dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd } from './dy/api/SplashAd';
5
5
  import { DrawFeedView, loadDrawFeedAd } from './dy/component/DrawFeedAd';
6
6
  import FeedAdView from './dy/component/FeedAd';
7
7
  import BannerAdView from './dy/component/BannerAd';
@@ -18,5 +18,5 @@ const BrayantAd = NativeModules.BrayantAd ? NativeModules.BrayantAd : new Proxy(
18
18
  export function multiply(a, b) {
19
19
  return BrayantAd.multiply(a, b);
20
20
  }
21
- export { init, loadFeedAd, requestPermission, loadDrawFeedAd, startRewardVideo, startFullScreenVideo, dyLoadSplashAd, DrawFeedView, FeedAdView, BannerAdView };
21
+ export { init, loadFeedAd, requestPermission, loadDrawFeedAd, startRewardVideo, startFullScreenVideo, dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd, DrawFeedView, FeedAdView, BannerAdView };
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","init","loadFeedAd","requestPermission","startRewardVideo","dyLoadSplashAd","DrawFeedView","loadDrawFeedAd","FeedAdView","BannerAdView","startFullScreenVideo","LINKING_ERROR","select","ios","default","BrayantAd","Proxy","get","Error","multiply","a","b"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,IAAI,EAAEC,UAAU,EAAEC,iBAAiB,QAAQ,oBAAoB;AACxE,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,YAAY,EAAEC,cAAc,QAAQ,2BAA2B;AACxE,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,OAAOC,YAAY,MAAM,yBAAyB;AAElD,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,MAAMC,aAAa,GACjB,kFAAkF,GAClFX,QAAQ,CAACY,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,SAAS,GAAGhB,aAAa,CAACgB,SAAS,GACrChB,aAAa,CAACgB,SAAS,GACvB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,SAASQ,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAmB;EAC9D,OAAON,SAAS,CAACI,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACjC;AACA,SACEpB,IAAI,EACJC,UAAU,EACVC,iBAAiB,EACjBI,cAAc,EACdH,gBAAgB,EAChBM,oBAAoB,EACpBL,cAAc,EACdC,YAAY,EACZE,UAAU,EACVC,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","init","loadFeedAd","requestPermission","startRewardVideo","dyLoadSplashAd","preloadSplashAd","hasPreloadedSplashAd","clearPreloadedSplashAd","DrawFeedView","loadDrawFeedAd","FeedAdView","BannerAdView","startFullScreenVideo","LINKING_ERROR","select","ios","default","BrayantAd","Proxy","get","Error","multiply","a","b"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AACtD,SAASC,IAAI,EAAEC,UAAU,EAAEC,iBAAiB,QAAQ,oBAAoB;AACxE,OAAOC,gBAAgB,MAAM,sBAAsB;AACnD,SACEC,cAAc,EACdC,eAAe,EACfC,oBAAoB,EACpBC,sBAAsB,QACjB,mBAAmB;AAC1B,SAASC,YAAY,EAAEC,cAAc,QAAQ,2BAA2B;AACxE,OAAOC,UAAU,MAAM,uBAAuB;AAC9C,OAAOC,YAAY,MAAM,yBAAyB;AAElD,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,MAAMC,aAAa,GACjB,kFAAkF,GAClFd,QAAQ,CAACe,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,SAAS,GAAGnB,aAAa,CAACmB,SAAS,GACrCnB,aAAa,CAACmB,SAAS,GACvB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,SAASQ,QAAQA,CAACC,CAAS,EAAEC,CAAS,EAAmB;EAC9D,OAAON,SAAS,CAACI,QAAQ,CAACC,CAAC,EAAEC,CAAC,CAAC;AACjC;AACA,SACEvB,IAAI,EACJC,UAAU,EACVC,iBAAiB,EACjBO,cAAc,EACdN,gBAAgB,EAChBS,oBAAoB,EACpBR,cAAc,EACdC,eAAe,EACfC,oBAAoB,EACpBC,sBAAsB,EACtBC,YAAY,EACZE,UAAU,EACVC,YAAY","ignoreList":[]}
@@ -4,15 +4,44 @@ export interface AD_EVENT_TYPE {
4
4
  onAdClose: string;
5
5
  onAdSkip: string;
6
6
  onAdShow: string;
7
+ onPreloadSuccess: string;
8
+ onPreloadFail: string;
7
9
  }
8
10
  export interface SPLASHAD_PROPS_TYPE {
9
11
  codeid: string;
10
12
  anim?: 'default' | 'none' | 'catalyst' | 'slide' | 'fade';
11
13
  }
14
+ export interface PRELOAD_OPTIONS_TYPE {
15
+ codeid: string;
16
+ }
17
+ export interface PRELOAD_RESULT_TYPE {
18
+ success: boolean;
19
+ message: string;
20
+ }
21
+ export interface HAS_PRELOADED_RESULT_TYPE {
22
+ hasAd: boolean;
23
+ status: number;
24
+ }
12
25
  declare const dyLoadSplashAd: ({ codeid, anim }: SPLASHAD_PROPS_TYPE) => {
13
26
  result: any;
14
27
  subscribe: (type: keyof AD_EVENT_TYPE, callback: (event: any) => void) => import("react-native").EmitterSubscription;
15
28
  cleanup: () => void;
16
29
  };
17
- export { dyLoadSplashAd };
30
+ /**
31
+ * 预加载开屏广告
32
+ * 在应用启动时调用,提前加载广告,避免展示时出现白屏
33
+ * @param options 预加载选项
34
+ * @returns Promise<预加载结果>
35
+ */
36
+ declare const preloadSplashAd: (options: PRELOAD_OPTIONS_TYPE) => Promise<PRELOAD_RESULT_TYPE>;
37
+ /**
38
+ * 检查是否有预加载的广告可用
39
+ * @returns Promise<检查结果>
40
+ */
41
+ declare const hasPreloadedSplashAd: () => Promise<HAS_PRELOADED_RESULT_TYPE>;
42
+ /**
43
+ * 清除预加载的广告缓存
44
+ */
45
+ declare const clearPreloadedSplashAd: () => void;
46
+ export { dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd, };
18
47
  //# sourceMappingURL=SplashAd.d.ts.map
@@ -1 +1 @@
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"}
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;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,QAAA,MAAM,cAAc,GAAI,kBAA8B,mBAAmB;;sBAOnD,MAAM,aAAa,YAAY,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;;CAwBxE,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,eAAe,GAAU,SAAS,oBAAoB,KAAG,OAAO,CAAC,mBAAmB,CAEzF,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,oBAAoB,QAAa,OAAO,CAAC,yBAAyB,CAEvE,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,sBAAsB,QAAO,IAElC,CAAC;AAEF,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { init, loadFeedAd, requestPermission } from './dy/api/AdManager';
2
2
  import startRewardVideo from './dy/api/RewardVideo';
3
- import { dyLoadSplashAd } from './dy/api/SplashAd';
3
+ import { dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd } from './dy/api/SplashAd';
4
4
  import { DrawFeedView, loadDrawFeedAd } from './dy/component/DrawFeedAd';
5
5
  import FeedAdView from './dy/component/FeedAd';
6
6
  import BannerAdView from './dy/component/BannerAd';
7
7
  import startFullScreenVideo from './dy/api/FullScreenVideo';
8
8
  export declare function multiply(a: number, b: number): Promise<number>;
9
- export { init, loadFeedAd, requestPermission, loadDrawFeedAd, startRewardVideo, startFullScreenVideo, dyLoadSplashAd, DrawFeedView, FeedAdView, BannerAdView, };
9
+ export { init, loadFeedAd, requestPermission, loadDrawFeedAd, startRewardVideo, startFullScreenVideo, dyLoadSplashAd, preloadSplashAd, hasPreloadedSplashAd, clearPreloadedSplashAd, DrawFeedView, FeedAdView, BannerAdView, };
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,gBAAgB,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAkB5D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9D;AACD,OAAO,EACL,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,gBAAgB,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAkB5D,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9D;AACD,OAAO,EACL,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,YAAY,GACb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24jieqi/react-native-brayant-ad",
3
- "version": "0.1.23",
3
+ "version": "0.1.25",
4
4
  "description": "国内广告联盟sdk封装",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -13,12 +13,29 @@ export interface AD_EVENT_TYPE {
13
13
  onAdClose: string; // 广告关闭
14
14
  onAdSkip: string; // 用户点击跳过广告监听
15
15
  onAdShow: string; // 开屏广告开始展示
16
+ onPreloadSuccess: string; // 预加载成功
17
+ onPreloadFail: string; // 预加载失败
16
18
  }
19
+
17
20
  export interface SPLASHAD_PROPS_TYPE {
18
21
  codeid: string;
19
22
  anim?: 'default' | 'none' | 'catalyst' | 'slide' | 'fade';
20
23
  }
21
24
 
25
+ export interface PRELOAD_OPTIONS_TYPE {
26
+ codeid: string;
27
+ }
28
+
29
+ export interface PRELOAD_RESULT_TYPE {
30
+ success: boolean;
31
+ message: string;
32
+ }
33
+
34
+ export interface HAS_PRELOADED_RESULT_TYPE {
35
+ hasAd: boolean;
36
+ status: number;
37
+ }
38
+
22
39
  const dyLoadSplashAd = ({ codeid, anim = 'default' }: SPLASHAD_PROPS_TYPE) => {
23
40
  const eventEmitter = new NativeEventEmitter(SplashAd);
24
41
  // Per-instance listener cache to avoid conflicts with multiple ads
@@ -51,4 +68,35 @@ const dyLoadSplashAd = ({ codeid, anim = 'default' }: SPLASHAD_PROPS_TYPE) => {
51
68
  },
52
69
  };
53
70
  };
54
- export { dyLoadSplashAd };
71
+
72
+ /**
73
+ * 预加载开屏广告
74
+ * 在应用启动时调用,提前加载广告,避免展示时出现白屏
75
+ * @param options 预加载选项
76
+ * @returns Promise<预加载结果>
77
+ */
78
+ const preloadSplashAd = async (options: PRELOAD_OPTIONS_TYPE): Promise<PRELOAD_RESULT_TYPE> => {
79
+ return SplashAd.preloadSplashAd(options);
80
+ };
81
+
82
+ /**
83
+ * 检查是否有预加载的广告可用
84
+ * @returns Promise<检查结果>
85
+ */
86
+ const hasPreloadedSplashAd = async (): Promise<HAS_PRELOADED_RESULT_TYPE> => {
87
+ return SplashAd.hasPreloadedAd();
88
+ };
89
+
90
+ /**
91
+ * 清除预加载的广告缓存
92
+ */
93
+ const clearPreloadedSplashAd = (): void => {
94
+ SplashAd.clearPreloadedAd();
95
+ };
96
+
97
+ export {
98
+ dyLoadSplashAd,
99
+ preloadSplashAd,
100
+ hasPreloadedSplashAd,
101
+ clearPreloadedSplashAd,
102
+ };
package/src/index.tsx CHANGED
@@ -1,7 +1,12 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
2
  import { init, loadFeedAd, requestPermission } from './dy/api/AdManager';
3
3
  import startRewardVideo from './dy/api/RewardVideo';
4
- import { dyLoadSplashAd } from './dy/api/SplashAd';
4
+ import {
5
+ dyLoadSplashAd,
6
+ preloadSplashAd,
7
+ hasPreloadedSplashAd,
8
+ clearPreloadedSplashAd,
9
+ } from './dy/api/SplashAd';
5
10
  import { DrawFeedView, loadDrawFeedAd } from './dy/component/DrawFeedAd';
6
11
  import FeedAdView from './dy/component/FeedAd';
7
12
  import BannerAdView from './dy/component/BannerAd';
@@ -35,6 +40,9 @@ export {
35
40
  startRewardVideo,
36
41
  startFullScreenVideo,
37
42
  dyLoadSplashAd,
43
+ preloadSplashAd,
44
+ hasPreloadedSplashAd,
45
+ clearPreloadedSplashAd,
38
46
  DrawFeedView,
39
47
  FeedAdView,
40
48
  BannerAdView,