@bigcrunch/react-native-ads 0.4.0 → 0.5.0
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/README.md +5 -5
- package/android/bigcrunch-ads/com/bigcrunch/ads/BigCrunchAds.kt +434 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/BigCrunchBannerView.kt +484 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/BigCrunchInterstitial.kt +403 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/BigCrunchRewarded.kt +409 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/adapters/GoogleAdsAdapter.kt +592 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/AdOrchestrator.kt +623 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/AnalyticsClient.kt +719 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/BidRequestClient.kt +364 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/ConfigManager.kt +301 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/DeviceContext.kt +385 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/RewardedCallback.kt +42 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/core/SessionManager.kt +330 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/internal/DeviceHelper.kt +60 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/internal/HttpClient.kt +114 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/internal/Logger.kt +71 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/internal/PrivacyStore.kt +125 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/internal/Storage.kt +88 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/listeners/BannerAdListener.kt +55 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/listeners/InterstitialAdListener.kt +55 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/listeners/RewardedAdListener.kt +58 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/models/AdEvent.kt +880 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/models/AppConfig.kt +90 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/models/DeviceData.kt +18 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/models/PlacementConfig.kt +70 -0
- package/android/bigcrunch-ads/com/bigcrunch/ads/models/SessionInfo.kt +21 -0
- package/android/build.gradle +22 -10
- package/android/settings.gradle +2 -6
- package/ios/BigCrunchAds/Sources/Adapters/GoogleAdsAdapter.swift +512 -0
- package/ios/BigCrunchAds/Sources/BigCrunchAds.swift +387 -0
- package/ios/BigCrunchAds/Sources/BigCrunchBannerView.swift +448 -0
- package/ios/BigCrunchAds/Sources/BigCrunchInterstitial.swift +412 -0
- package/ios/BigCrunchAds/Sources/BigCrunchRewarded.swift +523 -0
- package/ios/BigCrunchAds/Sources/Core/AdOrchestrator.swift +514 -0
- package/ios/BigCrunchAds/Sources/Core/AnalyticsClient.swift +874 -0
- package/ios/BigCrunchAds/Sources/Core/BidRequestClient.swift +344 -0
- package/ios/BigCrunchAds/Sources/Core/ConfigManager.swift +306 -0
- package/ios/BigCrunchAds/Sources/Core/DeviceContext.swift +284 -0
- package/ios/BigCrunchAds/Sources/Core/SessionManager.swift +392 -0
- package/ios/BigCrunchAds/Sources/Internal/HTTPClient.swift +146 -0
- package/ios/BigCrunchAds/Sources/Internal/Logger.swift +62 -0
- package/ios/BigCrunchAds/Sources/Internal/PrivacyStore.swift +129 -0
- package/ios/BigCrunchAds/Sources/Internal/Storage.swift +73 -0
- package/ios/BigCrunchAds/Sources/Models/AdEvent.swift +784 -0
- package/ios/BigCrunchAds/Sources/Models/AppConfig.swift +100 -0
- package/ios/BigCrunchAds/Sources/Models/DeviceData.swift +68 -0
- package/ios/BigCrunchAds/Sources/Models/PlacementConfig.swift +137 -0
- package/ios/BigCrunchAds/Sources/Models/SessionInfo.swift +48 -0
- package/ios/BigCrunchAdsModule.swift +0 -1
- package/ios/BigCrunchBannerViewManager.swift +0 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/package.json +8 -2
- package/react-native-bigcrunch-ads.podspec +0 -1
- package/scripts/inject-version.js +55 -0
- package/src/index.ts +3 -2
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
package com.bigcrunch.ads
|
|
2
|
+
|
|
3
|
+
import android.app.Activity
|
|
4
|
+
import android.content.Context
|
|
5
|
+
import com.bigcrunch.ads.adapters.GoogleAdsAdapter
|
|
6
|
+
import com.bigcrunch.ads.core.AdOrchestrator
|
|
7
|
+
import com.bigcrunch.ads.core.RewardedCallback
|
|
8
|
+
import com.bigcrunch.ads.internal.BCLogger
|
|
9
|
+
import com.bigcrunch.ads.listeners.RewardedAdListener
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* BigCrunch Rewarded Ads - Static API for rewarded video ads
|
|
13
|
+
*
|
|
14
|
+
* Rewarded ads are full-screen video ads that reward users for watching.
|
|
15
|
+
* Users have the option to watch the ad in exchange for in-app rewards.
|
|
16
|
+
*
|
|
17
|
+
* Usage:
|
|
18
|
+
* ```kotlin
|
|
19
|
+
* // 1. Preload the ad
|
|
20
|
+
* BigCrunchRewarded.preload(
|
|
21
|
+
* context = applicationContext,
|
|
22
|
+
* placementId = "daily_reward",
|
|
23
|
+
* callback = object : BigCrunchRewarded.PreloadCallback {
|
|
24
|
+
* override fun onAdLoaded() { /* ad ready to show */ }
|
|
25
|
+
* override fun onAdFailedToLoad(error: String) { /* handle error */ }
|
|
26
|
+
* }
|
|
27
|
+
* )
|
|
28
|
+
*
|
|
29
|
+
* // 2. Check if ready
|
|
30
|
+
* if (BigCrunchRewarded.isReady("daily_reward")) {
|
|
31
|
+
* // Ad is ready to show
|
|
32
|
+
* }
|
|
33
|
+
*
|
|
34
|
+
* // 3. Show when user requests
|
|
35
|
+
* BigCrunchRewarded.show(
|
|
36
|
+
* activity = this,
|
|
37
|
+
* placementId = "daily_reward",
|
|
38
|
+
* callback = object : BigCrunchRewarded.ShowCallback {
|
|
39
|
+
* override fun onUserEarnedReward(type: String, amount: Int) {
|
|
40
|
+
* // Give user their reward
|
|
41
|
+
* }
|
|
42
|
+
* override fun onAdDismissed() { /* ad closed */ }
|
|
43
|
+
* override fun onAdFailedToShow(error: String) { /* handle error */ }
|
|
44
|
+
* }
|
|
45
|
+
* )
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
object BigCrunchRewarded {
|
|
49
|
+
|
|
50
|
+
private val TAG = "BigCrunchRewarded"
|
|
51
|
+
private var adOrchestrator: AdOrchestrator? = null
|
|
52
|
+
private val orchestratorLock = Any()
|
|
53
|
+
|
|
54
|
+
// Listeners for React Native compatibility
|
|
55
|
+
private val listeners = mutableMapOf<String, RewardedAdListener>()
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Callback interface for preloading rewarded ads
|
|
59
|
+
*/
|
|
60
|
+
interface PreloadCallback {
|
|
61
|
+
/**
|
|
62
|
+
* Called when the ad has been successfully loaded and is ready to show
|
|
63
|
+
*/
|
|
64
|
+
fun onAdLoaded()
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Called when the ad fails to load
|
|
68
|
+
* @param error Description of what went wrong
|
|
69
|
+
*/
|
|
70
|
+
fun onAdFailedToLoad(error: String)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Callback interface for showing rewarded ads
|
|
75
|
+
*/
|
|
76
|
+
interface ShowCallback {
|
|
77
|
+
/**
|
|
78
|
+
* Called when the user has earned a reward by watching the ad
|
|
79
|
+
* @param type The type of reward (e.g., "coins", "points")
|
|
80
|
+
* @param amount The amount of reward earned
|
|
81
|
+
*/
|
|
82
|
+
fun onUserEarnedReward(type: String, amount: Int)
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Called when the ad is dismissed (whether reward was earned or not)
|
|
86
|
+
*/
|
|
87
|
+
fun onAdDismissed()
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Called when the ad was shown successfully
|
|
91
|
+
*/
|
|
92
|
+
fun onAdShowed() {}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Called when the user clicks on the ad
|
|
96
|
+
*/
|
|
97
|
+
fun onAdClicked() {}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Called when the ad fails to show
|
|
101
|
+
* @param error Description of what went wrong
|
|
102
|
+
*/
|
|
103
|
+
fun onAdFailedToShow(error: String)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Combined callback interface (for compatibility)
|
|
108
|
+
*/
|
|
109
|
+
interface Callback : PreloadCallback, ShowCallback
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Preload a rewarded ad with callback
|
|
113
|
+
*
|
|
114
|
+
* @param context Application or Activity context
|
|
115
|
+
* @param placementId The placement ID from BigCrunch dashboard
|
|
116
|
+
* @param callback Callback for load events
|
|
117
|
+
*/
|
|
118
|
+
fun preload(
|
|
119
|
+
context: Context,
|
|
120
|
+
placementId: String,
|
|
121
|
+
callback: PreloadCallback? = null
|
|
122
|
+
) {
|
|
123
|
+
BCLogger.d(TAG, "Preloading rewarded ad: $placementId")
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
BigCrunchAds.requireInitialized()
|
|
127
|
+
} catch (e: IllegalStateException) {
|
|
128
|
+
BCLogger.e(TAG, "SDK not initialized", e)
|
|
129
|
+
callback?.onAdFailedToLoad("SDK not initialized")
|
|
130
|
+
return
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
val orchestrator = getOrCreateOrchestrator(context)
|
|
134
|
+
|
|
135
|
+
// Create internal callback
|
|
136
|
+
val rewardedCallback = object : RewardedCallback {
|
|
137
|
+
override fun onAdLoaded() {
|
|
138
|
+
BCLogger.d(TAG, "Rewarded ad loaded: $placementId")
|
|
139
|
+
callback?.onAdLoaded()
|
|
140
|
+
listeners[placementId]?.onAdLoaded()
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
override fun onAdFailedToLoad(error: String) {
|
|
144
|
+
BCLogger.w(TAG, "Rewarded ad failed to load: $placementId - $error")
|
|
145
|
+
callback?.onAdFailedToLoad(error)
|
|
146
|
+
listeners[placementId]?.onAdFailedToLoad("LOAD_ERROR", error)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
override fun onAdShowed() {
|
|
150
|
+
BCLogger.d(TAG, "Rewarded ad showed: $placementId")
|
|
151
|
+
listeners[placementId]?.onAdShowed()
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
override fun onAdDismissed() {
|
|
155
|
+
BCLogger.d(TAG, "Rewarded ad dismissed: $placementId")
|
|
156
|
+
listeners[placementId]?.onAdDismissed()
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
override fun onAdClicked() {
|
|
160
|
+
BCLogger.d(TAG, "Rewarded ad clicked: $placementId")
|
|
161
|
+
listeners[placementId]?.onAdClicked()
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
override fun onUserEarnedReward(type: String, amount: Int) {
|
|
165
|
+
BCLogger.d(TAG, "User earned reward: $type x$amount for $placementId")
|
|
166
|
+
listeners[placementId]?.onUserEarnedReward(type, amount)
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Load through AdOrchestrator
|
|
171
|
+
orchestrator.preloadRewardedAd(placementId, rewardedCallback)
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Preload a rewarded ad without callback
|
|
176
|
+
*
|
|
177
|
+
* @param placementId The placement ID from BigCrunch dashboard
|
|
178
|
+
*/
|
|
179
|
+
fun preload(placementId: String) {
|
|
180
|
+
// Need context from somewhere - could get from last show() call
|
|
181
|
+
BCLogger.w(TAG, "Preload called without context - not implemented")
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Load a rewarded ad with custom targeting
|
|
186
|
+
*
|
|
187
|
+
* @param placementId The placement ID for the ad
|
|
188
|
+
* @param customTargeting Optional custom targeting parameters
|
|
189
|
+
*/
|
|
190
|
+
fun load(placementId: String, customTargeting: Map<String, String>? = null) {
|
|
191
|
+
BCLogger.d(TAG, "Loading rewarded ad: $placementId")
|
|
192
|
+
if (customTargeting != null) {
|
|
193
|
+
BCLogger.d(TAG, "Custom targeting requested: ${customTargeting.size} parameters")
|
|
194
|
+
}
|
|
195
|
+
// Need context - could store from initialization
|
|
196
|
+
preload(placementId)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Show a preloaded rewarded ad
|
|
201
|
+
*
|
|
202
|
+
* @param activity The activity to show the ad in
|
|
203
|
+
* @param placementId The placement ID
|
|
204
|
+
* @param callback Callback for ad events
|
|
205
|
+
* @return true if the ad was shown, false if not ready
|
|
206
|
+
*/
|
|
207
|
+
fun show(
|
|
208
|
+
activity: Activity,
|
|
209
|
+
placementId: String,
|
|
210
|
+
callback: ShowCallback? = null
|
|
211
|
+
): Boolean {
|
|
212
|
+
BCLogger.d(TAG, "Attempting to show rewarded ad: $placementId")
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
BigCrunchAds.requireInitialized()
|
|
216
|
+
} catch (e: IllegalStateException) {
|
|
217
|
+
BCLogger.e(TAG, "SDK not initialized", e)
|
|
218
|
+
callback?.onAdFailedToShow("SDK not initialized")
|
|
219
|
+
listeners[placementId]?.onAdFailedToLoad("SDK_NOT_INITIALIZED", "SDK not initialized")
|
|
220
|
+
return false
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (!isReady(placementId)) {
|
|
224
|
+
val error = "Rewarded ad not ready: $placementId"
|
|
225
|
+
BCLogger.w(TAG, error)
|
|
226
|
+
callback?.onAdFailedToShow(error)
|
|
227
|
+
listeners[placementId]?.onAdFailedToLoad("NOT_READY", error)
|
|
228
|
+
return false
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
val orchestrator = getOrCreateOrchestrator(activity)
|
|
232
|
+
|
|
233
|
+
// Create internal callback
|
|
234
|
+
val rewardedCallback = object : RewardedCallback {
|
|
235
|
+
override fun onAdLoaded() {
|
|
236
|
+
// Not used during show
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
override fun onAdFailedToLoad(error: String) {
|
|
240
|
+
BCLogger.w(TAG, "Rewarded ad failed to show: $placementId - $error")
|
|
241
|
+
callback?.onAdFailedToShow(error)
|
|
242
|
+
listeners[placementId]?.onAdFailedToLoad("SHOW_ERROR", error)
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
override fun onAdShowed() {
|
|
246
|
+
BCLogger.d(TAG, "Rewarded ad showed: $placementId")
|
|
247
|
+
callback?.onAdShowed()
|
|
248
|
+
listeners[placementId]?.onAdShowed()
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
override fun onAdDismissed() {
|
|
252
|
+
BCLogger.d(TAG, "Rewarded ad dismissed: $placementId")
|
|
253
|
+
callback?.onAdDismissed()
|
|
254
|
+
listeners[placementId]?.onAdDismissed()
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
override fun onAdClicked() {
|
|
258
|
+
BCLogger.d(TAG, "Rewarded ad clicked: $placementId")
|
|
259
|
+
callback?.onAdClicked()
|
|
260
|
+
listeners[placementId]?.onAdClicked()
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
override fun onUserEarnedReward(type: String, amount: Int) {
|
|
264
|
+
BCLogger.d(TAG, "User earned reward: $type x$amount for $placementId")
|
|
265
|
+
callback?.onUserEarnedReward(type, amount)
|
|
266
|
+
listeners[placementId]?.onUserEarnedReward(type, amount)
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return orchestrator.showRewardedAd(activity, placementId, rewardedCallback)
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Show a preloaded rewarded ad with listener
|
|
275
|
+
*
|
|
276
|
+
* @param activity The activity to show the ad in
|
|
277
|
+
* @param placementId The placement ID
|
|
278
|
+
* @param listener Listener for ad events
|
|
279
|
+
* @return true if the ad was shown, false if not ready
|
|
280
|
+
*/
|
|
281
|
+
fun show(
|
|
282
|
+
activity: Activity,
|
|
283
|
+
placementId: String,
|
|
284
|
+
listener: RewardedAdListener? = null
|
|
285
|
+
): Boolean {
|
|
286
|
+
if (listener != null) {
|
|
287
|
+
listeners[placementId] = listener
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Convert listener to callback
|
|
291
|
+
val callback = if (listener != null) {
|
|
292
|
+
object : ShowCallback {
|
|
293
|
+
override fun onUserEarnedReward(type: String, amount: Int) {
|
|
294
|
+
listener.onUserEarnedReward(type, amount)
|
|
295
|
+
}
|
|
296
|
+
override fun onAdDismissed() {
|
|
297
|
+
listener.onAdDismissed()
|
|
298
|
+
}
|
|
299
|
+
override fun onAdShowed() {
|
|
300
|
+
listener.onAdShowed()
|
|
301
|
+
}
|
|
302
|
+
override fun onAdClicked() {
|
|
303
|
+
listener.onAdClicked()
|
|
304
|
+
}
|
|
305
|
+
override fun onAdFailedToShow(error: String) {
|
|
306
|
+
listener.onAdFailedToLoad("SHOW_ERROR", error)
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
} else null
|
|
310
|
+
|
|
311
|
+
return show(activity, placementId, callback)
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Check if a rewarded ad is ready to show
|
|
316
|
+
*
|
|
317
|
+
* @param placementId The placement ID
|
|
318
|
+
* @return true if ad is loaded and ready
|
|
319
|
+
*/
|
|
320
|
+
fun isReady(placementId: String): Boolean {
|
|
321
|
+
return synchronized(orchestratorLock) {
|
|
322
|
+
adOrchestrator?.isRewardedReady(placementId) ?: false
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Check if a rewarded ad is loaded (alias for isReady)
|
|
328
|
+
*
|
|
329
|
+
* @param placementId The placement ID
|
|
330
|
+
* @return true if ad is loaded and ready
|
|
331
|
+
*/
|
|
332
|
+
fun isLoaded(placementId: String): Boolean = isReady(placementId)
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Destroy a specific rewarded ad
|
|
336
|
+
*
|
|
337
|
+
* @param placementId The placement ID to destroy
|
|
338
|
+
*/
|
|
339
|
+
fun destroy(placementId: String) {
|
|
340
|
+
BCLogger.d(TAG, "Destroying rewarded ad: $placementId")
|
|
341
|
+
synchronized(orchestratorLock) {
|
|
342
|
+
adOrchestrator?.destroyRewardedAd(placementId)
|
|
343
|
+
listeners.remove(placementId)
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Destroy all cached rewarded ads
|
|
349
|
+
*/
|
|
350
|
+
fun destroyAll() {
|
|
351
|
+
BCLogger.d(TAG, "Destroying all rewarded ads")
|
|
352
|
+
synchronized(orchestratorLock) {
|
|
353
|
+
adOrchestrator?.clearCache()
|
|
354
|
+
listeners.clear()
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Clear all cached rewarded ads
|
|
360
|
+
*/
|
|
361
|
+
fun clearCache() {
|
|
362
|
+
destroyAll()
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Set a listener for a placement
|
|
367
|
+
*
|
|
368
|
+
* @param placementId The placement ID
|
|
369
|
+
* @param listener The listener for events
|
|
370
|
+
*/
|
|
371
|
+
fun setListener(placementId: String, listener: RewardedAdListener?) {
|
|
372
|
+
if (listener != null) {
|
|
373
|
+
listeners[placementId] = listener
|
|
374
|
+
} else {
|
|
375
|
+
listeners.remove(placementId)
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
private fun getOrCreateOrchestrator(context: Context?): AdOrchestrator {
|
|
380
|
+
synchronized(orchestratorLock) {
|
|
381
|
+
if (adOrchestrator == null) {
|
|
382
|
+
val ctx = context?.applicationContext
|
|
383
|
+
?: throw IllegalStateException("Context required to create AdOrchestrator")
|
|
384
|
+
|
|
385
|
+
val configManager = BigCrunchAds.getConfigManager()
|
|
386
|
+
val analyticsClient = BigCrunchAds.getAnalyticsClient()
|
|
387
|
+
val googleAdsAdapter = GoogleAdsAdapter(ctx, analyticsClient)
|
|
388
|
+
|
|
389
|
+
val bidRequestClient = BigCrunchAds.bidRequestClient ?: com.bigcrunch.ads.core.BidRequestClient(
|
|
390
|
+
httpClient = com.bigcrunch.ads.internal.HttpClient(),
|
|
391
|
+
configManager = configManager,
|
|
392
|
+
privacyStore = BigCrunchAds.privacyStore,
|
|
393
|
+
s2sConfig = com.bigcrunch.ads.models.S2SConfig(enabled = false, serverUrl = "", timeoutMs = 0)
|
|
394
|
+
)
|
|
395
|
+
|
|
396
|
+
adOrchestrator = AdOrchestrator(
|
|
397
|
+
ctx,
|
|
398
|
+
configManager,
|
|
399
|
+
analyticsClient,
|
|
400
|
+
bidRequestClient,
|
|
401
|
+
googleAdsAdapter
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
BCLogger.d(TAG, "Created new AdOrchestrator for rewarded ads")
|
|
405
|
+
}
|
|
406
|
+
return adOrchestrator!!
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|