@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.
- package/LICENSE +20 -0
- package/README.md +473 -0
- package/android/build.gradle +100 -0
- package/android/gradle.properties +23 -0
- package/android/libs/open_ad_sdk_6.1.0.4.aar +0 -0
- package/android/src/main/AndroidManifest.xml +36 -0
- package/android/src/main/AndroidManifestNew.xml +33 -0
- package/android/src/main/java/com/brayantad/AdManager.java +183 -0
- package/android/src/main/java/com/brayantad/BrayantAdModule.java +32 -0
- package/android/src/main/java/com/brayantad/BrayantAdPackage.java +46 -0
- package/android/src/main/java/com/brayantad/WeakHandler.java +34 -0
- package/android/src/main/java/com/brayantad/dy/DyADCore.java +144 -0
- package/android/src/main/java/com/brayantad/dy/TTAdManagerHolder.java +56 -0
- package/android/src/main/java/com/brayantad/dy/WeakHandler.java +34 -0
- package/android/src/main/java/com/brayantad/dy/banner/BannerAdViewManager.java +67 -0
- package/android/src/main/java/com/brayantad/dy/banner/view/BannerAdView.java +275 -0
- package/android/src/main/java/com/brayantad/dy/drawFeed/DrawFeedViewManager.java +50 -0
- package/android/src/main/java/com/brayantad/dy/drawFeed/DrawFeedViewModule.java +86 -0
- package/android/src/main/java/com/brayantad/dy/drawFeed/view/DrawFeedView.java +484 -0
- package/android/src/main/java/com/brayantad/dy/feedAd/FeedAdViewManager.java +62 -0
- package/android/src/main/java/com/brayantad/dy/feedAd/view/FeedAdView.java +358 -0
- package/android/src/main/java/com/brayantad/dy/fullScreen/FullScreenVideoModule.java +69 -0
- package/android/src/main/java/com/brayantad/dy/fullScreen/activity/FullScreenActivity.java +197 -0
- package/android/src/main/java/com/brayantad/dy/rewardVideo/RewardVideoModule.java +80 -0
- package/android/src/main/java/com/brayantad/dy/rewardVideo/activity/RewardActivity.java +353 -0
- package/android/src/main/java/com/brayantad/dy/service/CSJSplashAd.java +140 -0
- package/android/src/main/java/com/brayantad/dy/splash/SplashAdModule.java +88 -0
- package/android/src/main/java/com/brayantad/dy/splash/activity/SplashActivity.java +330 -0
- package/android/src/main/java/com/brayantad/utils/DislikeDialog.java +129 -0
- package/android/src/main/java/com/brayantad/utils/RewardBundleModel.java +64 -0
- package/android/src/main/java/com/brayantad/utils/TToast.java +43 -0
- package/android/src/main/java/com/brayantad/utils/Utils.java +31 -0
- package/android/src/main/res/drawable/btn_rounded_red.xml +10 -0
- package/android/src/main/res/drawable/extra_large.png +0 -0
- package/android/src/main/res/drawable/ic_comment_item.png +0 -0
- package/android/src/main/res/drawable/ic_share_item.png +0 -0
- package/android/src/main/res/drawable/ic_video_like.png +0 -0
- package/android/src/main/res/drawable/ic_video_liked.png +0 -0
- package/android/src/main/res/drawable/ic_video_uot.png +0 -0
- package/android/src/main/res/drawable/shape_corner.xml +10 -0
- package/android/src/main/res/drawable/shape_gradient.xml +7 -0
- package/android/src/main/res/drawable/splash_button.xml +10 -0
- package/android/src/main/res/drawable/tex15.png +0 -0
- package/android/src/main/res/layout/activity_all_test_tool.xml +34 -0
- package/android/src/main/res/layout/activity_splash.xml +62 -0
- package/android/src/main/res/layout/activity_tx_splash.xml +72 -0
- package/android/src/main/res/layout/dlg_dislike_custom.xml +14 -0
- package/android/src/main/res/layout/draw_video.xml +147 -0
- package/android/src/main/res/layout/feed_view.xml +10 -0
- package/android/src/main/res/layout/full_video_view.xml +7 -0
- package/android/src/main/res/layout/stream_view.xml +17 -0
- package/android/src/main/res/layout/video_view.xml +7 -0
- package/android/src/main/res/value/styles.xml +10 -0
- package/android/src/main/res/xml/file_paths.xml +9 -0
- package/android/src/main/res/xml/gdt_file_path.xml +9 -0
- package/ios/BrayantAd-Bridging-Header.h +2 -0
- package/ios/BrayantAd.mm +14 -0
- package/ios/BrayantAd.swift +8 -0
- package/lib/commonjs/dy/api/AdManager.js +33 -0
- package/lib/commonjs/dy/api/AdManager.js.map +1 -0
- package/lib/commonjs/dy/api/FullScreenVideo.js +56 -0
- package/lib/commonjs/dy/api/FullScreenVideo.js.map +1 -0
- package/lib/commonjs/dy/api/RewardVideo.js +41 -0
- package/lib/commonjs/dy/api/RewardVideo.js.map +1 -0
- package/lib/commonjs/dy/api/SplashAd.js +42 -0
- package/lib/commonjs/dy/api/SplashAd.js.map +1 -0
- package/lib/commonjs/dy/component/BannerAd.js +70 -0
- package/lib/commonjs/dy/component/BannerAd.js.map +1 -0
- package/lib/commonjs/dy/component/DrawFeedAd.js +69 -0
- package/lib/commonjs/dy/component/DrawFeedAd.js.map +1 -0
- package/lib/commonjs/dy/component/FeedAd.js +71 -0
- package/lib/commonjs/dy/component/FeedAd.js.map +1 -0
- package/lib/commonjs/index.js +88 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/module/dy/api/AdManager.js +24 -0
- package/lib/module/dy/api/AdManager.js.map +1 -0
- package/lib/module/dy/api/FullScreenVideo.js +49 -0
- package/lib/module/dy/api/FullScreenVideo.js.map +1 -0
- package/lib/module/dy/api/RewardVideo.js +34 -0
- package/lib/module/dy/api/RewardVideo.js.map +1 -0
- package/lib/module/dy/api/SplashAd.js +35 -0
- package/lib/module/dy/api/SplashAd.js.map +1 -0
- package/lib/module/dy/component/BannerAd.js +63 -0
- package/lib/module/dy/component/BannerAd.js.map +1 -0
- package/lib/module/dy/component/DrawFeedAd.js +59 -0
- package/lib/module/dy/component/DrawFeedAd.js.map +1 -0
- package/lib/module/dy/component/FeedAd.js +63 -0
- package/lib/module/dy/component/FeedAd.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/src/dy/api/AdManager.d.ts +19 -0
- package/lib/typescript/src/dy/api/AdManager.d.ts.map +1 -0
- package/lib/typescript/src/dy/api/FullScreenVideo.d.ts +22 -0
- package/lib/typescript/src/dy/api/FullScreenVideo.d.ts.map +1 -0
- package/lib/typescript/src/dy/api/RewardVideo.d.ts +15 -0
- package/lib/typescript/src/dy/api/RewardVideo.d.ts.map +1 -0
- package/lib/typescript/src/dy/api/SplashAd.d.ts +17 -0
- package/lib/typescript/src/dy/api/SplashAd.d.ts.map +1 -0
- package/lib/typescript/src/dy/component/BannerAd.d.ts +18 -0
- package/lib/typescript/src/dy/component/BannerAd.d.ts.map +1 -0
- package/lib/typescript/src/dy/component/DrawFeedAd.d.ts +23 -0
- package/lib/typescript/src/dy/component/DrawFeedAd.d.ts.map +1 -0
- package/lib/typescript/src/dy/component/FeedAd.d.ts +20 -0
- package/lib/typescript/src/dy/component/FeedAd.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +160 -0
- package/react-native-brayant-ad.podspec +41 -0
- package/src/dy/api/AdManager.ts +39 -0
- package/src/dy/api/FullScreenVideo.ts +50 -0
- package/src/dy/api/RewardVideo.ts +40 -0
- package/src/dy/api/SplashAd.ts +43 -0
- package/src/dy/component/BannerAd.tsx +86 -0
- package/src/dy/component/DrawFeedAd.tsx +87 -0
- package/src/dy/component/FeedAd.tsx +78 -0
- 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
|
|
Binary file
|
|
@@ -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>
|