Probablemente un poco tarde aquí. Afortunadamente, esto nos sirve para realizar un seguimiento de las instalaciones que provienen de la tienda web.
clase
receptor:
public class OwnReceiver extends BroadcastReceiver {
public static final String ACTION_UPDATE_DATA = "ACTION_UPDATE_DATA";
private static final String ACTION_INSTALL_REFERRER = "com.android.vending.INSTALL_REFERRER";
private static final String KEY_REFERRER = "referrer";
public OwnReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null) {
Log.e("ReferrerReceiver", "Intent is null");
return;
}
if (!ACTION_INSTALL_REFERRER.equals(intent.getAction())) {
Log.e("ReferrerReceiver", "Wrong action! Expected: " + ACTION_INSTALL_REFERRER + " but was: " + intent.getAction());
return;
}
Bundle extras = intent.getExtras();
if (intent.getExtras() == null) {
Log.e("ReferrerReceiver", "No data in intent");
return;
}
MyApplication.setReferrerDate(context.getApplicationContext(), new Date().getTime());
//Contro.setReferrerData(context.getApplicationContext(), (String) extras.get(KEY_REFERRER));
MyApplication.setReferrerData(context.getApplicationContext(), (String) extras.get(KEY_REFERRER));
LocalBroadcastManager.getInstance(context).sendBroadcast(new Intent(ACTION_UPDATE_DATA));
}
}
uso en MainActivity:
private final BroadcastReceiver mUpdateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
someMethod(); //send received data to your method and use it your way
}
};
algunMetodo donde está recibiendo los datos:
private void someMethod(){
String referrerDataRaw = MyApplication.getReferrerDataRaw(getApplicationContext());
if(referrerDataRaw.toLowerCase().contains(matchx.toLowerCase())){
Log.i("true",referrerDataRaw);
Toast.makeText(getBaseContext(),"Install referrer found",Toast.LENGTH_SHORT).show();
//postBack();
}
else {
Log.i("false","no referrer found");
Toast.makeText(getBaseContext(),"no referrer found",Toast.LENGTH_SHORT).show();
}
}
Bono Éste si estás enviar devoluciones
public void postBack() {
// String postTest = "https://play.google.com/store/apps/details?id=com.neon.myApp&referrer=utm_source=someOne&utm_medium=cpr&utm_term=testytest";
String referrerDataRaw = MyApplication.getReferrerDataRaw(getApplicationContext());
// Toast.makeText(this, "raw : " + postTest, Toast.LENGTH_SHORT).show();
String[] split = referrerDataRaw.split("=");
String end = split[split.length - 1];
Toast.makeText(this, AppConstant.lin + end, Toast.LENGTH_SHORT).show();
StringRequest strReq = new StringRequest(Request.Method.POST,
AppConstant.lin + end, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(getBaseContext(),"postback sent",Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(strReq, tag_string_req);
}
consiguió la mayor parte de la ayuda de este tipo alma en github https://github.com/SimonMarquis/Android-InstallReferrer
Puede alguien sugerir una solución? – Gem
El enlace de documentación y la sección de "problemas conocidos" es para v2 heredada. De la versión posterior, falta toda la sección de "problemas conocidos". Entonces, ¿debería funcionar la función ahora? Para mí, parece que no, es decir, todavía existe el problema original de "no referir vía web market". –