Skip to content

Commit 191600c

Browse files
committed
feat: simplify app tracking transparency
1 parent 7fc5b7d commit 191600c

File tree

1 file changed

+9
-36
lines changed

1 file changed

+9
-36
lines changed

vibetype/ViewController.swift

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -261,19 +261,9 @@ extension ViewController: WKScriptMessageHandler {
261261
// MARK: - App Tracking Transparency Handlers
262262
extension ViewController {
263263

264-
// Helper method to dispatch ATT events to webview with proper JSON serialization
265-
private func dispatchATTEvent(eventName: String, detail: [String: Any]) {
266-
guard let jsonData = try? JSONSerialization.data(withJSONObject: detail),
267-
let jsonString = String(data: jsonData, encoding: .utf8) else {
268-
print("Error serializing ATT response for event: \(eventName)")
269-
return
270-
}
271-
let script = """
272-
window.dispatchEvent(new CustomEvent('\(eventName)', {
273-
detail: \(jsonString)
274-
}));
275-
"""
276-
vibetype.webView.evaluateJavaScript(script) { result, error in
264+
private func dispatchATTEvent(eventName: String, detail: String) {
265+
let script = "window.dispatchEvent(new CustomEvent('\(eventName)', { detail: '\(detail)' }));"
266+
vibetype.webView.evaluateJavaScript(script) { _, error in
277267
if let error = error {
278268
print("Error dispatching \(eventName): \(error)")
279269
}
@@ -283,43 +273,26 @@ extension ViewController {
283273
func handleATTPermissionRequest() {
284274
if #available(iOS 14, *) {
285275
TrackingTransparencyManager.requestPermission { status in
286-
let statusString = TrackingTransparencyManager.statusToString(status)
287-
let detail: [String: Any] = ["status": statusString]
288-
self.dispatchATTEvent(eventName: "attPermissionResponse", detail: detail)
276+
self.dispatchATTEvent(eventName: "att-permission-response", detail: TrackingTransparencyManager.statusToString(status))
289277
}
290278
} else {
291-
// ATT is only available on iOS 14+
292-
let detail: [String: Any] = ["status": "unavailable", "error": "ATT requires iOS 14 or later"]
293-
dispatchATTEvent(eventName: "attPermissionResponse", detail: detail)
279+
dispatchATTEvent(eventName: "att-permission-response", detail: "unavailable")
294280
}
295281
}
296282

297283
func handleATTGetStatus() {
298284
if #available(iOS 14, *) {
299-
let statusString = TrackingTransparencyManager.getStatusString()
300-
let detail: [String: Any] = ["status": statusString]
301-
dispatchATTEvent(eventName: "attStatusResponse", detail: detail)
285+
dispatchATTEvent(eventName: "att-status-response", detail: TrackingTransparencyManager.getStatusString())
302286
} else {
303-
// ATT is only available on iOS 14+
304-
let detail: [String: Any] = ["status": "unavailable"]
305-
dispatchATTEvent(eventName: "attStatusResponse", detail: detail)
287+
dispatchATTEvent(eventName: "att-status-response", detail: "unavailable")
306288
}
307289
}
308290

309291
func handleATTGetIDFA() {
310292
if #available(iOS 14, *) {
311-
let idfa = TrackingTransparencyManager.getIDFA()
312-
var detail: [String: Any] = [:]
313-
if let idfa = idfa {
314-
detail["idfa"] = idfa
315-
} else {
316-
detail["idfa"] = NSNull()
317-
}
318-
dispatchATTEvent(eventName: "attIDFAResponse", detail: detail)
293+
dispatchATTEvent(eventName: "att-idfa-response", detail: TrackingTransparencyManager.getIDFA() ?? "")
319294
} else {
320-
// ATT is only available on iOS 14+
321-
let detail: [String: Any] = ["idfa": NSNull(), "error": "ATT requires iOS 14 or later"]
322-
dispatchATTEvent(eventName: "attIDFAResponse", detail: detail)
295+
dispatchATTEvent(eventName: "att-idfa-response", detail: "")
323296
}
324297
}
325298
}

0 commit comments

Comments
 (0)