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 Android kodunu JavaScript'ten çağırmak için @JavaScriptInterface olarak işaretlenmiş yöntemlere sahip bir sınıf uygulayın:

public class AnalyticsWebInterface {

    public static final String TAG = "AnalyticsWebInterface";
    private FirebaseAnalytics mAnalytics;

    public AnalyticsWebInterface(Context context) {
        mAnalytics = FirebaseAnalytics.getInstance(context);
    }

    @JavascriptInterface
    public void logEvent(String name, String jsonParams) {
        LOGD("logEvent:" + name);
        mAnalytics.logEvent(name, bundleFromJson(jsonParams));
    }

    @JavascriptInterface
    public void setUserProperty(String name, String value) {
        LOGD("setUserProperty:" + name);
        mAnalytics.setUserProperty(name, value);
    }

    private void LOGD(String message) {
        // Only log on debug builds, for privacy
        if (BuildConfig.DEBUG) {
            Log.d(TAG, message);
        }
    }

    private Bundle bundleFromJson(String json) {
        // ...
    }

}

Yerel arayüzü oluşturduktan sonra, Web Görünümünüzde çalışan JavaScript kodu tarafından görülebilmesi için onu Web Görünümünüze kaydedin:

// Only add the JavaScriptInterface on API version JELLY_BEAN_MR1 and above, due to
// security concerns, see link below for more information:
// https://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object,%20java.lang.String)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    mWebView.addJavascriptInterface(
            new AnalyticsWebInterface(this), AnalyticsWebInterface.TAG);
} else {
    Log.w(TAG, "Not adding JavaScriptInterface, API Version: " + Build.VERSION.SDK_INT);
}

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.