2012-11-03 4 views
2

설치 이벤트를 신고하려고합니다.Google의 referrer_install을 추적 할 수 없습니다.

앱을 설치할 때 ReferralReceiver를 호출하도록 구현했습니다. 지도에 모든 매개 변수가 있습니다. 내 질풍 코드를 사용하여 질풍를 호출 오전 :

FlurryAgent.onStartSession(context, FlurryCode); 
FlurryAgent.logEvent("Referral", referralParams); 
FlurryAgent.onEndSession(context); 

데이터는 된 SharedPreferences에 저장되어 있지만 질풍로 전송되지 않습니다.

누구든지이 문제가 발생 했습니까?

@Override 
public void onReceive(Context context, Intent intent) 
{ 
    LogManager.Info("ReferralReceiver intent.action=" + intent.getAction()); 
    LogManager.Info("ReferralReceiver intent.DataString=" + intent.getDataString()); 
    LogManager.Info("ReferralReceiver intent.intent=" + intent.toString()); 

    // Workaround for Android security issue: http://code.google.com/p/android/issues/detail?id=16006 
    try 
    { 
     final Bundle extras = intent.getExtras(); 
     if (extras != null) { 
      extras.containsKey(null); 
     } 
    } 
    catch (final Exception e) { 
     return; 
    } 

    Map<String, String> referralParams = new HashMap<String, String>(); 

    // Return if this is not the right intent. 
    if (! intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) { //$NON-NLS-1$ 
     return; 
    } 

    String referrer = intent.getStringExtra("referrer"); //$NON-NLS-1$ 
    if(referrer == null || referrer.length() == 0) { 
     return; 
    } 

    try 
    { 
     referrer = URLDecoder.decode(referrer, "UTF-8"); 
    } 
    catch (UnsupportedEncodingException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

    LogManager.Info("ReferralReceiver intent.referrer=" + intent.getStringExtra("referrer")); 

    SharedPreferences storage = context.getSharedPreferences(ReferralReceiver.PREFS_FILE_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = storage.edit(); 
    editor.putString("referrer", referrer); 
    editor.commit(); 

    try { 
     if (intent.hasExtra("referrer")) { 
      String referrers[] = referrer.split("&"); 
      for (String referrerValue : referrers) 
      { 
       String keyValue[] = referrerValue.split("="); 
       if (keyValue.length==2) 
       { 
        referralParams.put(keyValue[0], keyValue[1]); 
       } 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     LogManager.Error(e); 
     return; 
    } 

    ReferralReceiver.storeReferralParams(context, referralParams); 

    String FlurryCode = SaverrUtils.GetFlurryCode(); 
    FlurryAgent.onStartSession(context, FlurryCode); 
    FlurryAgent.logEvent("Referral", referralParams); 
    FlurryAgent.onEndSession(context); 
    LogManager.Info("New_Install"); 
} 

public final static String PREFS_FILE_NAME = "ReferralParamsFile"; 


/* 
* Stores the referral parameters in the app's sharedPreferences. 
* Rewrite this function and retrieveReferralParams() if a 
* different storage mechanism is preferred. 
*/ 
public static void storeReferralParams(Context context, Map<String, String> params) 
{ 
    SharedPreferences storage = context.getSharedPreferences(ReferralReceiver.PREFS_FILE_NAME, Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = storage.edit(); 

    for(String key : SaverrUtils.EXPECTED_REFERRER_PARAMETERS) 
    { 
     String value = params.get(key); 
     if(value != null) 
     { 
      editor.putString(key, value); 
     } 
    } 

    editor.commit(); 
} 



// Referral Parameters 
public final static String[] EXPECTED_REFERRER_PARAMETERS = { 
    "utm_source", 
    "utm_medium", 
    "utm_term", 
    "utm_content", 
    "utm_campaign", 
    "referrer" 
}; 

답변

0

사실 플러리에는 실제로 계산할 시작/끝 세션 사이의 최소 시간이 있다고 생각합니다. 모든 데이터를 공유 환경 설정 또는 파일에 저장 한 다음 사용자가 활동 체크를 시작하면 혼란에 빠졌습니까? 새로운 경우 FlurryAgent.logEvent (...)를 수행하십시오.