在Play商店中正确跟踪安装推介

Ami*_*ari 15 android android-intent install-referrer android-broadcastreceiver

我有一个简单的任务:我想跟踪应用安装的引用ID并将其传递给后端.

我做了什么:我创建了一个带有额外参数的链接,referrer并将其附加到邀请链接.当它打开时,javascript检测浏览器是否是Android移动浏览器,然后准备intent并发出重定向到该意图.在准备意图时,referrer字段从网址中提取并附加到intent以下内容中:

intent://scan/#Intent;scheme=com.example.android;package=com.example.android&referrer=4;end
Run Code Online (Sandbox Code Playgroud)

这是我的代码BroadCastReceiver:

public class InstallReferrerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        TinyDB tinyDB = new TinyDB(context);
        String referrer = intent.getStringExtra("referrer");
        tinyDB.putString(AppConstants.REFERRAL_ID, referrer);
        tinyDB.putBoolean(AppConstants.REFERRAL_SENT, false);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我期望在这里得到的价值referrer4基于上述intent.但我得到的价值就是这个字符串utm_source=google-play&utm_medium=organic

我做错了什么,如何修复它以获得正确的referrer字段值?

编辑

referrer安装应用程序后,我在创建URL或从字段中提取值时没有任何问题.

通过点击任意按钮或直接在移动浏览器中打开邀请链接后,我使用上述内容"如果已经安装了应用程序,请打开应用程序,或者在Play商店应用程序上打开应用程序页面以供用户安装".

问题是,我应该如何通过上述意图将referrer字段的值从邀请链接传递到Play商店应用,以便Play商店收到此值并在安装时将其传递给应用.

Neo*_*Neo 7

你需要正确测试它,我发布我的用例,希望它能解决你的问题:)

可怜的网址 -

https://play.google.com/store/apps/details?id=com.mypackage&referrer=utm_source%3Dmobisoc%26utm_content%3D{transaction_id}%26utm_campaign%3D1
Run Code Online (Sandbox Code Playgroud)

接受refferal的代码 -

public static final String KEY_UTM_SOURCE = "utm_source";
public static final String KEY_UTM_CONTENT = "utm_content";
public static final String KEY_UTM_CAMPAIGN = "utm_campaign";
public void onReceive(Context context, Intent intent) {
    Utils.log("Referral Received");
    try {
        String referrer = intent.getStringExtra("referrer");
        if (referrer != null && !referrer.equals("")) {
            Utils.log("Referral Received - " + referrer);
            String[] referrerParts = referrer.split("&");
            String utmSource = getData(KEY_UTM_SOURCE, referrerParts);
            String utmContent = getData(KEY_UTM_CONTENT, referrerParts);
            String utmCampaign = getData(KEY_UTM_CAMPAIGN, referrerParts);
            if (utmSource != null && utmSource.equals("mobisoc")) {
                sendLogToMobisocServer(context, utmContent);
            } else if (utmSource != null && utmSource.equals("app_share")) {
                RawStorageProvider.getInstance(context).dumpDataToStorage(RaghuKakaConstants.REFFERAL_FOR, utmContent);
            }
            updateRKServerForReferral(context, utmSource, utmCampaign, utmContent);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private String getData(String key, String[] allData) {
    for (String selected : allData)
        if (selected.contains(key)) {
            return selected.split("=")[1];
        }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

现在最重要的部分测试.您可以在本地测试推荐.只需要连接手机,使用即可打开shell提示符adb shell.并播放推荐数据.以下是命令序列示例 -

C:\Users\Neo\Desktop>adb shell
$ am broadcast -a com.android.vending.INSTALL_REFERRER -n com.mypackage/<className of your ReferralReceiver with package> --es "referrer" "utm_source%3Dmobisoc%26utm_content%3D{transaction_id}%26utm_campaign%3D1"
Run Code Online (Sandbox Code Playgroud)

附加 -

https://play.google.com/store/apps/details?id=com.mypackage&referrer = utm_source%3Dmobisoc%26utm_content%3D {transaction_id}%26utm_campaign%3D1

只需看看我的链接.如果用户将通过该链接转到Playstore,并安装该应用程序.然后,当应用程序启动时,您的onReceive方法将自动触发,您将在referrer =之后获得所有数据.

广播 -

$ am broadcast -a com.android.vending.INSTALL_REFERRER -n com.mypackage/<className of your ReferralReceiver with package> --es "referrer" "utm_source%3Dmobisoc%26utm_content%3D{transaction_id}%26utm_campaign%3D1"
Run Code Online (Sandbox Code Playgroud)

为了测试你,你不需要在playstore上发布你的应用程序,只需在onReceive的第一个点上调试一个调试点,在调试模式下启动,然后激活我发布的命令序列,你将获得"referrer"标签之后的所有数据.因此,您可以在创建引荐来源链接时决定需要添加哪些数据.

如果您需要更多说明,请告诉我:)


Pon*_*pat 5

通过Firebase动态链接跟踪引荐来源更好,更可靠。

下面这是如何工作的。

https:// domain /?link = your_deep_link&apn = package_name [&amv = minimum_version] [&ad = 1] [&al = android_link] [&afl = fallback_link]

这是填写参数后的链接示例。

https://example.app.goo.gl/?link=https://www.example.com/someresource&apn=com.example.android&amv=3&al=exampleapp://someresource&ibi=com.example.ios&isi=1234567&ius=exampleapp

当然,您可以https://example.app.goo.gl/abcde直接在Firebase控制台上缩短到类似对象的链接。设置动态链接仅需几分钟。

然后,Activity您可以在主机上的Android应用中调用AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, false)来检索链接信息。

可以在这里找到更多信息https://firebase.google.com/docs/dynamic-links/