@ezoic/react-native-sdk 1.11.1 → 1.13.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/EzoicReactNativeSdk.podspec +2 -2
- package/README.md +244 -9
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/ezoic/reactnative/EzoicAdsModule.kt +120 -10
- package/ios/EzoicAdsImpl.swift +122 -8
- package/ios/EzoicReactNativeSdk.mm +27 -2
- package/lib/module/EzoicConsent.js +61 -0
- package/lib/module/EzoicConsent.js.map +1 -0
- package/lib/module/NativeEzoicAds.js +7 -0
- package/lib/module/NativeEzoicAds.js.map +1 -1
- package/lib/module/helpers.js +3 -0
- package/lib/module/helpers.js.map +1 -1
- package/lib/module/index.js +52 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/EzoicConsent.d.ts +42 -0
- package/lib/typescript/src/EzoicConsent.d.ts.map +1 -0
- package/lib/typescript/src/NativeEzoicAds.d.ts +23 -1
- package/lib/typescript/src/NativeEzoicAds.d.ts.map +1 -1
- package/lib/typescript/src/helpers.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +40 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/EzoicConsent.ts +69 -0
- package/src/NativeEzoicAds.ts +26 -1
- package/src/helpers.ts +5 -0
- package/src/index.tsx +62 -2
package/ios/EzoicAdsImpl.swift
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import Foundation
|
|
2
|
+
import UIKit
|
|
2
3
|
import EzoicAdsSDKBinary
|
|
3
4
|
|
|
4
5
|
@objc public class EzoicAdsImpl: NSObject {
|
|
@@ -6,6 +7,10 @@ import EzoicAdsSDKBinary
|
|
|
6
7
|
/// Set by the Obj-C module to forward rewarded lifecycle events to JS.
|
|
7
8
|
@objc public var eventEmitter: ((String, [String: Any]) -> Void)?
|
|
8
9
|
|
|
10
|
+
/// Set by the Obj-C module to resolve the view controller consent dialogs
|
|
11
|
+
/// are presented from (`RCTPresentedViewController()`). Called on main.
|
|
12
|
+
@objc public var hostViewControllerProvider: (() -> UIViewController?)?
|
|
13
|
+
|
|
9
14
|
/// Loaded rewarded ads awaiting `show`, keyed by ad unit id.
|
|
10
15
|
private var rewardedAds: [Int: EzoicRewardedAd] = [:]
|
|
11
16
|
|
|
@@ -79,7 +84,7 @@ import EzoicAdsSDKBinary
|
|
|
79
84
|
@objc public func initialize(_ config: NSDictionary,
|
|
80
85
|
resolve: @escaping (Any?) -> Void,
|
|
81
86
|
reject: @escaping (String, String, NSError?) -> Void) {
|
|
82
|
-
onMain {
|
|
87
|
+
onMain { [weak self] in
|
|
83
88
|
guard let domain = config["domain"] as? String, !domain.isEmpty else {
|
|
84
89
|
reject("EzoicAds", "initialize requires a non-empty `domain`.", nil)
|
|
85
90
|
return
|
|
@@ -90,12 +95,18 @@ import EzoicAdsSDKBinary
|
|
|
90
95
|
subjectToCOPPA: (config["subjectToCOPPA"] as? Bool) ?? false,
|
|
91
96
|
requestATTBeforeAds: (config["requestATTBeforeAds"] as? Bool) ?? true,
|
|
92
97
|
debugEnabled: (config["debugEnabled"] as? Bool) ?? false,
|
|
93
|
-
testMode: (config["testMode"] as? Bool) ?? false
|
|
98
|
+
testMode: (config["testMode"] as? Bool) ?? false,
|
|
99
|
+
autoTrackPageviews: (config["autoTrackPageviews"] as? Bool) ?? true,
|
|
100
|
+
cmpEnabled: (config["cmpEnabled"] as? Bool) ?? true
|
|
94
101
|
)
|
|
102
|
+
let autoPresentConsent = (config["autoPresentConsent"] as? Bool) ?? true
|
|
95
103
|
EzoicAds.shared.initialize(with: configuration) { result in
|
|
96
104
|
switch result {
|
|
97
105
|
case .success:
|
|
98
106
|
resolve(nil)
|
|
107
|
+
if autoPresentConsent {
|
|
108
|
+
self?.presentConsentAfterInit(debug: configuration.debugEnabled)
|
|
109
|
+
}
|
|
99
110
|
case .failure(let error):
|
|
100
111
|
reject("EzoicAds", error.localizedDescription, error as NSError)
|
|
101
112
|
}
|
|
@@ -121,11 +132,114 @@ import EzoicAdsSDKBinary
|
|
|
121
132
|
}
|
|
122
133
|
}
|
|
123
134
|
|
|
124
|
-
@objc public func trackPageview(_ resolve: @escaping (Any?) -> Void) {
|
|
135
|
+
@objc public func trackPageview(_ screen: String?, resolve: @escaping (Any?) -> Void) {
|
|
125
136
|
onMain {
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
let completion: (Bool) -> Void = { success in resolve(NSNumber(value: success)) }
|
|
138
|
+
if let screen = screen, !screen.isEmpty {
|
|
139
|
+
EzoicAds.shared.trackPageview(screen: screen, completion: completion)
|
|
140
|
+
} else {
|
|
141
|
+
EzoicAds.shared.trackPageview(completion: completion)
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/// `error` as an `NSError` whose `userInfo` also carries the numeric
|
|
147
|
+
/// `EzoicError.code`, which JS reads as `error.userInfo.code` on a rejected load.
|
|
148
|
+
private static func loadError(_ error: EzoicError) -> NSError {
|
|
149
|
+
let bridged = error as NSError
|
|
150
|
+
var userInfo = bridged.userInfo
|
|
151
|
+
userInfo[NSLocalizedDescriptionKey] = error.localizedDescription
|
|
152
|
+
userInfo["code"] = error.code
|
|
153
|
+
return NSError(domain: bridged.domain, code: bridged.code, userInfo: userInfo)
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// MARK: - Consent
|
|
157
|
+
|
|
158
|
+
/// Presents the consent dialog once after a successful `initialize`. Native
|
|
159
|
+
/// returns `.notRequired` outside GDPR / with `cmpEnabled: false` / with
|
|
160
|
+
/// another CMP or manual consent, so this is a no-op there. The outcome is
|
|
161
|
+
/// only logged; publishers wanting it call `presentConsentIfRequired`.
|
|
162
|
+
private func presentConsentAfterInit(debug: Bool) {
|
|
163
|
+
onMain { [weak self] in
|
|
164
|
+
guard let host = self?.hostViewControllerProvider?() else {
|
|
165
|
+
if debug { NSLog("[EzoicReactNativeSdk] autoPresentConsent skipped: no foreground view controller") }
|
|
166
|
+
return
|
|
167
|
+
}
|
|
168
|
+
EzoicAds.shared.presentConsentIfRequired(from: host) { outcome in
|
|
169
|
+
if debug { NSLog("[EzoicReactNativeSdk] autoPresentConsent outcome: %@", String(describing: outcome)) }
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
@objc public func presentConsentIfRequired(_ resolve: @escaping (Any?) -> Void) {
|
|
175
|
+
presentConsent(resolve) { host, completion in
|
|
176
|
+
EzoicAds.shared.presentConsentIfRequired(from: host, completion: completion)
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
@objc public func presentConsentSettings(_ resolve: @escaping (Any?) -> Void) {
|
|
181
|
+
presentConsent(resolve) { host, completion in
|
|
182
|
+
EzoicAds.shared.presentConsentSettings(from: host, completion: completion)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@objc public func isConsentRequired(_ resolve: @escaping (Any?) -> Void) {
|
|
187
|
+
onMain {
|
|
188
|
+
resolve(EzoicAds.shared.isConsentRequired.map { NSNumber(value: $0) })
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@objc public func resetConsent() {
|
|
193
|
+
onMain {
|
|
194
|
+
EzoicAds.shared.resetConsent()
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/// Presents from the top-most view controller on main and always resolves
|
|
199
|
+
/// with an outcome dictionary; with no view controller it resolves `failed(-1)`.
|
|
200
|
+
private func presentConsent(
|
|
201
|
+
_ resolve: @escaping (Any?) -> Void,
|
|
202
|
+
_ present: @escaping (UIViewController, @escaping (ConsentOutcome) -> Void) -> Void
|
|
203
|
+
) {
|
|
204
|
+
onMain { [weak self] in
|
|
205
|
+
guard let host = self?.hostViewControllerProvider?() else {
|
|
206
|
+
resolve(Self.consentFailure(code: Self.noHostCode, message: Self.noHostMessage))
|
|
207
|
+
return
|
|
208
|
+
}
|
|
209
|
+
present(host) { outcome in resolve(Self.consentOutcomeMap(outcome)) }
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
private static let noHostCode = -1
|
|
214
|
+
private static let noHostMessage = "No foreground Activity"
|
|
215
|
+
|
|
216
|
+
private static func consentFailure(code: Int, message: String) -> [String: Any] {
|
|
217
|
+
return ["type": "failed", "code": code, "message": message]
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
private static func consentOutcomeMap(_ outcome: ConsentOutcome) -> [String: Any] {
|
|
221
|
+
switch outcome {
|
|
222
|
+
case .notRequired:
|
|
223
|
+
return ["type": "notRequired"]
|
|
224
|
+
case .alreadyDecided:
|
|
225
|
+
return ["type": "alreadyDecided"]
|
|
226
|
+
case .dismissed:
|
|
227
|
+
return ["type": "dismissed"]
|
|
228
|
+
case .alreadyPresenting:
|
|
229
|
+
return ["type": "alreadyPresenting"]
|
|
230
|
+
case .decided(let decision):
|
|
231
|
+
let name: String
|
|
232
|
+
switch decision {
|
|
233
|
+
case .acceptAll: name = "acceptAll"
|
|
234
|
+
case .rejectAll: name = "rejectAll"
|
|
235
|
+
case .custom: name = "custom"
|
|
236
|
+
@unknown default: return consentFailure(code: -1, message: "Unrecognized outcome")
|
|
128
237
|
}
|
|
238
|
+
return ["type": "decided", "decision": name]
|
|
239
|
+
case .failed(let error):
|
|
240
|
+
return consentFailure(code: error.code, message: error.localizedDescription)
|
|
241
|
+
@unknown default:
|
|
242
|
+
return consentFailure(code: -1, message: "Unrecognized outcome")
|
|
129
243
|
}
|
|
130
244
|
}
|
|
131
245
|
|
|
@@ -153,7 +267,7 @@ import EzoicAdsSDKBinary
|
|
|
153
267
|
self.rewardedAds[id] = ad
|
|
154
268
|
resolve(nil)
|
|
155
269
|
case .failure(let error):
|
|
156
|
-
reject("EzoicAds", error.localizedDescription, error
|
|
270
|
+
reject("EzoicAds", error.localizedDescription, Self.loadError(error))
|
|
157
271
|
}
|
|
158
272
|
}
|
|
159
273
|
}
|
|
@@ -214,7 +328,7 @@ import EzoicAdsSDKBinary
|
|
|
214
328
|
self.interstitialAds[id] = ad
|
|
215
329
|
resolve(nil)
|
|
216
330
|
case .failure(let error):
|
|
217
|
-
reject("EzoicAds", error.localizedDescription, error
|
|
331
|
+
reject("EzoicAds", error.localizedDescription, Self.loadError(error))
|
|
218
332
|
}
|
|
219
333
|
}
|
|
220
334
|
}
|
|
@@ -467,6 +581,6 @@ extension EzoicAdsImpl: EzoicInstreamAdDelegate {
|
|
|
467
581
|
guard let pending = pendingInstreamLoads[id], !pending.settled else { return }
|
|
468
582
|
pending.settled = true
|
|
469
583
|
pendingInstreamLoads.removeValue(forKey: id)
|
|
470
|
-
pending.reject("EzoicAds", error.localizedDescription, error
|
|
584
|
+
pending.reject("EzoicAds", error.localizedDescription, Self.loadError(error))
|
|
471
585
|
}
|
|
472
586
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import "EzoicReactNativeSdk.h"
|
|
2
2
|
#import <EzoicReactNativeSdk/EzoicReactNativeSdk-Swift.h>
|
|
3
|
+
#import <React/RCTUtils.h>
|
|
3
4
|
|
|
4
5
|
static NSString *const kEzoicRewardedEvent = @"EzoicRewardedAdEvent";
|
|
5
6
|
static NSString *const kEzoicInterstitialEvent = @"EzoicInterstitialAdEvent";
|
|
@@ -22,6 +23,9 @@ static NSString *const kEzoicInterstitialEvent = @"EzoicInterstitialAdEvent";
|
|
|
22
23
|
[strongSelf sendEventWithName:name body:body];
|
|
23
24
|
}
|
|
24
25
|
};
|
|
26
|
+
_impl.hostViewControllerProvider = ^UIViewController *_Nullable {
|
|
27
|
+
return RCTPresentedViewController();
|
|
28
|
+
};
|
|
25
29
|
}
|
|
26
30
|
return self;
|
|
27
31
|
}
|
|
@@ -57,6 +61,9 @@ static NSString *const kEzoicInterstitialEvent = @"EzoicInterstitialAdEvent";
|
|
|
57
61
|
if (config.requestATTBeforeAds().has_value()) dict[@"requestATTBeforeAds"] = @(config.requestATTBeforeAds().value());
|
|
58
62
|
if (config.debugEnabled().has_value()) dict[@"debugEnabled"] = @(config.debugEnabled().value());
|
|
59
63
|
if (config.testMode().has_value()) dict[@"testMode"] = @(config.testMode().value());
|
|
64
|
+
if (config.autoTrackPageviews().has_value()) dict[@"autoTrackPageviews"] = @(config.autoTrackPageviews().value());
|
|
65
|
+
if (config.cmpEnabled().has_value()) dict[@"cmpEnabled"] = @(config.cmpEnabled().value());
|
|
66
|
+
if (config.autoPresentConsent().has_value()) dict[@"autoPresentConsent"] = @(config.autoPresentConsent().value());
|
|
60
67
|
[_impl initialize:dict
|
|
61
68
|
resolve:^(id _Nullable v) { resolve(v); }
|
|
62
69
|
reject:^(NSString *code, NSString *msg, NSError *_Nullable e) { reject(code, msg, e); }];
|
|
@@ -74,8 +81,26 @@ static NSString *const kEzoicInterstitialEvent = @"EzoicInterstitialAdEvent";
|
|
|
74
81
|
[_impl setSubjectToCOPPA:value];
|
|
75
82
|
}
|
|
76
83
|
|
|
77
|
-
- (void)trackPageview:(
|
|
78
|
-
|
|
84
|
+
- (void)trackPageview:(NSString * _Nullable)screen
|
|
85
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
86
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
87
|
+
[_impl trackPageview:screen resolve:^(id _Nullable v) { resolve(v); }];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
- (void)presentConsentIfRequired:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
|
91
|
+
[_impl presentConsentIfRequired:^(id _Nullable v) { resolve(v); }];
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
- (void)presentConsentSettings:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
|
95
|
+
[_impl presentConsentSettings:^(id _Nullable v) { resolve(v); }];
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
- (void)isConsentRequired:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
|
99
|
+
[_impl isConsentRequired:^(id _Nullable v) { resolve(v); }];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
- (void)resetConsent {
|
|
103
|
+
[_impl resetConsent];
|
|
79
104
|
}
|
|
80
105
|
|
|
81
106
|
- (void)loadRewardedAd:(NSString *)adUnitIdentifier
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Which button the user closed the consent dialog with. */
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Result of `EzoicAds.presentConsentIfRequired` / `presentConsentSettings`.
|
|
7
|
+
*
|
|
8
|
+
* - `notRequired`: GDPR doesn't apply, the built-in CMP is disabled, another
|
|
9
|
+
* CMP owns consent, or consent is managed by the app (`setGDPRConsent`, or
|
|
10
|
+
* `autoReadConsent: false`).
|
|
11
|
+
* - `alreadyDecided`: a still-valid decision is stored; no dialog was shown.
|
|
12
|
+
* - `decided`: the user made a choice, which has been saved.
|
|
13
|
+
* - `dismissed`: the dialog closed without a choice; ads stay gated for this
|
|
14
|
+
* session.
|
|
15
|
+
* - `alreadyPresenting`: a consent dialog is already on screen or being
|
|
16
|
+
* prepared.
|
|
17
|
+
* - `failed`: the dialog could not be shown. `code` is the native
|
|
18
|
+
* `EzoicError` code, or `-1` (`'No foreground Activity'`) when the wrapper
|
|
19
|
+
* had no foreground Activity / view controller: native was not called, ads
|
|
20
|
+
* stay gated, and you should call again once a screen is showing.
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
const SIMPLE_TYPES = ['notRequired', 'alreadyDecided', 'dismissed', 'alreadyPresenting'];
|
|
24
|
+
const DECISIONS = ['acceptAll', 'rejectAll', 'custom'];
|
|
25
|
+
export function consentFailure(code, message) {
|
|
26
|
+
return {
|
|
27
|
+
type: 'failed',
|
|
28
|
+
code,
|
|
29
|
+
message
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Maps the native glue's outcome map to `EzoicConsentOutcome`. Anything that
|
|
35
|
+
* doesn't match the wire format becomes `failed(-1, 'Unrecognized outcome')`.
|
|
36
|
+
*/
|
|
37
|
+
export function parseConsentOutcome(raw) {
|
|
38
|
+
if (raw && typeof raw === 'object' && !Array.isArray(raw)) {
|
|
39
|
+
const {
|
|
40
|
+
type,
|
|
41
|
+
decision,
|
|
42
|
+
code,
|
|
43
|
+
message
|
|
44
|
+
} = raw;
|
|
45
|
+
const simple = SIMPLE_TYPES.find(t => t === type);
|
|
46
|
+
if (simple) return {
|
|
47
|
+
type: simple
|
|
48
|
+
};
|
|
49
|
+
if (type === 'decided' && typeof decision === 'string' && DECISIONS.includes(decision)) {
|
|
50
|
+
return {
|
|
51
|
+
type: 'decided',
|
|
52
|
+
decision: decision
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (type === 'failed') {
|
|
56
|
+
return consentFailure(typeof code === 'number' ? code : -1, typeof message === 'string' ? message : 'Unknown error');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return consentFailure(-1, 'Unrecognized outcome');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=EzoicConsent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SIMPLE_TYPES","DECISIONS","consentFailure","code","message","type","parseConsentOutcome","raw","Array","isArray","decision","simple","find","t","includes"],"sourceRoot":"../../src","sources":["EzoicConsent.ts"],"mappings":";;AAAA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,MAAMA,YAAY,GAAG,CACnB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,mBAAmB,CACX;AAEV,MAAMC,SAA4B,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;AAEzE,OAAO,SAASC,cAAcA,CAC5BC,IAAY,EACZC,OAAe,EACM;EACrB,OAAO;IAAEC,IAAI,EAAE,QAAQ;IAAEF,IAAI;IAAEC;EAAQ,CAAC;AAC1C;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASE,mBAAmBA,CAACC,GAAY,EAAuB;EACrE,IAAIA,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,GAAG,CAAC,EAAE;IACzD,MAAM;MAAEF,IAAI;MAAEK,QAAQ;MAAEP,IAAI;MAAEC;IAAQ,CAAC,GAAGG,GAA8B;IACxE,MAAMI,MAAM,GAAGX,YAAY,CAACY,IAAI,CAAEC,CAAC,IAAKA,CAAC,KAAKR,IAAI,CAAC;IACnD,IAAIM,MAAM,EAAE,OAAO;MAAEN,IAAI,EAAEM;IAAO,CAAC;IACnC,IACEN,IAAI,KAAK,SAAS,IAClB,OAAOK,QAAQ,KAAK,QAAQ,IAC5BT,SAAS,CAACa,QAAQ,CAACJ,QAAQ,CAAC,EAC5B;MACA,OAAO;QAAEL,IAAI,EAAE,SAAS;QAAEK,QAAQ,EAAEA;MAAiC,CAAC;IACxE;IACA,IAAIL,IAAI,KAAK,QAAQ,EAAE;MACrB,OAAOH,cAAc,CACnB,OAAOC,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAG,CAAC,CAAC,EACpC,OAAOC,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAG,eAC1C,CAAC;IACH;EACF;EACA,OAAOF,cAAc,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC;AACnD","ignoreList":[]}
|
|
@@ -9,5 +9,12 @@ import { TurboModuleRegistry } from 'react-native';
|
|
|
9
9
|
* maps this to `EzoicReward | null`.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* Wire format of a consent outcome from the native glue (see
|
|
14
|
+
* `parseConsentOutcome`): `type` is one of `notRequired`, `alreadyDecided`,
|
|
15
|
+
* `dismissed`, `alreadyPresenting`, `decided` (with `decision`) or `failed`
|
|
16
|
+
* (with `code` and `message`).
|
|
17
|
+
*/
|
|
18
|
+
|
|
12
19
|
export default TurboModuleRegistry.getEnforcing('EzoicReactNativeSdk');
|
|
13
20
|
//# sourceMappingURL=NativeEzoicAds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeEzoicAds.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeEzoicAds.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAiBlD;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;;AAkDA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,qBAAqB,CAAC","ignoreList":[]}
|
package/lib/module/helpers.js
CHANGED
|
@@ -12,6 +12,9 @@ export function normalizeConfig(config) {
|
|
|
12
12
|
if (config.requestATTBeforeAds !== undefined) out.requestATTBeforeAds = config.requestATTBeforeAds;
|
|
13
13
|
if (config.debugEnabled !== undefined) out.debugEnabled = config.debugEnabled;
|
|
14
14
|
if (config.testMode !== undefined) out.testMode = config.testMode;
|
|
15
|
+
if (config.autoTrackPageviews !== undefined) out.autoTrackPageviews = config.autoTrackPageviews;
|
|
16
|
+
if (config.cmpEnabled !== undefined) out.cmpEnabled = config.cmpEnabled;
|
|
17
|
+
if (config.autoPresentConsent !== undefined) out.autoPresentConsent = config.autoPresentConsent;
|
|
15
18
|
return out;
|
|
16
19
|
}
|
|
17
20
|
export function normalizeSize(size) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["normalizeConfig","config","domain","Error","out","autoReadConsent","undefined","subjectToCOPPA","requestATTBeforeAds","debugEnabled","testMode","normalizeSize","size","split","map","s","trim","filter","length","join","coerceAdUnitId","adUnitIdentifier","String","mapRewardResult","result","earned","type","amount"],"sourceRoot":"../../src","sources":["helpers.ts"],"mappings":";;AAEA,OAAO,SAASA,eAAeA,CAACC,MAAmB,EAAe;EAChE,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACC,MAAM,EAAE;IAC7B,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACvE;EACA,MAAMC,GAAgB,GAAG;IAAEF,MAAM,EAAED,MAAM,CAACC;EAAO,CAAC;EAClD,IAAID,MAAM,CAACI,eAAe,KAAKC,SAAS,EACtCF,GAAG,CAACC,eAAe,GAAGJ,MAAM,CAACI,eAAe;EAC9C,IAAIJ,MAAM,CAACM,cAAc,KAAKD,SAAS,EACrCF,GAAG,CAACG,cAAc,GAAGN,MAAM,CAACM,cAAc;EAC5C,IAAIN,MAAM,CAACO,mBAAmB,KAAKF,SAAS,EAC1CF,GAAG,CAACI,mBAAmB,GAAGP,MAAM,CAACO,mBAAmB;EACtD,IAAIP,MAAM,CAACQ,YAAY,KAAKH,SAAS,EAAEF,GAAG,CAACK,YAAY,GAAGR,MAAM,CAACQ,YAAY;EAC7E,IAAIR,MAAM,CAACS,QAAQ,KAAKJ,SAAS,EAAEF,GAAG,CAACM,QAAQ,GAAGT,MAAM,CAACS,QAAQ;EACjE,
|
|
1
|
+
{"version":3,"names":["normalizeConfig","config","domain","Error","out","autoReadConsent","undefined","subjectToCOPPA","requestATTBeforeAds","debugEnabled","testMode","autoTrackPageviews","cmpEnabled","autoPresentConsent","normalizeSize","size","split","map","s","trim","filter","length","join","coerceAdUnitId","adUnitIdentifier","String","mapRewardResult","result","earned","type","amount"],"sourceRoot":"../../src","sources":["helpers.ts"],"mappings":";;AAEA,OAAO,SAASA,eAAeA,CAACC,MAAmB,EAAe;EAChE,IAAI,CAACA,MAAM,IAAI,CAACA,MAAM,CAACC,MAAM,EAAE;IAC7B,MAAM,IAAIC,KAAK,CAAC,oDAAoD,CAAC;EACvE;EACA,MAAMC,GAAgB,GAAG;IAAEF,MAAM,EAAED,MAAM,CAACC;EAAO,CAAC;EAClD,IAAID,MAAM,CAACI,eAAe,KAAKC,SAAS,EACtCF,GAAG,CAACC,eAAe,GAAGJ,MAAM,CAACI,eAAe;EAC9C,IAAIJ,MAAM,CAACM,cAAc,KAAKD,SAAS,EACrCF,GAAG,CAACG,cAAc,GAAGN,MAAM,CAACM,cAAc;EAC5C,IAAIN,MAAM,CAACO,mBAAmB,KAAKF,SAAS,EAC1CF,GAAG,CAACI,mBAAmB,GAAGP,MAAM,CAACO,mBAAmB;EACtD,IAAIP,MAAM,CAACQ,YAAY,KAAKH,SAAS,EAAEF,GAAG,CAACK,YAAY,GAAGR,MAAM,CAACQ,YAAY;EAC7E,IAAIR,MAAM,CAACS,QAAQ,KAAKJ,SAAS,EAAEF,GAAG,CAACM,QAAQ,GAAGT,MAAM,CAACS,QAAQ;EACjE,IAAIT,MAAM,CAACU,kBAAkB,KAAKL,SAAS,EACzCF,GAAG,CAACO,kBAAkB,GAAGV,MAAM,CAACU,kBAAkB;EACpD,IAAIV,MAAM,CAACW,UAAU,KAAKN,SAAS,EAAEF,GAAG,CAACQ,UAAU,GAAGX,MAAM,CAACW,UAAU;EACvE,IAAIX,MAAM,CAACY,kBAAkB,KAAKP,SAAS,EACzCF,GAAG,CAACS,kBAAkB,GAAGZ,MAAM,CAACY,kBAAkB;EACpD,OAAOT,GAAG;AACZ;AAEA,OAAO,SAASU,aAAaA,CAACC,IAAwB,EAAU;EAC9D,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CACRC,KAAK,CAAC,GAAG,CAAC,CACVC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAAC,CAAC,CAAC,CACpBC,MAAM,CAAEF,CAAC,IAAKA,CAAC,CAACG,MAAM,GAAG,CAAC,CAAC,CAC3BC,IAAI,CAAC,GAAG,CAAC;AACd;AAEA,OAAO,SAASC,cAAcA,CAACC,gBAAiC,EAAU;EACxE,OAAOC,MAAM,CAACD,gBAAgB,CAAC;AACjC;AAQA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BC,MAA2C,EACF;EACzC,IAAIA,MAAM,IAAIA,MAAM,CAACC,MAAM,EAAE;IAC3B,OAAO;MAAEC,IAAI,EAAEF,MAAM,CAACE,IAAI;MAAEC,MAAM,EAAEH,MAAM,CAACG;IAAO,CAAC;EACrD;EACA,OAAO,IAAI;AACb","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -6,10 +6,27 @@ import EzoicBannerNative from './EzoicBannerViewNativeComponent';
|
|
|
6
6
|
import EzoicNativeAdNative from './EzoicNativeAdViewNativeComponent';
|
|
7
7
|
import EzoicOutstreamNative from './EzoicOutstreamAdViewNativeComponent';
|
|
8
8
|
import { coerceAdUnitId, normalizeConfig, normalizeSize } from "./helpers.js";
|
|
9
|
+
import { consentFailure, parseConsentOutcome } from "./EzoicConsent.js";
|
|
9
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
11
|
export { EzoicRewardedAd } from "./EzoicRewardedAd.js";
|
|
11
12
|
export { EzoicInterstitialAd } from "./EzoicInterstitialAd.js";
|
|
12
13
|
export { EzoicInstreamAd } from "./EzoicInstreamAd.js";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Numeric native error codes: `code` on ad-view `onError` events, and
|
|
17
|
+
* `error.userInfo.code` on rejected rewarded / interstitial / instream
|
|
18
|
+
* `load()` promises (whose own `code` is the string `'EzoicAds'`).
|
|
19
|
+
*/
|
|
20
|
+
export const EzoicErrorCode = {
|
|
21
|
+
/**
|
|
22
|
+
* GDPR applies and the user hasn't decided: the ad load waited for the
|
|
23
|
+
* consent dialog and timed out. Call `EzoicAds.presentConsentIfRequired()`.
|
|
24
|
+
*/
|
|
25
|
+
consentRequired: 5001
|
|
26
|
+
};
|
|
27
|
+
function presentConsent(call) {
|
|
28
|
+
return call().then(parseConsentOutcome, e => consentFailure(-1, e instanceof Error ? e.message : String(e)));
|
|
29
|
+
}
|
|
13
30
|
export const EzoicAds = {
|
|
14
31
|
initialize(config) {
|
|
15
32
|
return NativeEzoicAds.initialize(normalizeConfig(config));
|
|
@@ -23,8 +40,41 @@ export const EzoicAds = {
|
|
|
23
40
|
setSubjectToCOPPA(value) {
|
|
24
41
|
NativeEzoicAds.setSubjectToCOPPA(value);
|
|
25
42
|
},
|
|
26
|
-
|
|
27
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Records a pageview. Pass a `screen` label (e.g. `'Home'`,
|
|
45
|
+
* `'members/profile'`) to name the screen in Ezoic reporting; without one
|
|
46
|
+
* the pageview lands on a single app-wide bucket.
|
|
47
|
+
*/
|
|
48
|
+
trackPageview(screen) {
|
|
49
|
+
return NativeEzoicAds.trackPageview(screen ?? null);
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Shows the built-in consent dialog if this user must decide (GDPR applies,
|
|
53
|
+
* no valid stored decision). Runs automatically after `initialize` unless
|
|
54
|
+
* `autoPresentConsent: false`; repeat calls are harmless. Always resolves.
|
|
55
|
+
*/
|
|
56
|
+
presentConsentIfRequired() {
|
|
57
|
+
return presentConsent(() => NativeEzoicAds.presentConsentIfRequired());
|
|
58
|
+
},
|
|
59
|
+
/**
|
|
60
|
+
* Re-opens the consent dialog with the user's stored choices. TCF requires
|
|
61
|
+
* a persistent "Privacy settings" entry point that calls this. Always
|
|
62
|
+
* resolves.
|
|
63
|
+
*/
|
|
64
|
+
presentConsentSettings() {
|
|
65
|
+
return presentConsent(() => NativeEzoicAds.presentConsentSettings());
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* `true` when GDPR applies and the built-in CMP handles consent, `false`
|
|
69
|
+
* otherwise, `null` until the init request completes or when the server
|
|
70
|
+
* sent no consent information.
|
|
71
|
+
*/
|
|
72
|
+
isConsentRequired() {
|
|
73
|
+
return NativeEzoicAds.isConsentRequired().then(v => v ?? null);
|
|
74
|
+
},
|
|
75
|
+
/** Deletes the decision stored by the built-in CMP so the dialog shows again. */
|
|
76
|
+
resetConsent() {
|
|
77
|
+
NativeEzoicAds.resetConsent();
|
|
28
78
|
}
|
|
29
79
|
};
|
|
30
80
|
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useState","NativeEzoicAds","EzoicBannerNative","EzoicNativeAdNative","EzoicOutstreamNative","coerceAdUnitId","normalizeConfig","normalizeSize","jsx","_jsx","EzoicRewardedAd","EzoicInterstitialAd","EzoicInstreamAd","EzoicAds","initialize","config","setGDPRConsent","applies","consentString","setGPPConsent","gppString","sectionIds","setSubjectToCOPPA","value","trackPageview","useCollapsibleAdStyle","style","collapseOnNoFill","onSizeChange","collapsed","setCollapsed","handleSizeChange","
|
|
1
|
+
{"version":3,"names":["useState","NativeEzoicAds","EzoicBannerNative","EzoicNativeAdNative","EzoicOutstreamNative","coerceAdUnitId","normalizeConfig","normalizeSize","consentFailure","parseConsentOutcome","jsx","_jsx","EzoicRewardedAd","EzoicInterstitialAd","EzoicInstreamAd","EzoicErrorCode","consentRequired","presentConsent","call","then","e","Error","message","String","EzoicAds","initialize","config","setGDPRConsent","applies","consentString","setGPPConsent","gppString","sectionIds","setSubjectToCOPPA","value","trackPageview","screen","presentConsentIfRequired","presentConsentSettings","isConsentRequired","v","resetConsent","useCollapsibleAdStyle","style","collapseOnNoFill","onSizeChange","collapsed","setCollapsed","handleSizeChange","width","height","nativeEvent","resolvedStyle","EzoicBannerView","props","adUnitIdentifier","size","onLoad","onError","onImpression","onClick","onOpen","onClose","rest","collapsible","undefined","onAdClick","EzoicNativeAdView","EzoicOutstreamAdView"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Which button the user closed the consent dialog with. */
|
|
2
|
+
export type EzoicConsentDecision = 'acceptAll' | 'rejectAll' | 'custom';
|
|
3
|
+
/**
|
|
4
|
+
* Result of `EzoicAds.presentConsentIfRequired` / `presentConsentSettings`.
|
|
5
|
+
*
|
|
6
|
+
* - `notRequired`: GDPR doesn't apply, the built-in CMP is disabled, another
|
|
7
|
+
* CMP owns consent, or consent is managed by the app (`setGDPRConsent`, or
|
|
8
|
+
* `autoReadConsent: false`).
|
|
9
|
+
* - `alreadyDecided`: a still-valid decision is stored; no dialog was shown.
|
|
10
|
+
* - `decided`: the user made a choice, which has been saved.
|
|
11
|
+
* - `dismissed`: the dialog closed without a choice; ads stay gated for this
|
|
12
|
+
* session.
|
|
13
|
+
* - `alreadyPresenting`: a consent dialog is already on screen or being
|
|
14
|
+
* prepared.
|
|
15
|
+
* - `failed`: the dialog could not be shown. `code` is the native
|
|
16
|
+
* `EzoicError` code, or `-1` (`'No foreground Activity'`) when the wrapper
|
|
17
|
+
* had no foreground Activity / view controller: native was not called, ads
|
|
18
|
+
* stay gated, and you should call again once a screen is showing.
|
|
19
|
+
*/
|
|
20
|
+
export type EzoicConsentOutcome = {
|
|
21
|
+
type: 'notRequired';
|
|
22
|
+
} | {
|
|
23
|
+
type: 'alreadyDecided';
|
|
24
|
+
} | {
|
|
25
|
+
type: 'dismissed';
|
|
26
|
+
} | {
|
|
27
|
+
type: 'alreadyPresenting';
|
|
28
|
+
} | {
|
|
29
|
+
type: 'decided';
|
|
30
|
+
decision: EzoicConsentDecision;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'failed';
|
|
33
|
+
code: number;
|
|
34
|
+
message: string;
|
|
35
|
+
};
|
|
36
|
+
export declare function consentFailure(code: number, message: string): EzoicConsentOutcome;
|
|
37
|
+
/**
|
|
38
|
+
* Maps the native glue's outcome map to `EzoicConsentOutcome`. Anything that
|
|
39
|
+
* doesn't match the wire format becomes `failed(-1, 'Unrecognized outcome')`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseConsentOutcome(raw: unknown): EzoicConsentOutcome;
|
|
42
|
+
//# sourceMappingURL=EzoicConsent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EzoicConsent.d.ts","sourceRoot":"","sources":["../../../src/EzoicConsent.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAWtD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,mBAAmB,CAErB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAoBrE"}
|
|
@@ -6,6 +6,12 @@ export interface EzoicConfig {
|
|
|
6
6
|
requestATTBeforeAds?: boolean;
|
|
7
7
|
debugEnabled?: boolean;
|
|
8
8
|
testMode?: boolean;
|
|
9
|
+
/** Record a pageview automatically on native screen changes. Default `true`. */
|
|
10
|
+
autoTrackPageviews?: boolean;
|
|
11
|
+
/** Enable the built-in TCF CMP for GDPR regions. Default `true`; set `false` if you run your own CMP. */
|
|
12
|
+
cmpEnabled?: boolean;
|
|
13
|
+
/** Present the consent dialog (if required) right after `initialize` succeeds. Default `true`. */
|
|
14
|
+
autoPresentConsent?: boolean;
|
|
9
15
|
}
|
|
10
16
|
/**
|
|
11
17
|
* Result of `showRewardedAd`. `earned` is true when the user completed the ad
|
|
@@ -18,12 +24,28 @@ export interface EzoicRewardResult {
|
|
|
18
24
|
type: string;
|
|
19
25
|
amount: number;
|
|
20
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Wire format of a consent outcome from the native glue (see
|
|
29
|
+
* `parseConsentOutcome`): `type` is one of `notRequired`, `alreadyDecided`,
|
|
30
|
+
* `dismissed`, `alreadyPresenting`, `decided` (with `decision`) or `failed`
|
|
31
|
+
* (with `code` and `message`).
|
|
32
|
+
*/
|
|
33
|
+
export interface EzoicConsentOutcomeRaw {
|
|
34
|
+
type: string;
|
|
35
|
+
decision?: string;
|
|
36
|
+
code?: number;
|
|
37
|
+
message?: string;
|
|
38
|
+
}
|
|
21
39
|
export interface Spec extends TurboModule {
|
|
22
40
|
initialize(config: EzoicConfig): Promise<void>;
|
|
23
41
|
setGDPRConsent(applies: boolean, consentString?: string): void;
|
|
24
42
|
setGPPConsent(gppString?: string, sectionIds?: string): void;
|
|
25
43
|
setSubjectToCOPPA(value: boolean): void;
|
|
26
|
-
trackPageview(): Promise<boolean>;
|
|
44
|
+
trackPageview(screen: string | null): Promise<boolean>;
|
|
45
|
+
presentConsentIfRequired(): Promise<EzoicConsentOutcomeRaw>;
|
|
46
|
+
presentConsentSettings(): Promise<EzoicConsentOutcomeRaw>;
|
|
47
|
+
isConsentRequired(): Promise<boolean | null>;
|
|
48
|
+
resetConsent(): void;
|
|
27
49
|
loadRewardedAd(adUnitIdentifier: string): Promise<void>;
|
|
28
50
|
showRewardedAd(adUnitIdentifier: string, rewardName: string | null): Promise<EzoicRewardResult>;
|
|
29
51
|
loadInterstitialAd(adUnitIdentifier: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeEzoicAds.d.ts","sourceRoot":"","sources":["../../../src/NativeEzoicAds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeEzoicAds.d.ts","sourceRoot":"","sources":["../../../src/NativeEzoicAds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gFAAgF;IAChF,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,yGAAyG;IACzG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7D,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGvD,wBAAwB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5D,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC1D,iBAAiB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7C,YAAY,IAAI,IAAI,CAAC;IACrB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,cAAc,CACZ,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9B,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAS5D,cAAc,CACZ,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1E,wBAAwB,CACtB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GAAG,IAAI,GACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAA6E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAkB,CAAC;AAEpD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAmBhE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO9D;AAED,wBAAgB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAExE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKzC"}
|
|
@@ -1,15 +1,54 @@
|
|
|
1
1
|
import type { StyleProp, ViewStyle } from 'react-native';
|
|
2
2
|
import { type EzoicConfig } from './NativeEzoicAds.js';
|
|
3
|
+
import { type EzoicConsentOutcome } from './EzoicConsent.js';
|
|
3
4
|
export type { EzoicConfig };
|
|
5
|
+
export type { EzoicConsentDecision, EzoicConsentOutcome } from './EzoicConsent.js';
|
|
4
6
|
export { EzoicRewardedAd, type EzoicReward, type EzoicRewardedAdListeners, } from './EzoicRewardedAd.js';
|
|
5
7
|
export { EzoicInterstitialAd, type EzoicInterstitialAdListeners, } from './EzoicInterstitialAd.js';
|
|
6
8
|
export { EzoicInstreamAd, type EzoicInstreamLoadOptions, type EzoicInstreamImpressionOptions, } from './EzoicInstreamAd.js';
|
|
9
|
+
/**
|
|
10
|
+
* Numeric native error codes: `code` on ad-view `onError` events, and
|
|
11
|
+
* `error.userInfo.code` on rejected rewarded / interstitial / instream
|
|
12
|
+
* `load()` promises (whose own `code` is the string `'EzoicAds'`).
|
|
13
|
+
*/
|
|
14
|
+
export declare const EzoicErrorCode: {
|
|
15
|
+
/**
|
|
16
|
+
* GDPR applies and the user hasn't decided: the ad load waited for the
|
|
17
|
+
* consent dialog and timed out. Call `EzoicAds.presentConsentIfRequired()`.
|
|
18
|
+
*/
|
|
19
|
+
readonly consentRequired: 5001;
|
|
20
|
+
};
|
|
7
21
|
export declare const EzoicAds: {
|
|
8
22
|
initialize(config: EzoicConfig): Promise<void>;
|
|
9
23
|
setGDPRConsent(applies: boolean, consentString?: string): void;
|
|
10
24
|
setGPPConsent(gppString?: string, sectionIds?: string): void;
|
|
11
25
|
setSubjectToCOPPA(value: boolean): void;
|
|
12
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Records a pageview. Pass a `screen` label (e.g. `'Home'`,
|
|
28
|
+
* `'members/profile'`) to name the screen in Ezoic reporting; without one
|
|
29
|
+
* the pageview lands on a single app-wide bucket.
|
|
30
|
+
*/
|
|
31
|
+
trackPageview(screen?: string): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Shows the built-in consent dialog if this user must decide (GDPR applies,
|
|
34
|
+
* no valid stored decision). Runs automatically after `initialize` unless
|
|
35
|
+
* `autoPresentConsent: false`; repeat calls are harmless. Always resolves.
|
|
36
|
+
*/
|
|
37
|
+
presentConsentIfRequired(): Promise<EzoicConsentOutcome>;
|
|
38
|
+
/**
|
|
39
|
+
* Re-opens the consent dialog with the user's stored choices. TCF requires
|
|
40
|
+
* a persistent "Privacy settings" entry point that calls this. Always
|
|
41
|
+
* resolves.
|
|
42
|
+
*/
|
|
43
|
+
presentConsentSettings(): Promise<EzoicConsentOutcome>;
|
|
44
|
+
/**
|
|
45
|
+
* `true` when GDPR applies and the built-in CMP handles consent, `false`
|
|
46
|
+
* otherwise, `null` until the init request completes or when the server
|
|
47
|
+
* sent no consent information.
|
|
48
|
+
*/
|
|
49
|
+
isConsentRequired(): Promise<boolean | null>;
|
|
50
|
+
/** Deletes the decision stored by the built-in CMP so the dialog shows again. */
|
|
51
|
+
resetConsent(): void;
|
|
13
52
|
};
|
|
14
53
|
export interface EzoicBannerError {
|
|
15
54
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAuB,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ezoic/react-native-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.0",
|
|
4
4
|
"description": "Ezoic Ads SDK for React Native (Prebid + Google Ad Manager banner, native, interstitial, rewarded, outstream and instream video ads).",
|
|
5
5
|
"main": "./lib/module/index.js",
|
|
6
6
|
"types": "./lib/typescript/src/index.d.ts",
|