如何通过我的链接检测未安装特定应用程序

时间:2016-04-20 05:22:00

标签: android google-play

我正在开发一款基于手机钱和其他应用程序的应用程序,所以如何检测到任何应用程序是通过我的链接而不是从Play商店安装的

1 个答案:

答案 0 :(得分:0)

跟踪下载源的最佳方法是使用添加了引用参数的playstore,并使用app中的广播接收器来理解源代码。

Playstore链接应该看起来有点像 https://play.google.com/store/apps/details?id=com.hellochatty&referrer=tracking_id%3D123456789

配置您的应用 Android Manifest

首先,您需要在AndroidManifest.xml中注册广播消费者。

 

 <receiver
 android:name=".receivers.InstallReceiver"
 android:exported="true" >
 <intent-filter>
 <action android:name="com.android.vending.INSTALL_REFERRER" />
 </intent-filter>
 </receiver>

这里我们正在配置我们的应用程序以侦听意图INSTALL_REFERRER并通过InstallReceiver接收广播事件。

InstallReceiver

public class InstallReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String rawReferrer = intent.getStringExtra("referrer");
        if (rawReferrer != null) {
            trackReferrerAttributes(rawReferrer, context);
        }
    }

    private void trackReferrerAttributes(String rawReferrer, Context context) {
        String referrer = "";

        try {
            referrer = URLDecoder.decode(rawReferrer, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            return;
        }

        if (Strings.isNullOrEmpty(referrer)) {
            return;
        }

        Uri uri = Uri.parse('?' + referrer); // appends ? for Uri to pickup query string

        String memberCode;
        try {
            referringMember = uri.getQueryParameter("mcode");
        } catch (UnsupportedOperationException e) {
            return;
        }

        SharedPreferences.Editor editor = context.getSharedPreferences(
            BuildConfig.PACKAGE_NAME, Context.MODE_PRIVATE).edit();

        if (!Strings.isNullOrEmpty(memberCode)) {
            editor.putString(Constants.REFERRER_CODE, memberCode);
        }

        String referralMedium = uri.getQueryParameter("tc");
        if (!Strings.isNullOrEmpty(referralMedium)) {
            editor.putString("referral_medium", referralMedium);
        }

        editor.apply();
    }
}

Code reference

您还可以查看并下载this git repo

中的示例代码