WebView'da Analytics kullanma

Bir Web Görünümü içinden etkinleştirilen etkinlikleri kaydetme veya kullanıcı özelliklerini ayarlama çağrıları olmalıdır Google Analytics'e gönderilmeden önce yerel koda yönlendirilir.

JavaScript işleyiciyi uygulayın

Google Analytics'i WebView'da kullanmanın ilk adımı, Etkinlikleri ve kullanıcı özelliklerini yerel koda yönlendiren JavaScript işlevleri. Aşağıdaki örnekte, bunu uyumlu bir şekilde nasıl yapacağınız gösterilmektedir hem Android hem de Apple yerel koduyla:
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

JavaScript'ten yerel Android kodu çağırmak için şunlara sahip bir sınıf uygulayın: @JavaScriptInterface olarak işaretlenen yöntemler:

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 bunu Web Görünümünüze kaydedin Böylece, Web Görünümü'nde çalışan JavaScript kodu tarafından görülebilir:

// 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

Google Analytics'in WebView'da tamamen işlevsel bir şekilde uygulanması için bkz. analytics-webview örneklem.