Analytics'i Web Görünümünde kullanma

Bir Web Görünümü içinden tetiklenen etkinlikleri günlüğe kaydetmeye veya kullanıcı özelliklerini ayarlamaya yönelik çağrıların, Google Analytics'e gönderilmeden önce yerel koda iletilmesi gerekir.

JavaScript işleyicisini uygulayın

Google Analytics'i bir Web Görünümünde kullanmanın ilk adımı, etkinlikleri ve kullanıcı özelliklerini yerel koda iletmek için JavaScript işlevleri oluşturmaktır. Aşağıdaki örnek, bunun hem Android hem de Apple yerel koduyla uyumlu bir şekilde nasıl yapılacağını gösterir:
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.");
  }
}

Yerel arayüzü uygulayın

Yerel Apple kodunu JavaScript'ten çağırmak için WKScriptMessageHandler protokolüne uygun bir mesaj işleyici sınıfı oluşturun. Google Analytics aramalarını userContentController:didReceiveScriptMessage: geri araması içinde yapabilirsiniz:

Süratli

Not: Bu Firebase ürünü macOS hedefinde mevcut değildir.
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)
  }
}

Amaç-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şleyicisini web görünümünün kullanıcı içerik denetleyicisine ekleyin:

Süratli

Not: Bu Firebase ürünü macOS hedefinde mevcut değildir.
self.webView.configuration.userContentController.add(self, name: "firebase")

Amaç-C

Not: Bu Firebase ürünü macOS hedefinde mevcut değildir.
[self.webView.configuration.userContentController addScriptMessageHandler:self
                                                                     name:@"firebase"];

Sonraki adımlar

Web Görünümünde Google Analytics'in tamamen işlevsel bir uygulaması için analitik web görünümü örneğine bakın.