java – Android引荐跟踪不能与Google Play一起使用

前端之家收集整理的这篇文章主要介绍了java – Android引荐跟踪不能与Google Play一起使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从Google Play下载下载的推荐跟踪.
上传到Google Play之前,当我尝试使用以下脚本测试应用程序时,它的工作正常,我正在获得引用字符串.
  1. adb shell
  2. 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.

  1. public class InstallReferrerReceiver extends BroadcastReceiver {
  2. private static final String TAG = "InstallReferrerReceiver";
  3.  
  4. @Override
  5. public void onReceive(Context context,Intent intent) {
  6.  
  7. HashMap<String,String> values = new HashMap<String,String>();
  8. try {
  9. if (intent.hasExtra("referrer")) {
  10. Toast.makeText(context,"Inside app refferal",5000).show();
  11.  
  12. String url = intent.getStringExtra("referrer");
  13. final String referrer = URLDecoder.decode(url,"UTF-8");
  14. String referrers[] = referrer.split("&");
  15. int i = 0;
  16. for (String referrerValue : referrers) {
  17. String keyValue[] = referrerValue.split("=");
  18. values.put(URLDecoder.decode(keyValue[0],"UTF-8"),URLDecoder.decode(keyValue[1],"UTF-8"));
  19. Log.i("" + i,keyValue[0] + "=" + keyValue[1]);
  20. }
  21.  
  22. new AsyncTask<String,String,JSONObject>() {
  23.  
  24. @Override
  25. protected void onPreExecute() {
  26. super.onPreExecute();
  27. }
  28.  
  29. @Override
  30. protected JSONObject doInBackground(String... params) {
  31. // TODO Auto-generated method stub
  32. String referrerUrl = "MyserverUrl?action=storerefer&" + referrer;
  33. Log.i("purl address",referrerUrl);
  34. JSONObject json = RestJsonClient.connect(referrerUrl);
  35. return json;
  36. }
  37.  
  38. @Override
  39. protected void onPostExecute(JSONObject result) {
  40. // TODO Auto-generated method stub
  41. try {
  42. if (result == null) {
  43. Log.i("json null","12");
  44. } else {
  45. String status,error;
  46. status = result.getString("status");
  47. error = result.getString("error");
  48. if (status.equals("success")) {
  49. Log.i("referrer","referrer status success");
  50. }
  51. if (status.equals("failure")) {
  52. Log.i("referrer","referrer status failure");
  53. }
  54. }
  55. } catch (JSONException e) {
  56. e.printStackTrace();
  57. } catch (Exception e) {
  58. e.printStackTrace();
  59. }
  60. super.onPostExecute(result);
  61. }
  62. }.execute();
  63. }
  64. } catch (Exception e) {
  65. }
  66. }

AndroidManifest.xml中

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="my.package.name"
  4. android:versionCode="4"
  5. android:versionName="1.2.1" >
  6.  
  7. <supports-screens
  8. android:anyDensity="true"
  9. android:largeScreens="true"
  10. android:normalScreens="true"
  11. android:resizeable="true"
  12. android:smallScreens="true" />
  13.  
  14. <uses-sdk
  15. android:minSdkVersion="8"
  16. android:targetSdkVersion="19" />
  17.  
  18. <uses-feature
  19. android:name="android.hardware.telephony"
  20. android:required="false" />
  21. <uses-feature
  22. android:name="android.hardware.touchscreen"
  23. android:required="false" />
  24. <uses-feature
  25. android:glEsVersion="0x00020000"
  26. android:required="true" />
  27.  
  28. <uses-permission android:name="android.permission.INTERNET" />
  29. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  30. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  31. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  32. <uses-permission android:name="android.permission.READ_CONTACTS" />
  33. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  34. <uses-permission android:name="android.permission.RECEIVE_SMS" />
  35. <uses-permission android:name="android.permission.SEND_SMS" />
  36. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  37. <uses-permission android:name="android.permission.WAKE_LOCK" />
  38. <uses-permission android:name="my.package.name.permission.C2D_MESSAGE" />
  39. <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
  40. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  41. <uses-permission android:name="android.permission.VIBRATE" />
  42. <uses-permission android:name="android.permission.RECEIVE_SMS" />
  43.  
  44. <permission
  45. android:name="my.package.name.permission.C2D_MESSAGE"
  46. android:protectionLevel="signature" />
  47.  
  48. <application
  49. android:allowBackup="true"
  50. android:icon="@drawable/ic_launcher"
  51. android:label="@string/app_name"
  52. android:theme="@android:style/Theme.Black.NoTitleBar" >
  53. <activity
  54. android:name="my.package.name.Splash"
  55. android:configChanges="orientation|keyboardHidden|screenSize"
  56. android:label="@string/app_name"
  57. android:windowSoftInputMode="stateHidden" >
  58. <intent-filter>
  59. <action android:name="android.intent.action.MAIN" />
  60.  
  61. <category android:name="android.intent.category.LAUNCHER" />
  62. </intent-filter>
  63. </activity>
  64.  
  65. <receiver
  66. android:name="my.package.name.InstallReferrerReceiver"
  67. android:exported="true" >
  68. <intent-filter>
  69. <action android:name="com.android.vending.INSTALL_REFERRER" />
  70. </intent-filter>
  71. </receiver>
  72.  
  73. <receiver
  74. android:name="com.google.android.gcm.GCMBroadcastReceiver"
  75. android:permission="com.google.android.c2dm.permission.SEND" >
  76. <intent-filter>
  77. <action android:name="com.google.android.c2dm.intent.RECEIVE" />
  78. <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
  79.  
  80. <category android:name="my.package.name" />
  81. </intent-filter>
  82. </receiver>
  83.  
  84. <service android:name="my.package.name.GCMIntentService" />
  85. </application>

如何从Google Play获取推荐字串?

解决方法

你可以写这个简单的接收器:
  1. public class DetectInstall extends BroadcastReceiver{
  2.  
  3. private String referrerId;
  4.  
  5. @Override
  6. public void onReceive(Context context,Intent intent) {
  7.  
  8. if ((null != intent)
  9. && (intent.getAction().equals("com.android.vending.INSTALL_REFERRER"))) {
  10. Log.e("Message","App is getting installed first time..");
  11. referrerId = intent.getStringExtra("referrer");
  12.  
  13. }
  14. }

}

然后在清单中添加接收器标签内的应用程序,如下所示:

  1. <application
  2.  
  3. android:hardwareAccelerated="true"
  4. android:icon="@drawable/ic_bmg"
  5. android:label="@string/app_name"
  6. android:screenOrientation="portrait"
  7. android:theme="@style/AppTheme" >
  8. <receiver
  9. android:name=".DetectInstall"
  10. android:exported="true" >
  11. <intent-filter>
  12. <action android:name="com.android.vending.INSTALL_REFERRER" />
  13. </intent-filter>
  14. </receiver>

那么您需要将referrer参数发送到google playstore URL,就像这样:

https://play.google.com/store/apps/details?id=you.package.name&hl=en&referrer=you将首次安装应用程序

引荐来源字段是必需的,无论您在引荐来源网址中传递什么字符串,您都可以在广播接收者中获取

猜你在找的Android相关文章