2014-07-21 11 views
10

oynarlar. Google Play'e yüklemeden önce, aşağıdaki komut dosyasını kullanarak uygulamayı test etmeye çalıştığımda, iyi çalışıyor ve başvuru dizesini alıyorum.Android sevk izleme Ben</strong> oynamak Google'dan indirmede <strong>sevk izlemeyi uygulamak çalışıyorum

adb shell 
am broadcast -a com.android.vending.INSTALL_REFERRER -n <my.myPackage>/.<path.up.until.my.CustomBroadcastReceiver> --es "referrer" "utm_source%3Dentity%26utm_medium%3Dsocial%26utm_campaign%3Dwo_referrer%26referrerId%3D173%26entity%3Dfacebook%26email%3Dmideeshp%40email.com" 

Bu kodu çalıştırdıktan sonra, ben havale dize kod çözme ediyorum ve benim sunucu sevk dizeye göre güncellenmeye. Google play Bu Uygulamayı dağıtırken Ama Google oyundan herhangi sevk dize almıyorum. Ben hem analitik izleme ve yönlendirme izlemesi için Google Analytics V2 kullanıyorum. biri Aşağıda

benim özel BroadcastReceiver olduğunu.

public class InstallReferrerReceiver extends BroadcastReceiver { 
private static final String TAG = "InstallReferrerReceiver"; 

@Override 
public void onReceive(Context context, Intent intent) { 

    HashMap<String, String> values = new HashMap<String, String>(); 
    try { 
     if (intent.hasExtra("referrer")) { 
      Toast.makeText(context, "Inside app refferal", 5000).show(); 

      String url = intent.getStringExtra("referrer"); 
      final String referrer = URLDecoder.decode(url, "UTF-8"); 
      String referrers[] = referrer.split("&"); 
      int i = 0; 
      for (String referrerValue : referrers) { 
       String keyValue[] = referrerValue.split("="); 
       values.put(URLDecoder.decode(keyValue[0], "UTF-8"), 
         URLDecoder.decode(keyValue[1], "UTF-8")); 
       Log.i("" + i, keyValue[0] + "=" + keyValue[1]); 
      } 

      new AsyncTask<String, String, JSONObject>() { 

       @Override 
       protected void onPreExecute() { 
        super.onPreExecute(); 
       } 

       @Override 
       protected JSONObject doInBackground(String... params) { 
        // TODO Auto-generated method stub 
        String referrerUrl = "MyserverUrl?action=storerefer&" + referrer; 
        Log.i("purl address", referrerUrl); 
        JSONObject json = RestJsonClient.connect(referrerUrl); 
        return json; 
       } 

       @Override 
       protected void onPostExecute(JSONObject result) { 
        // TODO Auto-generated method stub 
        try { 
         if (result == null) { 
          Log.i("json null", "12"); 
         } else { 
          String status, error; 
          status = result.getString("status"); 
          error = result.getString("error"); 
          if (status.equals("success")) { 
           Log.i("referrer", "referrer status success"); 
          } 
          if (status.equals("failure")) { 
           Log.i("referrer", "referrer status failure"); 
          } 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
        super.onPostExecute(result); 
       } 
      }.execute(); 
     } 
    } catch (Exception e) { 
    } 
} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="my.package.name" 
android:versionCode="4" 
android:versionName="1.2.1" > 

<supports-screens 
    android:anyDensity="true" 
    android:largeScreens="true" 
    android:normalScreens="true" 
    android:resizeable="true" 
    android:smallScreens="true" /> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="19" /> 

<uses-feature 
    android:name="android.hardware.telephony" 
    android:required="false" /> 
<uses-feature 
    android:name="android.hardware.touchscreen" 
    android:required="false" /> 
<uses-feature 
    android:glEsVersion="0x00020000" 
    android:required="true" /> 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.READ_CONTACTS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="my.package.name.permission.C2D_MESSAGE" /> 
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

<permission 
    android:name="my.package.name.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Black.NoTitleBar" > 
    <activity 
     android:name="my.package.name.Splash" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/app_name" 
     android:windowSoftInputMode="stateHidden" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver 
     android:name="my.package.name.InstallReferrerReceiver" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 

    <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

      <category android:name="my.package.name" /> 
     </intent-filter> 
    </receiver> 

    <service android:name="my.package.name.GCMIntentService" /> 
</application> 

Google'dan sevk dize Çal almak için ne yapmalıyım?

<application 

    android:hardwareAccelerated="true" 
    android:icon="@drawable/ic_bmg" 
    android:label="@string/app_name" 
    android:screenOrientation="portrait" 
    android:theme="@style/AppTheme" > 
    <receiver 
     android:name=".DetectInstall" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="com.android.vending.INSTALL_REFERRER" /> 
     </intent-filter> 
    </receiver> 

sonra da göndermek gerekir: tezahür böyle uygulama içinde alıcı etiketi eklemek ardından

public class DetectInstall extends BroadcastReceiver{ 

private String referrerId; 

@Override 
public void onReceive(Context context, Intent intent) { 

    if ((null != intent) 
      && (intent.getAction().equals("com.android.vending.INSTALL_REFERRER"))) { 
     Log.e("Message", "App is getting installed first time.."); 
     referrerId = intent.getStringExtra("referrer"); 

    } 
} 

}

:

cevap

5

bu basit reciever yazabilir Bunun gibi google playstore URL'ye yönlendirme parametresi:

Eğer yönlendirme alanı gerekiyor

uygulamasını yüklerkenbu ilk kez alacak u yönlendiren alanının geçmek ne olursa olsun dize Eğer yayın alıcısı bunu alacak

İlgili konular