Android - 是否可以通过编程方式获得安装引荐来源

Bor*_*lav 27 android google-play

我注意到浏览器中的某些Google Play应用链接具有referrer=属性,这显然告诉推荐人将您发送到Google Play中的应用页面.

是否可以在我的应用程序的代码中看到引用者(如果有的话)?如果没有,在任何地方都可以看到它?

Mat*_*ini 52

你可以用com.android.vending.INSTALL_REFERRER.

从Google Play商店安装应用时,会播放Google Play com.android.vending.INSTALL_REFERRER意图.

将此接收器添加到AndroidManifest.xml

<receiver
    android:name="com.example.android.InstallReferrerReceiver"
    android:exported="true"
    android:permission="android.permission.INSTALL_PACKAGES">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

创建一个BroadcastReceiver:

public class InstallReferrerReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        String referrer = intent.getStringExtra("referrer");

        //Use the referrer
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以按照此答案的步骤测试引荐跟踪.

  • 我刚刚更新了答案,其中包含一个解答如何测试引荐跟踪的答案的链接. (2认同)
  • 当从Google Play商店安装应用时,广播意图.因此,当用户安装您的应用时,Google Play商店会发送意图,您的代码将在onReceiver中执行. (2认同)

Dev*_*ven 8

使用Google Play Referrer API(自 2017 年 11 月 20 日起)

InstallReferrerClient mReferrerClient
...
mReferrerClient = newBuilder(this).build();
mReferrerClient.startConnection(this);

@Override
public void onInstallReferrerSetupFinished(int responseCode) {
   switch (responseCode) {
       case InstallReferrerResponse.OK:
           try {
               ReferrerDetails response = mReferrerClient.getInstallReferrer();
               String referrer = response.getInstallReferrer()
               mReferrerClient.endConnection();
           } catch (RemoteException e) {
               e.printStackTrace();
           }
           break;
       case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
           Log.w(TAG, "InstallReferrer not supported");
           break;
       case InstallReferrerResponse.SERVICE_UNAVAILABLE:
           Log.w(TAG, "Unable to connect to the service");
           break;
       default:
           Log.w(TAG, "responseCode not found.");
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 在将 APP 发布到 Google Play 商店之前,您知道如何对其进行测试吗? (2认同)