UNPKG

10.3 kBPlain TextView Raw
1import Foundation
2import AppConsent
3import os
4
5extension OSLog {
6 static let sfbxlog: OSLog = OSLog(subsystem: "io.sfbx.appconsent", category: "AppConsent")
7}
8
9@objc(AppconsentClearReactnative)
10class AppconsentClearReactnative: NSObject {
11 private var notice: ACNotice?
12
13 @objc
14 func constantsToExport() -> [AnyHashable : Any]! {
15 return ["version": "4.4.7"]
16 }
17
18 @objc
19 static func requiresMainQueueSetup() -> Bool {
20 return true
21 }
22
23 @objc
24 func configureWith(_ appKey: String, forceApplyGDPR: Bool, forceATT: Bool) {
25 self.notice = ACNotice(withAppKey: appKey, forceApplyGDPR: forceApplyGDPR, forceATT: forceATT)
26 }
27
28 @objc
29 func present(_ force: Bool) {
30 OperationQueue.main.addOperation {
31 guard let controller = UIApplication.shared.delegate?.window??.rootViewController else {
32 os_log("AppConsent: Failed to attach CMP to window rootViewController.", log: OSLog.sfbxlog, type: .error)
33 return
34 }
35 self.notice?.presentNotice(force: force, viewController: controller)
36 }
37 }
38
39 @objc
40 func checkForUpdate(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
41 self.notice?.checkForUpdate({ success in
42 resolver?(success)
43 }, failure: { error in
44 rejecter?("checkForUpdateFailure", "Error returned", error)
45 })
46 }
47
48 @objc
49 func isGDPRCountry(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
50 guard let value = self.notice?.isGDPRCountry() else {
51 rejecter?("isGDPRCountryFailure", "Unknown value", nil)
52 return
53 }
54 resolver?(value)
55 }
56
57 @objc
58 func consentAlreadyGiven(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
59 guard let value = self.notice?.consentGiven() else {
60 rejecter?("consentAlreadyGivenFailure", "Unknown value", nil)
61 return
62 }
63 resolver?(value)
64 }
65
66 @objc
67 func consentGiven(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
68 guard let value = self.notice?.consentGiven() else {
69 rejecter?("consentGivenFailure", "Unknown value", nil)
70 return
71 }
72 resolver?(value)
73 }
74
75 @objc
76 func clearConsent() {
77 self.notice?.clearConsent()
78 }
79
80 @objc
81 func extraConsentableAllowed(_ extraId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
82 guard let value = self.notice?.extraConsentableAllowed(extraId: extraId) else {
83 rejecter?("extraConsentableAllowedFailure", "Unknown value", nil)
84 return
85 }
86 resolver?(value)
87 }
88
89 @objc
90 func extraVendorAllowed(_ extraId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
91 guard let value = self.notice?.extraVendorAllowed(extraId: extraId) else {
92 rejecter?("extraVendorAllowedFailure", "Unknown value", nil)
93 return
94 }
95 resolver?(value)
96 }
97
98 @objc
99 func extraFloatingPurposeAllowed(_ extraId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
100 guard let value = self.notice?.floatingPurposeAllowed(extraId: extraId) else {
101 rejecter?("extraFloatingPurposeAllowedFailure", "Unknown value", nil)
102 return
103 }
104 resolver?(value)
105 }
106
107 @objc
108 func setConsentableConsent(_ values: [String: NSInteger], resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
109 self.notice?.setConsentableConsents(values: values, success: {
110 resolver?(true)
111 }, failure: { error in
112 rejecter?("setConsentableConsentFailure", "Error returned", error)
113 })
114 }
115
116 @objc
117 func setExtraConsentableConsent(_ values: [String: NSInteger], resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
118 self.notice?.setExtraConsentableConsents(values: values, success: {
119 resolver?(true)
120 }, failure: { error in
121 rejecter?("setExtraConsentableConsentFailure", "Error returned", error)
122 })
123 }
124
125 @objc
126 func getExternalIds(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
127 guard let value: Dictionary<String, String> = self.notice?.getExternalIds() else {
128 os_log("AppConsent: ERROR getExternalIds.", log: OSLog.sfbxlog, type: .error)
129 rejecter?("getExternalIdsFailure", "Unknown value", nil)
130 return
131 }
132 os_log("AppConsent: getExternalIds. %{public}s", log: OSLog.sfbxlog, type: .info, value.debugDescription)
133 resolver?(value.debugDescription)
134 }
135
136 @objc
137 func setExternalIds(_ ids: [String: String], resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
138 guard let value = self.notice?.setExternalIds(externalIds: ids) else {
139 os_log("AppConsent: ERROR setExternalIds.", log: OSLog.sfbxlog, type: .error)
140 rejecter?("setExternalIdsFailure", "Unknown value", nil)
141 return
142 }
143 resolver?(true)
144 }
145
146 @objc
147 func saveExternalIds(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
148 self.notice?.saveExternalIds(success: { state, configuration in
149 resolver?(true)
150 }, failure: { error in
151 os_log("AppConsent: ERROR saveExternalIds: %{public}s", log: OSLog.sfbxlog, type: .error, error.localizedDescription)
152 rejecter?("saveExternalIdsFailure", error.localizedDescription, error)
153 })
154 }
155
156 // ***********************************************
157 // MARK: - WARNING - Deprecated
158 // ***********************************************
159
160 @objc
161 func consentableAllowedByObjectId(_ objectId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
162 guard let id: UInt32 = UInt32(objectId) else {
163 rejecter?("consentableAllowedByIABIdFailure", "bad objectId value, not an int", nil)
164 return
165 }
166 guard let value = self.notice?.consentableAllowed(objectId: id) else {
167 rejecter?("consentableAllowedByObjectIdFailure", "Unknown value", nil)
168 return
169 }
170 resolver?(value)
171 }
172
173 @objc
174 func consentableAllowedByIABId(_ iabId: String, type: NSInteger, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
175 guard let id: UInt32 = UInt32(iabId) else {
176 rejecter?("consentableAllowedByIABIdFailure", "bad iabId value, not an int", nil)
177 return
178 }
179 guard let consentableType = ACConsentableType(rawValue: type) else {
180 rejecter?("consentableAllowedByIABIdFailure", "Unknown consentable type", nil)
181 return
182 }
183 guard let value = self.notice?.consentableAllowed(iabId: id, type: consentableType) else {
184 rejecter?("consentableAllowedByIABIdFailure", "Unknown iabId", nil)
185 return
186 }
187 resolver?(value)
188 }
189
190 @objc
191 func vendorAllowedByIABId(_ iabId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
192 guard let id: UInt32 = UInt32(iabId) else {
193 rejecter?("consentableAllowedByIABIdFailure", "bad iabId value, not an int", nil)
194 return
195 }
196 guard let value = self.notice?.vendorAllowed(iabId: id) else {
197 rejecter?("vendorAllowedByIABIdFailure", "Unknown value", nil)
198 return
199 }
200 resolver?(value)
201 }
202
203 @objc
204 func stackAllowedByIABId(_ iabId: String, resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
205 guard let id: UInt32 = UInt32(iabId) else {
206 rejecter?("consentableAllowedByIABIdFailure", "bad iabId value, not an int", nil)
207 return
208 }
209 guard let value = self.notice?.stackAllowed(iabId: id) else {
210 rejecter?("stackAllowedByIABIdFailure", "Unknown value", nil)
211 return
212 }
213 resolver?(value)
214 }
215
216 @objc
217 func getAppKey(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
218 guard let value = self.notice?.appKey else {
219 rejecter?("getAppKeyFailure", "Unknown value", nil)
220 return
221 }
222 resolver?(value)
223 }
224
225 @objc
226 func getForceApplyGDPR(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
227 guard let value = self.notice?.forceApplyGDPR else {
228 rejecter?("getForceApplyGDPRFailure", "Unknown value", nil)
229 return
230 }
231 resolver?(value)
232 }
233
234 // ***********************************************
235 // MARK: - WARNING - Only iOS
236 // ***********************************************
237
238 @objc
239 func getForceATT(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
240 guard let value = self.notice?.forceATT else {
241 rejecter?("getForceATTFailure", "Unknown value", nil)
242 return
243 }
244 resolver?(value)
245 }
246
247 @objc
248 func appTrackingIsAvailable(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
249 guard let value = self.notice?.appTrackingIsAvailable() else {
250 rejecter?("appTrackingIsAvailableFailure", "Unknown value", nil)
251 return
252 }
253 resolver?(value)
254 }
255
256 @objc
257 func appTrackingAuthorizationGiven(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
258 guard let value = self.notice?.appTrackingAuthorizationGiven() else {
259 rejecter?("appTrackingAuthorizationGivenFailure", "Unknown value", nil)
260 return
261 }
262 resolver?(value.rawValue)
263 }
264
265 @objc
266 func appTrackingAuthorizationStatus(_ resolver: RCTPromiseResolveBlock?, rejecter: RCTPromiseRejectBlock?) {
267 guard let value = self.notice?.appTrackingAuthorizationStatus() else {
268 rejecter?("appTrackingAuthorizationStatusFailure", "Unknown value", nil)
269 return
270 }
271 resolver?(value.rawValue)
272 }
273}