什么是'动作android:name =“com.android.vending.INSTALL_REFERRER”'?

时间:2012-09-29 01:06:10

标签: android referrer receiver

我测试了Appbrain SDK和Inmobi SDK。 我找到了这个常见的接收器。我制作了定制接收器。 我认为,当在谷歌市场下载应用程序时,谷歌市场会向我的应用程序发送'referer'值。但我没有收到任何东西。什么问题?

//This is Appbrain's receiver
<receiver android:exported="true" android:name="com.appbrain.ReferrerReceiver" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>


//This is Inmobi's receiver
<receiver android:name="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" android:exported="true"  >
   <intent-filter>
      <action android:name="com.android.vending.INSTALL_REFERRER" />
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>


//This is My Custom receiver
<receiver android:name="com.xgame.adproject2.TestReceiver" android:exported="true" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>

// source
public class TestReceiver extends BroadcastReceiver{

    public static final String TAG = "TEST";

    String referrerString = "";

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

        Log.e(TAG, "11111111");

        if(intent.getAction().equals("com.android.vending.INSTALL_REFERRER")) {
           Bundle extras = intent.getExtras();
           referrerString = extras.getString("referrer");

           Log.e(TAG, "REFERRER: " + referrerString);
        }
    }
}

当关闭应用程序时,我在android web浏览器中输入了这个url。但在下载应用程序后,我还没有收到推荐人的价值。

https://play.google.com/store/apps/details?id=com.xgame.adproject2&referrer=utm_source%3Dcom.xgame.adproject2%26utm_medium%3Dgoogle%26utm_term%3Dbanner%26utm_campaign%3Dxgame

2 个答案:

答案 0 :(得分:4)

需要注意的一件重要事情是Android市场/ Google Play只会将安装引荐来源发送到您在清单中定义的第一个接收者。因此,在这种情况下,只有AppLift接收器才能获得它。

有一种方法可以从AppLift接收器“转发”事件,如JavaDoc中所述:http://swisscodemonkeys.github.com/appbrain-sdk/javadoc/reference/com/appbrain/ReferrerReceiver.html

在您的情况下,您的清单应如下所示:

//This is Appbrain's receiver
<receiver android:exported="true" android:name="com.appbrain.ReferrerReceiver" >
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
    <meta-data android:name="forward.inmobi" android:value="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" /> 
    <meta-data android:name="forward.custom" android:value="com.xgame.adproject2.TestReceiver" />
</receiver>

// Keep the execution of InMobi on connectivity change
<receiver android:name="com.inmobi.adtracker.androidsdk.IMAdTrackerInstallRefererReciever" android:exported="true" >
   <intent-filter>
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
   </intent-filter>
</receiver>

请注意,可能值得主演的Android问题跟踪器上的相关错误是:http://code.google.com/p/android/issues/detail?id=24119(它是关于从有机应用程序发现中恢复引荐来源字符串,如果他们修复了希望他们也会添加引荐来源通过Play网站安装时的字符串。)

答案 1 :(得分:3)

很久以前,Android市场会向您传递导致您安装的市场页面的引荐来源字符串。在某些时候谷歌阻止了这一点。 你可以在http://productforums.google.com/forum/#!topic/android-market/F5TO9uE3WSA

看到一个帖子

现在只有在打开它时明确传递给市场应用程序时才会获得引用者字符串。例如,如果应用程序A有一个用于安装应用程序B的按钮,则可以传递引用者字符串 市场://细节ID = B和引荐= A?它主要用于想要衡量广告对应用的有效性的广告网络