2016-07-12 6 views
1

のために動作しない私は4にバージョン3から&画面が現れているが、カスタムの寸法は唯一のiOSのために働く追跡イベントのすべてをGoogleアナリティクスユニティSDKをアップグレードしました。カスタム寸法はSDKのバージョン3.のGoogle anlytics - カスタム寸法は、Android

まずでAndroidとiOSの両方のためにうまく働いている間、私は公共のGoogleAnalyticsは、変数宣言および構成を割り当てる:

public class GoogleAnalyticsAdaptor : MonoBehaviour 
{ 
    public GoogleAnalyticsV4 ga; 

    void Start() 
    { 
     ga = UnityRoot.Instance.gameObject.AddComponent<GoogleAnalyticsV4>(); 

     ga.IOSTrackingCode = config.IOSTrackingCode; 
     ga.androidTrackingCode = config.androidTrackingCode; 
     ga.otherTrackingCode = config.otherTrackingCode; 
     ga.productName = config.productName; 
     ga.bundleIdentifier = config.bundleIdentifier; 
     ga.bundleVersion = config.bundleVersion; 
     ga.sendLaunchEvent = config.sendLaunchEvent; 
     ga.UncaughtExceptionReporting = config.reportUncaughtException; 
     ga.dispatchPeriod = 2; 
    } 

その後方法でGoogleを発射する他のクラス別の呼び出しです解析イベント:

public void RecordScreen(AnalyticsScreen screen) 
{   
    var appViewBuilder = new AppViewHitBuilder(); 

    appViewBuilder.SetScreenName(screen.Name); 
    if (screen.Campaign != null) 
     appViewBuilder.SetCampaignName(screen.Campaign); 

    InfoDataCollection<AppViewHitBuilder>(appViewBuilder); 

    int dimensionIndex; 

    if (customDimensionIndexLookup.TryGetValue(dimension.Key, out dimensionIndex)) 
    { 
     appViewBuilder.SetCustomDimension(dimensionIndex, dimension.Value); 
    }   

    ga.LogScreen(appViewBuilder); 
} 

public void RecordEvent(AnalyticsEvent e) 
{ 
    var s = new EventHitBuilder(); 

    // category + action + label + value  
    s.SetEventCategory(e.Category); 
    s.SetEventAction(e.Action); 

    if(e.Label != null) 
     s.SetEventLabel(e.Label); 

    if(e.Campaign != null) 
     s.SetCampaignName(e.Campaign); 

    if (e.Value is int || e.Value is long) 
     s.SetEventValue((long)e.Value); 

    InfoDataCollection<EventHitBuilder>(s); 

    int dimensionIndex; 

    if (customDimensionIndexLookup.TryGetValue(dimension.Key, out dimensionIndex)) 
    { 
     s.SetCustomDimension(dimensionIndex, dimension.Value); 
    } 

    ga.LogEvent(s); 
} 

同じでも、画面に適用

customDimensionIndexLookup.TryGetValueは、文字列に応じてカスタムディメンションのインデックスを返します(UserIdなど)。

private void InfoDataCollection<T>(T hitBuilder) where T : HitBuilder<T> 
{ 
    int dimensionIndex; 
    if (customDimensionIndexLookup.TryGetValue("UserId", out dimensionIndex) && !string.IsNullOrEmpty(AccountPortal.CurrentAccountID)) 
    { 
     hitBuilder.SetCustomDimension(dimensionIndex, AccountPortal.CurrentAccountID); 
    } 
} 

イベントと画面のデータは、私がAndroid trafficのデータセグメントでそれにカスタムディメンションを適用する場合を除き、レポートに表示されており、iOS traffic AndroidのトラフィックしばらくiOS用のみのデータがありますInfoDataCollectionは、すべてのイベント&画面に加えてカスタム次元を追加します0レコードを表示します。

し、両方のAndroid & iOSのは、同じコードを使用しています。

この欠損データの原因は何ですか?どんなアイデアや助言も高く評価されます。私が念頭にいた最後の手段は、すでに廃止されているバージョン3にフォールバックすることです。

答えて

2

回答が見つかりました。 UnityのGoogle Analytics SDKには、GoogleAnalyticsAndroidV4.csメソッドの実装が不足しているようです。あなたは、コードを変更する必要がイベントでカスタム次元を追跡するため

internal void LogEvent(EventHitBuilder builder) 
{ 
    AndroidJavaObject eventBuilder = new AndroidJavaObject("com.google.android.gms.analytics.HitBuilders$EventBuilder"); 
    eventBuilder.Call<AndroidJavaObject>("setCategory", new object[] { builder.GetEventCategory() }); 
    eventBuilder.Call<AndroidJavaObject>("setAction", new object[] { builder.GetEventAction() }); 
    eventBuilder.Call<AndroidJavaObject>("setLabel", new object[] { builder.GetEventLabel() }); 
    eventBuilder.Call<AndroidJavaObject>("setValue", new object[] { builder.GetEventValue() }); 

    foreach(KeyValuePair<int, string> i in builder.GetCustomDimensions()) 
    { 
     eventBuilder.Call<AndroidJavaObject>("setCustomDimension", new object[] { i.Key, i.Value }); 
    } 

    foreach(KeyValuePair<int, string> i in builder.GetCustomMetrics()) 
    { 
     eventBuilder.Call<AndroidJavaObject>("setCustomMetric", new object[] { i.Key, i.Value }); 
    } 

    object[] builtEvent = new object[] { eventBuilder.Call<AndroidJavaObject>("build") }; 
    tracker.Call("send", builtEvent); 
} 

同じことがまた、同様にスクリーニングするのに適用されます。 setCustomMetricを呼び出すとき

+0

あなたは、最新の分析を使用している場合は、Android SDKから(例えば9.2.1)、には、最初に浮くために、第2パラメータに変換する必要があります。そうしないと、MethodNotFoundエラーが発生します。 – Comtaler

関連する問題