@@ -261,19 +261,9 @@ extension ViewController: WKScriptMessageHandler {
261261// MARK: - App Tracking Transparency Handlers
262262extension 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