JavaScript işleyiciyi uygulama
WebView'da Google Analytics kullanmanın ilk adımı, etkinlikleri ve kullanıcı özelliklerini yerel koda yönlendirmek için JavaScript işlevleri oluşturmaktır. Aşağıdaki örnekte, bunun hem Android hem de Apple yerel koduyla uyumlu olacak şekilde nasıl yapılacağı gösterilmektedir:function logEvent(name, params) { if (!name) { return; } if (window.AnalyticsWebInterface) { // Call Android interface window.AnalyticsWebInterface.logEvent(name, JSON.stringify(params)); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.firebase) { // Call iOS interface var message = { command: 'logEvent', name: name, parameters: params }; window.webkit.messageHandlers.firebase.postMessage(message); } else { // No Android or iOS interface found console.log("No native APIs found."); } } function setUserProperty(name, value) { if (!name || !value) { return; } if (window.AnalyticsWebInterface) { // Call Android interface window.AnalyticsWebInterface.setUserProperty(name, value); } else if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.firebase) { // Call iOS interface var message = { command: 'setUserProperty', name: name, value: value }; window.webkit.messageHandlers.firebase.postMessage(message); } else { // No Android or iOS interface found console.log("No native APIs found."); } }
WebView'nizden JavaScript işleyicisini çağırma
Önceki adımda tanımladığınız JavaScript işlevlerini çağırarak etkinlikleri düzgün şekilde kaydedebilir ve kullanıcı özelliklerini WebView'dan ayarlayabilirsiniz. Aşağıdaki örnekte, satın alma etkinliğinin nasıl doğru şekilde günlüğe kaydedileceği ve kullanıcı özelliğinin nasıl ayarlanacağı gösterilmektedir:function logEventExample() { // Log an event named "purchase" with parameters logEvent("purchase", { content_type: "product", value: 123, currency: "USD", quantity: 2, items: [{ item_id: "sample-item-id", item_variant: "232323" }], transaction_id: "1234567" }); } function logUserPropertyExample() { // Set a user property named 'favorite_genre' setUserProperty("favorite_genre", "comedy") }
Yerel arayüzü uygulama
JavaScript'ten yerel Apple kodu çağırmak için WKScriptMessageHandler
protokolüne uygun bir mesaj işleyici sınıfı oluşturun. userContentController:didReceiveScriptMessage:
geri arama özelliğini kullanarak
Google Analytics aramalar yapabilirsiniz:
Swift
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { guard let body = message.body as? [String: Any] else { return } guard let command = body["command"] as? String else { return } guard let name = body["name"] as? String else { return } if command == "setUserProperty" { guard let value = body["value"] as? String else { return } Analytics.setUserProperty(value, forName: name) } else if command == "logEvent" { guard let params = body["parameters"] as? [String: NSObject] else { return } Analytics.logEvent(name, parameters: params) } }
Objective-C
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { if ([message.body[@"command"] isEqual:@"setUserProperty"]) { [FIRAnalytics setUserPropertyString:message.body[@"value"] forName:message.body[@"name"]]; } else if ([message.body[@"command"] isEqual: @"logEvent"]) { [FIRAnalytics logEventWithName:message.body[@"name"] parameters:message.body[@"parameters"]]; } }
Son olarak, mesaj işleyiciyi web görünümünün kullanıcı içeriği denetleyicisine ekleyin:
Swift
self.webView.configuration.userContentController.add(self, name: "firebase")
Objective-C
[self.webView.configuration.userContentController addScriptMessageHandler:self name:@"firebase"];
Sonraki adımlar
WebView'da Google Analytics'nın tam işlevsel bir şekilde uygulanması için analytics-webview örneğine bakın.