@24jieqi/react-native-brayant-ad 0.1.6

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 (116) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +473 -0
  3. package/android/build.gradle +100 -0
  4. package/android/gradle.properties +23 -0
  5. package/android/libs/open_ad_sdk_6.1.0.4.aar +0 -0
  6. package/android/src/main/AndroidManifest.xml +36 -0
  7. package/android/src/main/AndroidManifestNew.xml +33 -0
  8. package/android/src/main/java/com/brayantad/AdManager.java +183 -0
  9. package/android/src/main/java/com/brayantad/BrayantAdModule.java +32 -0
  10. package/android/src/main/java/com/brayantad/BrayantAdPackage.java +46 -0
  11. package/android/src/main/java/com/brayantad/WeakHandler.java +34 -0
  12. package/android/src/main/java/com/brayantad/dy/DyADCore.java +144 -0
  13. package/android/src/main/java/com/brayantad/dy/TTAdManagerHolder.java +56 -0
  14. package/android/src/main/java/com/brayantad/dy/WeakHandler.java +34 -0
  15. package/android/src/main/java/com/brayantad/dy/banner/BannerAdViewManager.java +67 -0
  16. package/android/src/main/java/com/brayantad/dy/banner/view/BannerAdView.java +275 -0
  17. package/android/src/main/java/com/brayantad/dy/drawFeed/DrawFeedViewManager.java +50 -0
  18. package/android/src/main/java/com/brayantad/dy/drawFeed/DrawFeedViewModule.java +86 -0
  19. package/android/src/main/java/com/brayantad/dy/drawFeed/view/DrawFeedView.java +484 -0
  20. package/android/src/main/java/com/brayantad/dy/feedAd/FeedAdViewManager.java +62 -0
  21. package/android/src/main/java/com/brayantad/dy/feedAd/view/FeedAdView.java +358 -0
  22. package/android/src/main/java/com/brayantad/dy/fullScreen/FullScreenVideoModule.java +69 -0
  23. package/android/src/main/java/com/brayantad/dy/fullScreen/activity/FullScreenActivity.java +197 -0
  24. package/android/src/main/java/com/brayantad/dy/rewardVideo/RewardVideoModule.java +80 -0
  25. package/android/src/main/java/com/brayantad/dy/rewardVideo/activity/RewardActivity.java +353 -0
  26. package/android/src/main/java/com/brayantad/dy/service/CSJSplashAd.java +140 -0
  27. package/android/src/main/java/com/brayantad/dy/splash/SplashAdModule.java +88 -0
  28. package/android/src/main/java/com/brayantad/dy/splash/activity/SplashActivity.java +330 -0
  29. package/android/src/main/java/com/brayantad/utils/DislikeDialog.java +129 -0
  30. package/android/src/main/java/com/brayantad/utils/RewardBundleModel.java +64 -0
  31. package/android/src/main/java/com/brayantad/utils/TToast.java +43 -0
  32. package/android/src/main/java/com/brayantad/utils/Utils.java +31 -0
  33. package/android/src/main/res/drawable/btn_rounded_red.xml +10 -0
  34. package/android/src/main/res/drawable/extra_large.png +0 -0
  35. package/android/src/main/res/drawable/ic_comment_item.png +0 -0
  36. package/android/src/main/res/drawable/ic_share_item.png +0 -0
  37. package/android/src/main/res/drawable/ic_video_like.png +0 -0
  38. package/android/src/main/res/drawable/ic_video_liked.png +0 -0
  39. package/android/src/main/res/drawable/ic_video_uot.png +0 -0
  40. package/android/src/main/res/drawable/shape_corner.xml +10 -0
  41. package/android/src/main/res/drawable/shape_gradient.xml +7 -0
  42. package/android/src/main/res/drawable/splash_button.xml +10 -0
  43. package/android/src/main/res/drawable/tex15.png +0 -0
  44. package/android/src/main/res/layout/activity_all_test_tool.xml +34 -0
  45. package/android/src/main/res/layout/activity_splash.xml +62 -0
  46. package/android/src/main/res/layout/activity_tx_splash.xml +72 -0
  47. package/android/src/main/res/layout/dlg_dislike_custom.xml +14 -0
  48. package/android/src/main/res/layout/draw_video.xml +147 -0
  49. package/android/src/main/res/layout/feed_view.xml +10 -0
  50. package/android/src/main/res/layout/full_video_view.xml +7 -0
  51. package/android/src/main/res/layout/stream_view.xml +17 -0
  52. package/android/src/main/res/layout/video_view.xml +7 -0
  53. package/android/src/main/res/value/styles.xml +10 -0
  54. package/android/src/main/res/xml/file_paths.xml +9 -0
  55. package/android/src/main/res/xml/gdt_file_path.xml +9 -0
  56. package/ios/BrayantAd-Bridging-Header.h +2 -0
  57. package/ios/BrayantAd.mm +14 -0
  58. package/ios/BrayantAd.swift +8 -0
  59. package/lib/commonjs/dy/api/AdManager.js +33 -0
  60. package/lib/commonjs/dy/api/AdManager.js.map +1 -0
  61. package/lib/commonjs/dy/api/FullScreenVideo.js +56 -0
  62. package/lib/commonjs/dy/api/FullScreenVideo.js.map +1 -0
  63. package/lib/commonjs/dy/api/RewardVideo.js +41 -0
  64. package/lib/commonjs/dy/api/RewardVideo.js.map +1 -0
  65. package/lib/commonjs/dy/api/SplashAd.js +42 -0
  66. package/lib/commonjs/dy/api/SplashAd.js.map +1 -0
  67. package/lib/commonjs/dy/component/BannerAd.js +70 -0
  68. package/lib/commonjs/dy/component/BannerAd.js.map +1 -0
  69. package/lib/commonjs/dy/component/DrawFeedAd.js +69 -0
  70. package/lib/commonjs/dy/component/DrawFeedAd.js.map +1 -0
  71. package/lib/commonjs/dy/component/FeedAd.js +71 -0
  72. package/lib/commonjs/dy/component/FeedAd.js.map +1 -0
  73. package/lib/commonjs/index.js +88 -0
  74. package/lib/commonjs/index.js.map +1 -0
  75. package/lib/module/dy/api/AdManager.js +24 -0
  76. package/lib/module/dy/api/AdManager.js.map +1 -0
  77. package/lib/module/dy/api/FullScreenVideo.js +49 -0
  78. package/lib/module/dy/api/FullScreenVideo.js.map +1 -0
  79. package/lib/module/dy/api/RewardVideo.js +34 -0
  80. package/lib/module/dy/api/RewardVideo.js.map +1 -0
  81. package/lib/module/dy/api/SplashAd.js +35 -0
  82. package/lib/module/dy/api/SplashAd.js.map +1 -0
  83. package/lib/module/dy/component/BannerAd.js +63 -0
  84. package/lib/module/dy/component/BannerAd.js.map +1 -0
  85. package/lib/module/dy/component/DrawFeedAd.js +59 -0
  86. package/lib/module/dy/component/DrawFeedAd.js.map +1 -0
  87. package/lib/module/dy/component/FeedAd.js +63 -0
  88. package/lib/module/dy/component/FeedAd.js.map +1 -0
  89. package/lib/module/index.js +22 -0
  90. package/lib/module/index.js.map +1 -0
  91. package/lib/typescript/src/dy/api/AdManager.d.ts +19 -0
  92. package/lib/typescript/src/dy/api/AdManager.d.ts.map +1 -0
  93. package/lib/typescript/src/dy/api/FullScreenVideo.d.ts +22 -0
  94. package/lib/typescript/src/dy/api/FullScreenVideo.d.ts.map +1 -0
  95. package/lib/typescript/src/dy/api/RewardVideo.d.ts +15 -0
  96. package/lib/typescript/src/dy/api/RewardVideo.d.ts.map +1 -0
  97. package/lib/typescript/src/dy/api/SplashAd.d.ts +17 -0
  98. package/lib/typescript/src/dy/api/SplashAd.d.ts.map +1 -0
  99. package/lib/typescript/src/dy/component/BannerAd.d.ts +18 -0
  100. package/lib/typescript/src/dy/component/BannerAd.d.ts.map +1 -0
  101. package/lib/typescript/src/dy/component/DrawFeedAd.d.ts +23 -0
  102. package/lib/typescript/src/dy/component/DrawFeedAd.d.ts.map +1 -0
  103. package/lib/typescript/src/dy/component/FeedAd.d.ts +20 -0
  104. package/lib/typescript/src/dy/component/FeedAd.d.ts.map +1 -0
  105. package/lib/typescript/src/index.d.ts +10 -0
  106. package/lib/typescript/src/index.d.ts.map +1 -0
  107. package/package.json +160 -0
  108. package/react-native-brayant-ad.podspec +41 -0
  109. package/src/dy/api/AdManager.ts +39 -0
  110. package/src/dy/api/FullScreenVideo.ts +50 -0
  111. package/src/dy/api/RewardVideo.ts +40 -0
  112. package/src/dy/api/SplashAd.ts +43 -0
  113. package/src/dy/component/BannerAd.tsx +86 -0
  114. package/src/dy/component/DrawFeedAd.tsx +87 -0
  115. package/src/dy/component/FeedAd.tsx +78 -0
  116. package/src/index.tsx +41 -0
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 mahai
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,473 @@
1
+ # react-native-brayant-ad
2
+
3
+ 接入穿山甲SDK
4
+
5
+ ## 后期代办
6
+
7
+ 接入GeoMoreSdk
8
+
9
+ ## 安装
10
+
11
+ ```sh
12
+
13
+ npm install react-native-brayant-ad
14
+ ```
15
+
16
+ 在RN项目的 Project级别的 build.gradle 中添加如下配置 (android/build.gradle)
17
+
18
+ ```
19
+ allprojects {
20
+ repositories {
21
+ google()
22
+ mavenCentral()
23
+ // 添加穿山甲SDK仓库
24
+ maven {
25
+ url 'https://artifact.bytedance.com/repository/pangle'
26
+ }
27
+ }
28
+ }
29
+ ```
30
+
31
+ ## 必要配置
32
+
33
+ 在项目入口文件中初始化init, 如果不是全局初始化的就需要在每次调用的时候传入
34
+
35
+ ```js
36
+ import { init } from 'react-native-brayant-ad';
37
+
38
+ useEfect(() => {
39
+ init({
40
+ appid: 'xxxx',
41
+ app: 'app名称',
42
+ amount: 1000,
43
+ reward: '金币',
44
+ debug: true,
45
+ }).then((res) => {});
46
+ });
47
+ ```
48
+
49
+ ### init 方法配置
50
+
51
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
52
+ | ------ | ------------------------------- | ------- | ------------- | -------- |
53
+ | appid | 穿山甲中创建应用的appid | string | - | 是 |
54
+ | app | app名称 | string | 穿山甲媒体APP | 否 |
55
+ | uid | 有些uid和穿山甲商务有合作的需要 | string | - | 否 |
56
+ | amount | 奖励数量 | number | 1000 | 否 |
57
+ | reward | 奖励名称 | string | 金币 | 否 |
58
+ | debug | 是否是开发者模式 | boolean | false | 否 |
59
+
60
+ init 成功会返回一个promise
61
+
62
+ # 1. 开屏广告
63
+
64
+ ## API
65
+
66
+ ### dyLoadSplashAd
67
+
68
+ #### 开屏广告事件类型
69
+
70
+ ```ts
71
+ interface AD_EVENT_TYPE {
72
+ onAdError: string; // 广告加载失败监听
73
+ onAdClick: string; // 广告被点击监听
74
+ onAdClose: string; // 广告关闭
75
+ onAdSkip: string; // 用户点击跳过广告监听
76
+ onAdShow: string; // 开屏广告开始展示
77
+ }
78
+
79
+ EmuAnim = 'default' | 'none' | 'catalyst' | 'slide' | 'fade';
80
+ ```
81
+
82
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
83
+ | ------ | ------------ | ------- | ------- | -------- |
84
+ | codeid | 广告位id | string | - | 是 |
85
+ | anim | 广告进入方式 | EmuAnim | default | 否 |
86
+
87
+ ## 如何使用
88
+
89
+ > 这边案列默认全部init初始化后
90
+
91
+ ```tsx
92
+ import { dyLoadSplashAd } from 'react-native-brayant-ad';
93
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
94
+
95
+ const ScrenPage = () => {
96
+ const onOpenScren = () => {
97
+ const splashAd = dyLoadSplashAd({
98
+ codeid: '889272631',
99
+ anim: 'default',
100
+ });
101
+
102
+ splashAd.subscribe('onAdClose', (event) => {
103
+ console.log('广告关闭', event);
104
+ });
105
+
106
+ splashAd.subscribe('onAdSkip', (i) => {
107
+ console.log('用户点击跳过监听', i);
108
+ });
109
+
110
+ splashAd.subscribe('onAdError', (e) => {
111
+ console.log('开屏加载失败监听', e);
112
+ });
113
+
114
+ splashAd.subscribe('onAdClick', (e) => {
115
+ console.log('开屏被用户点击了', e);
116
+ });
117
+
118
+ splashAd.subscribe('onAdShow', (e) => {
119
+ console.log('开屏开始展示', e);
120
+ });
121
+ };
122
+
123
+ render(){
124
+ return (
125
+ <TouchableOpacity onPress={onOpenScren}>
126
+ <Text style={{ textAlign: 'center' }}> 开屏</Text>
127
+ </TouchableOpacity>
128
+ )
129
+ }
130
+
131
+ }
132
+
133
+ ```
134
+
135
+ # 2. 激励视频
136
+
137
+ ## API
138
+
139
+ ### requestPermission
140
+
141
+ > 主动看激励视频时,才检查这个权限
142
+
143
+ 无参数 `requestPermission()`
144
+
145
+ ### startRewardVideo 方法参数
146
+
147
+ > 开始看激励视频
148
+
149
+ ## API
150
+
151
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
152
+ | ------ | -------- | ------ | ------ | -------- |
153
+ | codeid | 广告位id | string | - | 是 |
154
+
155
+ #### 激励视频事件类型
156
+
157
+ ```ts
158
+ export enum AD_EVENT_TYPE {
159
+ onAdError = 'onAdError', // 广告加载失败监听
160
+ onAdLoaded = 'onAdLoaded', // 广告加载成功监听
161
+ onAdClick = 'onAdClick', // 广告被点击监听
162
+ onAdClose = 'onAdClose', // 广告关闭监听
163
+ }
164
+ ```
165
+
166
+ ## 如何使用
167
+
168
+ > 这边案列默认全部init初始化后
169
+
170
+ ```tsx
171
+ import { requestPermission, startRewardVideo } from 'react-native-brayant-ad';
172
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
173
+
174
+ const RewardVideoPage = () => {
175
+
176
+ const onStartRewardVideo = () => {
177
+ const rewardVideo = startRewardVideo({
178
+ codeid: '956956876',
179
+ });
180
+
181
+ rewardVideo.result.then((val: any) => {
182
+ console.log('RewardVideo 回调结果', val);
183
+ });
184
+
185
+ rewardVideo.subscribe('onAdLoaded', (event) => {
186
+ console.log('广告加载成功监听', event);
187
+ });
188
+
189
+ rewardVideo.subscribe('onAdError', (event) => {
190
+ console.log('广告加载失败监听', event);
191
+ });
192
+
193
+ rewardVideo.subscribe('onAdClose', (event) => {
194
+ console.log('广告被关闭监听', event);
195
+ });
196
+
197
+ rewardVideo.subscribe('onAdClick', (event) => {
198
+ console.log('广告点击查看详情监听', event);
199
+ });
200
+ };
201
+
202
+ render(){
203
+ return (
204
+ <TouchableOpacity onPress={onOpenScren}>
205
+ <Text style={{ textAlign: 'center' }}> 开屏</Text>
206
+ </TouchableOpacity>
207
+ )
208
+ }
209
+
210
+ }
211
+
212
+ ```
213
+
214
+ # 3. 全屏视频广告
215
+
216
+ ## api
217
+
218
+ ### startFullScreenVideo 方法参数
219
+
220
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
221
+ | ----------- | -------- | -------------------------- | -------- | -------- | --- | --- |
222
+ | codeid | 广告位id | string | - | 是 |
223
+ | orientation | 竖屏横屏 | 'HORIZONTAL' \| 'VERTICAL' | VERTICAL | 否 | - | 是 |
224
+
225
+ ## 使用
226
+
227
+ ```tsx
228
+ import { requestPermission, startRewardVideo } from 'react-native-brayant-ad';
229
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
230
+
231
+ const RewardVideoPage = () => {
232
+ useEffect(() => {
233
+ // step 1: 获取权限
234
+ requestPermission()
235
+ }, []);
236
+
237
+ render() {
238
+ return (
239
+ <TouchableOpacity
240
+ style={{
241
+ marginVertical: 20,
242
+ paddingHorizontal: 30,
243
+ paddingVertical: 15,
244
+ backgroundColor: '#F96',
245
+ borderRadius: 50,
246
+ }}
247
+ onPress={() => {
248
+ let fullVideo = startFullScreenVideo({
249
+ codeid: '957781965',
250
+ });
251
+ console.log('FullVideoAd rs:', fullVideo);
252
+ fullVideo.result?.then((val: any) => {
253
+ console.log('FullVideoAd rs then val', val);
254
+ });
255
+
256
+ fullVideo.subscribe('onAdLoaded' as any, (event) => {
257
+ console.log('广告加载成功监听', event);
258
+ });
259
+
260
+ fullVideo.subscribe('onAdError' as any, (event) => {
261
+ console.log('广告加载失败监听', event);
262
+ });
263
+
264
+ fullVideo.subscribe('onAdClose' as any, (event) => {
265
+ console.log('广告被关闭监听', event);
266
+ });
267
+
268
+ fullVideo.subscribe('onAdClick' as any, (event) => {
269
+ console.log('广告点击查看详情监听', event);
270
+ });
271
+ }}
272
+ >
273
+ <Text style={{ textAlign: 'center' }}> Start 全屏视频广告</Text>
274
+ </TouchableOpacity>
275
+ )
276
+ }
277
+
278
+ }
279
+ ```
280
+
281
+ # 4. Draw广告
282
+
283
+ ## api
284
+
285
+ ### loadDrawFeedAd 方法参数
286
+
287
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
288
+ | ------ | -------- | ------ | ------ | -------- | --- | --- |
289
+ | codeid | 广告位id | string | - | 是 |
290
+ | appid | 应用id | string | - | 是 | - | 是 |
291
+
292
+ ## 组件
293
+
294
+ ### DrawFeedView
295
+
296
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
297
+ | --------- | ------------------ | --------- | ------ | -------- |
298
+ | codeid | 广告位id | string | - | 是 |
299
+ | appid | 应用id | string | - | 是 |
300
+ | visible | 是否显示组件中广告 | boolean | - | 否 |
301
+ | appid | 应用id | string | - | 是 |
302
+ | style | 组件样式 | ViewStyle | - | 否 |
303
+ | onAdError | 广告错误事件 | Function | - | 否 |
304
+ | onAdShow | 显示广告事件 | Function | - | 否 |
305
+ | onAdClick | 点击广告事件 | Function | - | 否 |
306
+
307
+ ## 使用
308
+
309
+ ```tsx
310
+ import { loadDrawFeedAd, DrawFeedView } from 'react-native-brayant-ad';
311
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
312
+
313
+ const RewardVideoPage = () => {
314
+ useEffect(() => {
315
+ loadDrawFeedAd({
316
+ appid: '****',
317
+ codeid: '****',
318
+ });
319
+ }, []);
320
+
321
+ render() {
322
+ return (
323
+ <DrawFeedView
324
+ codeid={'957795405'}
325
+ appid={'5519001'}
326
+ visible={true}
327
+ onAdError={(e: any) => {
328
+ console.log('DrawFeedAd 加载失败', e);
329
+ }}
330
+ onAdShow={(e: any) => {
331
+ console.log('DrawFeedAd 开屏开始展示', e);
332
+ }}
333
+ onAdClick={(e: any) => {
334
+ console.log('onAdClick DrawFeed', e.nativeEvent);
335
+ }}
336
+ />
337
+ )
338
+ }
339
+
340
+ }
341
+ ```
342
+
343
+ # 5. Banner广告
344
+
345
+ ## 组件
346
+
347
+ ### BannerAdView
348
+
349
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
350
+ | ----------------- | ------------------ | --------- | ------ | -------- |
351
+ | codeid | 广告位id | string | - | 是 |
352
+ | adWidth | 广告宽度(dp) | number | 320 | 否 |
353
+ | adHeight | 广告高度(dp) | number | 50 | 否 |
354
+ | visible | 是否显示组件中广告 | boolean | - | 否 |
355
+ | style | 组件样式 | ViewStyle | - | 否 |
356
+ | onAdRenderSuccess | 广告渲染成功事件 | Function | - | 否 |
357
+ | onAdError | 广告加载失败事件 | Function | - | 否 |
358
+ | onAdDismiss | 广告关闭事件 | Function | - | 否 |
359
+ | onAdClick | 广告被用户点击事件 | Function | - | 否 |
360
+ | onAdShow | 广告展示事件 | Function | - | 否 |
361
+ | onAdDislike | 用户不感兴趣事件 | Function | - | 否 |
362
+
363
+ > 注意:Banner广告目前仅支持Android平台
364
+
365
+ ## 使用
366
+
367
+ ```tsx
368
+ import { BannerAdView } from 'react-native-brayant-ad';
369
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
370
+
371
+ const BannerAdPage = () => {
372
+ const [showBannerView, setShowBannerView] = useState(false);
373
+
374
+ useEffect(() => {
375
+ init({
376
+ appid: '****',
377
+ app: '设备信息',
378
+ }).then((res) => {
379
+ setShowBannerView(true);
380
+ });
381
+ }, []);
382
+
383
+ return (
384
+ <View>
385
+ <BannerAdView
386
+ codeid={'****'}
387
+ adWidth={320}
388
+ adHeight={50}
389
+ visible={showBannerView}
390
+ onAdRenderSuccess={(data: any) => {
391
+ console.log('Banner 广告渲染成功!', data);
392
+ }}
393
+ onAdError={(err: any) => {
394
+ console.log('Banner 广告加载失败!', err);
395
+ }}
396
+ onAdDismiss={(data: any) => {
397
+ console.log('Banner 广告关闭!', data);
398
+ }}
399
+ onAdClick={(val: any) => {
400
+ console.log('Banner 广告被用户点击!', val);
401
+ }}
402
+ onAdShow={(val: any) => {
403
+ console.log('Banner 广告展示', val);
404
+ }}
405
+ onAdDislike={(val: any) => {
406
+ console.log('Banner 用户不感兴趣', val);
407
+ }}
408
+ />
409
+ </View>
410
+ );
411
+ };
412
+ ```
413
+
414
+ # 6. 信息流广告
415
+
416
+ ## 组件
417
+
418
+ ### FeedAdView
419
+
420
+ | 参数 | 说明 | 类型 | 默认值 | 是否必填 |
421
+ | ---------- | ------------------ | --------- | ------ | -------- |
422
+ | codeid | 广告位id | string | - | 是 |
423
+ | adWidth | 广告宽度 | number | 375 | 否 |
424
+ | visible | 是否显示组件中广告 | boolean | - | 否 |
425
+ | style | 组件样式 | ViewStyle | - | 否 |
426
+ | onAdLayout | 广告加载成功事件 | Function | - | 否 |
427
+ | onAdClose | 广告关闭事件 | Function | - | 否 |
428
+ | onAdClick | 广告被用户点击事件 | Function | - | 否 |
429
+ | onAdError | 广告加载失败事件 | Function | - | 否 |
430
+
431
+ ## 使用
432
+
433
+ ```tsx
434
+ import { FeedAdView } from 'react-native-brayant-ad';
435
+ import { StyleSheet, Text, View, TouchableOpacity } from 'react-native';
436
+
437
+ const RewardVideoPage = () => {
438
+ useEffect(() => {
439
+
440
+ }, []);
441
+
442
+ render() {
443
+ return (
444
+ <FeedAdView
445
+ codeid={'****'}
446
+ adWidth={400}
447
+ visible={showFeedView}
448
+ onAdLayout={(data: any) => {
449
+ console.log('Feed 广告加载成功!', data);
450
+ }}
451
+ onAdClose={(data: any) => {
452
+ console.log('Feed 广告关闭!', data);
453
+ }}
454
+ onAdError={(err: any) => {
455
+ console.log('Feed 广告加载失败!', err);
456
+ }}
457
+ onAdClick={(val: any) => {
458
+ console.log('Feed 广告被用户点击!', val);
459
+ }}
460
+ />
461
+ )
462
+ }
463
+
464
+ }
465
+ ```
466
+
467
+ ## License
468
+
469
+ MIT
470
+
471
+ ---
472
+
473
+ Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
@@ -0,0 +1,100 @@
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+ def buildGradleVersion = ext.has('buildGradlePluginVersion') ? ext.get('buildGradlePluginVersion') : '8.1.4'
7
+
8
+ dependencies {
9
+ classpath "com.android.tools.build:gradle:$buildGradleVersion"
10
+ }
11
+ }
12
+
13
+ def isNewArchitectureEnabled() {
14
+ return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
15
+ }
16
+
17
+ apply plugin: "com.android.library"
18
+
19
+ if (isNewArchitectureEnabled()) {
20
+ apply plugin: "com.facebook.react"
21
+ }
22
+
23
+ def getExtOrDefault(name) {
24
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["BrayantAd_" + name]
25
+ }
26
+
27
+ def getExtOrIntegerDefault(name) {
28
+ return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["BrayantAd_" + name]).toInteger()
29
+ }
30
+
31
+ static def supportsNamespace() {
32
+ def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
33
+ def major = parsed[0].toInteger()
34
+ def minor = parsed[1].toInteger()
35
+
36
+ // Namespace support was added in 7.3.0
37
+ return (major == 7 && minor >= 3) || major >= 8
38
+ }
39
+
40
+ android {
41
+ compileSdk 34
42
+ if (supportsNamespace()) {
43
+ namespace "com.brayantad"
44
+
45
+ sourceSets {
46
+ main {
47
+ manifest.srcFile "src/main/AndroidManifestNew.xml"
48
+ }
49
+ }
50
+ }
51
+
52
+ compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
53
+
54
+ defaultConfig {
55
+ minSdkVersion getExtOrIntegerDefault("minSdkVersion")
56
+ targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
57
+
58
+ }
59
+
60
+ buildTypes {
61
+ release {
62
+ minifyEnabled false
63
+ }
64
+ }
65
+
66
+ lintOptions {
67
+ disable "GradleCompatible"
68
+ }
69
+
70
+ compileOptions {
71
+ sourceCompatibility JavaVersion.VERSION_1_8
72
+ targetCompatibility JavaVersion.VERSION_1_8
73
+ }
74
+ }
75
+ repositories {
76
+ mavenCentral()
77
+ google()
78
+ maven {
79
+ url 'https://artifact.bytedance.com/repository/pangle'
80
+ }
81
+ }
82
+
83
+
84
+ dependencies {
85
+ implementation 'com.pangle.cn:ads-sdk-pro:7.3.0.8'
86
+ implementation 'com.squareup.okhttp3:okhttp:3.12.1'
87
+
88
+ // React Native dependencies (compileOnly for library usage)
89
+ // Using the version from React Native 0.74.1
90
+ compileOnly "com.facebook.react:react-android:0.74.1"
91
+
92
+ // AndroidX dependencies
93
+ implementation 'androidx.appcompat:appcompat:1.6.1'
94
+ implementation 'androidx.annotation:annotation:1.7.0'
95
+ implementation 'androidx.core:core:1.12.0'
96
+
97
+ implementation "com.github.bumptech.glide:glide:4.11.0"
98
+ }
99
+
100
+
@@ -0,0 +1,23 @@
1
+ # Project-wide Gradle settings.
2
+
3
+ # Specifies the JVM arguments used for the daemon process.
4
+ org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
5
+
6
+ # AndroidX package structure
7
+ android.useAndroidX=true
8
+ android.enableJetifier=true
9
+
10
+ # React Native architectures
11
+ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
12
+
13
+ # New Architecture
14
+ newArchEnabled=false
15
+
16
+ # Hermes
17
+ hermesEnabled=false
18
+
19
+ # Library custom properties (can be overridden by host project)
20
+ BrayantAd_kotlinVersion=1.9.22
21
+ BrayantAd_minSdkVersion=24
22
+ BrayantAd_targetSdkVersion=34
23
+ BrayantAd_compileSdkVersion=34
@@ -0,0 +1,36 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
+ package="com.brayantad">
3
+
4
+ <!--必要权限-->
5
+ <uses-permission android:name="android.permission.INTERNET" />
6
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
7
+
8
+ <!--可选权限-->
9
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
10
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
11
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
12
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
13
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
14
+ <!-- <uses-permission android:name="android.permission.GET_TASKS"/> -->
15
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
16
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
17
+
18
+ <application>
19
+
20
+ <provider
21
+ android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
22
+ android:authorities="${applicationId}.TTFileProvider"
23
+ android:exported="false"
24
+ android:grantUriPermissions="true">
25
+ <meta-data
26
+ android:name="android.support.FILE_PROVIDER_PATHS"
27
+ android:resource="@xml/file_paths" />
28
+ </provider>
29
+ <provider
30
+ android:name="com.bytedance.sdk.openadsdk.multipro.TTMultiProvider"
31
+ android:authorities="${applicationId}.TTMultiProvider"
32
+ android:exported="false" />
33
+
34
+ </application>
35
+
36
+ </manifest>
@@ -0,0 +1,33 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ <!--必要权限-->
3
+ <uses-permission android:name="android.permission.INTERNET" />
4
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
5
+
6
+ <!--可选权限-->
7
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
8
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
9
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
10
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
11
+ <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
12
+ <!-- <uses-permission android:name="android.permission.GET_TASKS"/> -->
13
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
14
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
15
+ <application>
16
+
17
+ <activity android:name=".dy.splash.activity.SplashActivity" />
18
+ <activity android:name=".dy.fullScreen.activity.FullScreenActivity" />
19
+ <activity android:name=".dy.rewardVideo.activity.RewardActivity" />
20
+
21
+ <provider
22
+ android:name="com.bytedance.sdk.openadsdk.TTFileProvider"
23
+ android:authorities="${applicationId}.TTFileProvider"
24
+ android:exported="false"
25
+ android:grantUriPermissions="true">
26
+ <meta-data
27
+ android:name="android.support.FILE_PROVIDER_PATHS"
28
+ android:resource="@xml/file_paths" />
29
+ </provider>
30
+
31
+
32
+ </application>
33
+ </manifest>