зеркало из https://github.com/mozilla/gecko-dev.git
Bug 784157 - Google Play Campaign Tracking: Convert the INSTALL_REFERRER data to distribution prefs r=blassey
This commit is contained in:
Родитель
003b5c2ec4
Коммит
3f6aabd191
|
@ -166,6 +166,12 @@
|
|||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<receiver android:name="org.mozilla.gecko.ReferrerReceiver" android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="com.android.vending.INSTALL_REFERRER" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<activity android:name="Restarter"
|
||||
android:process="@ANDROID_PACKAGE_NAME@Restarter"
|
||||
android:theme="@style/Gecko">
|
||||
|
|
|
@ -172,6 +172,7 @@ FENNEC_JAVA_FILES = \
|
|||
GeckoScreenOrientationListener.java \
|
||||
UpdateService.java \
|
||||
GeckoUpdateReceiver.java \
|
||||
ReferrerReceiver.java \
|
||||
$(NULL)
|
||||
|
||||
ifdef MOZ_WEBSMS_BACKEND
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
|
||||
import java.net.URLDecoder;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ReferrerReceiver
|
||||
extends BroadcastReceiver
|
||||
{
|
||||
private static final String LOGTAG = "GeckoReferrerReceiver";
|
||||
|
||||
public static final String ACTION_INSTALL_REFERRER = "com.android.vending.INSTALL_REFERRER";
|
||||
public static final String UTM_SOURCE = "mozilla";
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (ACTION_INSTALL_REFERRER.equals(intent.getAction())) {
|
||||
String referrer = intent.getStringExtra("referrer");
|
||||
if (referrer == null)
|
||||
return;
|
||||
|
||||
HashMap<String, String> values = new HashMap<String, String>();
|
||||
try {
|
||||
String referrers[] = referrer.split("&");
|
||||
for (String referrerValue : referrers) {
|
||||
String keyValue[] = referrerValue.split("=");
|
||||
values.put(URLDecoder.decode(keyValue[0]), URLDecoder.decode(keyValue[1]));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
String source = values.get("utm_source");
|
||||
String campaign = values.get("utm_campaign");
|
||||
|
||||
if (source != null && UTM_SOURCE.equals(source) && campaign != null) {
|
||||
try {
|
||||
JSONObject idPref = new JSONObject();
|
||||
idPref.put("name", "distribution.id");
|
||||
idPref.put("type", "string");
|
||||
idPref.put("value", "playstore");
|
||||
|
||||
JSONObject versionPref = new JSONObject();
|
||||
versionPref.put("name", "distribution.version");
|
||||
versionPref.put("type", "string");
|
||||
versionPref.put("value", campaign);
|
||||
|
||||
// Try to make sure the prefs are written as a group
|
||||
GeckoEvent idEvent = GeckoEvent.createBroadcastEvent("Preferences:Set", idPref.toString());
|
||||
GeckoAppShell.sendEventToGecko(idEvent);
|
||||
GeckoEvent versionEvent = GeckoEvent.createBroadcastEvent("Preferences:Set", versionPref.toString());
|
||||
GeckoAppShell.sendEventToGecko(versionEvent);
|
||||
} catch (JSONException e) {
|
||||
Log.e(LOGTAG, "Error setting distribution prefs", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Загрузка…
Ссылка в новой задаче