2016-06-10 2 views
-1

Я закончил tutorial и способен к debug and send broadcasts manuallyAndroid - Перехватить Google Analytics кампании вопрос

Но я не могу перехватить данные реферер с другим пользовательским приемником. Он просто не запускается при входящем широковещании com.android.vending.INSTALL_REFERRER.

Если я отправляю широковещательную рассылку /com.google.android.gms.analytics.CampaignTrackingReceiver пользовательского приемника, не вижу ее. В противном случае отправка точно co.primesignals.android.primesignalsapp.campaign.LaunchReceiver работает нормально. Но Google отправляет эту трансляцию собственному приемнику ...

Как правильно реализовать пользовательский приемник для перехвата реферера?

Manifest:

... 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

<receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 
     android:enabled="true" 
     android:exported="false"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="com.google.android.gms.analytics.AnalyticsService" 
     android:enabled="true" 
     android:exported="false"/> 

    <!--Used for Google Play Store Campaign Measurement--> 
    <service android:name="com.google.android.gms.analytics.CampaignTrackingService" 
     android:enabled="true" 
     android:exported="false"/> 

    <receiver        
     android:name="com.google.android.gms.analytics.CampaignTrackingReceiver" 
     android:exported="true" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 

    <receiver android:name=".campaign.LaunchReceiver" //custom receiver 
     android:exported="true" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 

LaunchReceiver:

public class LaunchReceiver extends BroadcastReceiver { 

public static final String INSTALL_REFERRER_ACTION = "com.android.vending.INSTALL_REFERRER"; 
public static final String REFERRER = "referrer"; 
public static final String TAG = "GAv4 app ->"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    android.util.Log.d(TAG, "LaunchReceiver.onReceive"); 

    final String action = intent.getAction(); 
    if (!TextUtils.isEmpty(action) && INSTALL_REFERRER_ACTION.equals(action)) { 
     android.util.Log.d(TAG, String.format("LaunchReceiver.onReceive action=%s", action)); 
     String referrer = intent.getStringExtra(REFERRER); 
     if (!TextUtils.isEmpty(referrer)) { 
      android.util.Log.d(TAG, String.format("LaunchReceiver.onReceive referrer=%s", referrer)); 

      SPManager.add(context, REFERRER, referrer); 

      CampaignData.parseAndSaveData(context, referrer); 
     } 
    } 

    new CampaignTrackingReceiver().onReceive(context, intent); 
} 
} 

оболочки ADB команды, которые я использовал для передачи передач:

am broadcast -a com.android.vending.INSTALL_REFERRER -n "[package]/com.google.android.gms.analytics.CampaignTrackingReceiver" --es referrer "[referrer value]" -> this is not handled by custom receiver 

am broadcast -a com.android.vending.INSTALL_REFERRER -n "[package]/co.primesignals.android.primesignalsapp.campaign.LaunchReceiver" --es referrer "[referrer value]" -> this works perfect but google wont send this broadcast 

ответ

Смежные вопросы