我正在尝试从Google Play下载下载的推荐跟踪.
在上传到Google Play之前,当我尝试使用以下脚本测试应用程序时,它的工作正常,我正在获得引用字符串.
在上传到Google Play之前,当我尝试使用以下脚本测试应用程序时,它的工作正常,我正在获得引用字符串.
- 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"
运行此代码后,我将根据引荐字符串对引用字符串和我的服务器进行更新.但是当我将此应用程序部署到Google Play时,我没有从Google播放中获取任何推荐字符串.我正在使用Google Analytics(分析)V2进行分析跟踪和引荐跟踪.
下面是我的定制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中
- <?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 Play获取推荐字串?
解决方法
你可以写这个简单的接收器:
- 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");
- }
- }
}
- <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>
那么您需要将referrer参数发送到google playstore URL,就像这样:
https://play.google.com/store/apps/details?id=you.package.name&hl=en&referrer=you将首次安装应用程序
引荐来源字段是必需的,无论您在引荐来源网址中传递什么字符串,您都可以在广播接收者中获取