Chrome 自定义选项卡 EXTRA_REFERRER 无效

Chrome Custom Tabs EXTRA_REFERRER is not working

根据文档 google,Chrome 自定义选项卡支持 app 作为引用 。但是当我检查 google 分析时,流量并不是指它显示为 direct 的应用程序。资源:https://developer.chrome.com/multidevice/android/customtabs#add-your%20app%20as%20the%20referrer

这是我的代码:

fun browseUrlCustomTab(context: Context, url: String) {
        var url = url
        if (!url.startsWith("http") && !url.startsWith("https"))
            url = "http://$url"
        val builder = CustomTabsIntent.Builder()
                .addDefaultShareMenuItem()
                .setToolbarColor(ContextCompat.getColor(context, getThemePrimaryDarkColor()))
                .setShowTitle(true)
                .enableUrlBarHiding()
                //.setStartAnimations(context, android.R.anim.slide_in_right, R.anim.slide_out_left)
                .setExitAnimations(context, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
                .setCloseButtonIcon(getBitmapFromVectorDrawable(context, R.drawable.ic_back)!!)
        val customTabsIntent = builder.build()
        customTabsIntent.intent.setPackage("com.android.chrome")
        //customTabsIntent.intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_TASK
        customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER,
                Uri.parse(""+Intent.URI_ANDROID_APP_SCHEME + "//" + context.packageName))
        customTabsIntent.launchUrl(context, Uri.parse(url))
    }

我想问的是有什么我遗漏的或有什么方法可以在 google 分析上获得推荐。

Chrome Custom Tabs : Add your app as the referrer 中提到使用 Intent.URI_ANDROID_APP_SCHEME 获取流量来源,但它是一个整数标志,其值为 2,这使得引用 URI 为“2://com.example.app”我认为这是无效的,所以你可以参考 android Android : URI_ANDROID_APP_SCHEME 的意图 class 您可以使用 android-app: 而不是 Intent.URI_ANDROID_APP_SCHEME

fun browseUrlCustomTab(context: Context, url: String) {
    var url = url
    if (!url.startsWith("http") && !url.startsWith("https"))
        url = "http://$url"
    val builder = CustomTabsIntent.Builder()
            .addDefaultShareMenuItem()
            .setToolbarColor(ContextCompat.getColor(context, getThemePrimaryDarkColor()))
            .setShowTitle(true)
            .enableUrlBarHiding()
            //.setStartAnimations(context, android.R.anim.slide_in_right, R.anim.slide_out_left)
            .setExitAnimations(context, android.R.anim.slide_in_left, android.R.anim.slide_out_right)
            .setCloseButtonIcon(getBitmapFromVectorDrawable(context, R.drawable.ic_back)!!)
    val customTabsIntent = builder.build()
    //customTabsIntent.intent.flags = Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_TASK
    customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER,
            Uri.parse("android-app://" + context.packageName))
    customTabsIntent.launchUrl(context, Uri.parse(url))
}

所以首先,我花了很多时间思考这个问题并尝试了很多东西。所以我观察到的是这个

我试过的 URL 是 https://www.whatismybrowser.com/ 它只显示推荐人。

片段 1: 在我的第一次尝试中,我使用了这个

customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER,"android-app://"+context.packageName)

但该网站根本没有向我显示引荐来源网址。我说没有推荐人/隐藏

片段 2: 所以接下来我尝试了这个

customTabsIntent.intent.putExtra(Intent.EXTRA_REFERRER_NAME,"android-app://"+context.packageName)

通过使用 EXTRA_REFERRER_NAME 我能够清楚地看到引荐来源网址,即我的包裹 android-app://com.mypackage.something/

所以,现在我将 https://www.whatismybrowser.com/ 替换为我的原始网站,该网站已经与 google 分析帐户链接 我希望它能将流量来源显示为我的应用程序包名称,但不幸的是没有理由, 我仍然得到直接流量而不是我的包裹

那么这个的替代品是什么?

所以,我查看了这个博客:A Handy Guide to UTM Codes: Know Which of Your Campaigns Really Work

所以,他们提到的只是在 URL 中使用 utm_source 和 utm_medium,同时使用 chrome 自定义选项卡 [=19] 启动 URL =]

我这样试过

browseUrlCustomTab(this,"https://www.mysitename.com?utm_medium=MyAndroidApp&utm_source=in.mypackage.app")

并且它在 google 分析

中显示的包名称起作用

我的结论:

我想这与 google 分析本身有关。因为 https://www.whatismyreferer.com/ 站点显示了引荐来源网址,即我使用第二个片段时的包裹

所以我想我的假设是,要么我必须不正确地设置 google 分析帐户,要么 EXTRA_REFERRER [=18= 中提到的事情] 不再工作了。

而且我不知道我提到的解决方法是好是坏,我也不知道它的优缺点。但我相信它会按预期工作