I am trying to implement referral tracking on downloads from the Google play. Before uploading to Google Play, when I tried testing the app using below script, its working fine and i am getting referral string.

我正在尝试对谷歌播放的下载进行推荐跟踪。在上传到谷歌播放之前,当我尝试使用下面的脚本测试应用程序时,它运行良好,我得到了推荐字符串。

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"

After running this code, I am decoding the referral string and my server getting updated according to the referral string. But when I deployed this app to Google play, I am not getting any referral string from Google play. I am using Google Analytics V2 for both analytic tracking and referral tracking.

运行此代码后,我正在解码引用字符串,我的服务器将根据引用字符串进行更新。但是当我将这个应用部署到谷歌play时,我并没有从谷歌play获得任何推荐字符串。我使用谷歌分析V2进行分析跟踪和推荐跟踪。

Below one is my custom BroadcastReceiver.

下面是我的自定义广播接收器。

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

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>

What should I do to get referral string from Google Play ?

在谷歌游戏中,我应该怎么做才能得到推荐字符串?

1 个解决方案

#1


5

you can write this simple reciever:

你可以写下这个简单的感谢:

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");

    }
}

}

}

then in manifest add the receiver tag inside the application like this :

然后在manifest中,在应用程序中添加receiver标签,如下所示:

<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>

then you will need to send the referrer parameter to the google playstore URL Like this :

然后需要将referrer参数发送到谷歌playstore URL如下:

https://play.google.com/store/apps/details?id=you.package.name&hl=en&referrer=you will get this first time when you install app

当你安装app时,你会第一次得到这个应用

referrer field is required, whatever string u pass in referrer field you will get it in the broadcast reciever

需要引用字段,无论您在引用字段中传递什么字符串,您都将在广播接收中获得它

更多相关文章

  1. String字符串的应用
  2. java 正则表达式查找某段字符串中所有小写字母开头的单词并统计
  3. 根据用户的动态字段对链接列表进行排序
  4. Javascript 检查字符串是否是数字的几种方法
  5. JavaScript替换字符串中最后一个字符
  6. Java中怎么把字符串数组转为整形数组
  7. java里如何取出一个字符串中的数字?
  8. Java解析Json字符串--Map
  9. java 中判断一个字符串中大小写字母的个数及其思路

随机推荐

  1. jquery异步机制源码分析
  2. 未捕获的ReferenceError:HTML未在HTMLTabl
  3. [jquery]如何实现页面单块DIV区域滚动展
  4. (文件).ready是全球范围的吗?
  5. TypeError:e。getPosition不是一个函数。
  6. 创建一个未排序的数组,其中包含重复元素和
  7. 如何停止基于CSS值的jquery动画?
  8. js不使用jquery,调用ajax,传递数组,并接
  9. 网页标签功能插: jQuery tags input 翻
  10. 可编辑的表格:jQuery+PHP实现实时编辑表格