Можем ли мы установить INSTALL_REFERRER два раза в одном приложении для Android?
Я работаю над приложением Android, где я использую INSTALL_REFERRER
, чтобы узнать источник установки моего приложения. Для этого я использую первый фильтр Google Analytics
Install_Referrer и один из моих собственных.
Возможно ли иметь две записи приемника вещания с фильтром намерения com.android.vending.INSTALL_REFERRER
в Android?
Приемник Google Analytics
<receiver
android:name="com.google.analytics.tracking.android.CampaignTrackingReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Мой пользовательский широковещательный приемник.
<receiver
android:name="com.xyz.broadcastreceiver.ReferrerCatcher"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
Ответы
Ответ 1
Нет, у нас не может быть двух вещательных приемников Install Referrer. Для этого я создал собственный пользовательский широковещательный приемник для отслеживания источника Google Analytics Source и моих собственных материалов.
<receiver
android:name="com.xyz.broadcastreceiver.ReferrerCatcher"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
В широковещательном приемнике ReferrerCatcher
public class ReferrerCatcher extends BroadcastReceiver {
public static final String TAG = InstallReceiver.class.getCanonicalName();
@Override
public void onReceive(Context context, Intent intent) {
// Google Analytics
new CampaignTrackingReceiver().onReceive(context, intent);
Log.d(TAG, intent.getExtras().getString("referrer");
// my stuff here
}
}
Ответ 2
Я работал в аналогичном приложении, и после нескольких исследований я обнаружил, что мы могли бы просто удалить Приемник Google Analytics (так как он ничего не делает) и вместо этого использовать собственный пользовательский ресивер. И, конечно же, вы все равно можете отправить свое приложение в Google Analytics, выполнив ниже код:
public enum TrackerName {
APP_TRACKER, // Tracker used only in this app.
GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg: roll-up tracking.
ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a company.
}
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();
synchronized Tracker getTracker(TrackerName trackerId) {
if (!mTrackers.containsKey(trackerId)) {
GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics.newTracker("UA-xxxxxxxx-1")
: (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics.newTracker(R.xml.global_tracker)
: analytics.newTracker("UA-xxxxxxxx-1");
mTrackers.put(trackerId, t);
} return mTrackers.get(trackerId);
}
// Get tracker.
Tracker t = getTracker(TrackerName.APP_TRACKER);
// Set screen name.
t.setScreenName("some string");
// Send a screen view.
t.send(new HitBuilders.AppViewBuilder().build());
EDIT:
Ниже код показывает, как я объявляю широковещательный приемник в своем AndroidManifest.xml:
<!-- Used for Google Play Store Campaign Measurement-->;
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver android:name=".app.service.CustomReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>