install_referrer 意图弃用

Posted

技术标签:

【中文标题】install_referrer 意图弃用【英文标题】:install_referrer intent deprecation 【发布时间】:2020-04-04 02:15:51 【问题描述】:

我收到了来自谷歌的电子邮件:

我们最近宣布将弃用 install_referrer 意图广播机制。由于您的一个或多个应用使用此意图来跟踪引荐,我们希望确保您在 2020 年 3 月 1 日之前进行切换。在此日期之后,新版本的 Play 商店应用将不再在应用安装后广播 install_referrer 意图。

我没有直接使用install_referrer,但是在浏览合并清单时,我发现一些以包名com.google.firebase.measurement 命名的firebase 服务使用它。

我的 firebase 依赖项已更新到最新版本。

我应该关心它吗?

【问题讨论】:

我有同样的信,我不使用firebase。我没有使用install_referrer。我使用 ADMOB(谁可以使用install_referrer?)。那么如果我们自己不使用install_referrer,我们需要改变什么? 我今天收到了这条消息,但我不明白我该怎么办!!我正在使用 unity3d,并且我已经使用过(Admob 和 Firebase) 我收到这封电子邮件并查看了我的合并清单,看起来 Firebase 是触发此问题的原因。所以基本上等到 Firebase 修复他们的代码并发布更新? @A92 从 firebase 支持处查看我的回答 奇怪的是我在我的两个应用程序中使用了 Firebase,但在邮件中它只说明了其中一个应用程序,尽管它是 Firebase 集成最少的应用程序。 【参考方案1】:

来自 Firebase 支持:

这是一个很好的收获。谢谢让我们注意到这个。 到目前为止,您无需[采取]行动,我已经创建了一个 内部请求,以便我们可以为 install_referrer 在弃用之前的意图广播。截至目前, 我们还没有找到任何细节或时间表,什么时候会 实施的。您可以不时查看我们的发行说明 有关 Firebase 功能及其服务的更新。

奇怪的是谷歌的产品不同步。

但是,如果您不使用 Firebase,并且您的应用包含使用 install_referrer 的第三方库,请直接与他们联系。

要查找 install_referrer 包含在哪个库中,请打开合并清单并搜索 install_referrer,检查包含 install_referrer 的服务的包名称。

【讨论】:

希望在他们发布解决方案之前不会太久,我想所有与安装应用程序相关的事件(可能是 first_open 事件)都不会在 3 月 1 日之后发送2020 年。在他们发布解决方案后,所有使用 Firebase SDK 的应用都应该发布新应用 - 否则 Firebase 将不会收到任何受影响的事件。 @Pavel Poley 如果我不使用 Firebase,你能告诉我如何检查 install_referrer @MouaadAbdelghafourAITALI 打开合并清单并尝试找到install_referrer,右键去声明,可以看到服务的包名 查看合并清单显示来自 Firebase 的 install_referrer。应该是公认的答案!拯救了我的一天!谢谢 有来自firebase的消息吗,我更新到了17.2.2版本还是找到了com.android.vending.INSTALL_REFERRER【参考方案2】:

com.google.firebase:firebase-core:17.2.1com.google.firebase:firebase-analytics:17.2.1INSTALL_REFERRER 添加到 AndroidManifest。可能需要等到 Firebase 团队更新这些包才能使用新的 API。

【讨论】:

就我而言,我没有使用任何 Firebase 库,并且INSTALL_REFERRER 仍然出现 @MouaadAbdelghafourAITALI 那么在你的情况下应该有一些其他库使用不推荐使用的 API。 谢谢,所以主要问题来自 Firebase 库 检查您应用的AndroidManifest.xml 中的合并清单选项卡并查找<intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter>。然后,如果您选择该行,它会告诉您它来自哪个库。在我们的例子中是play-services-ads 我将它更新到版本 17.2.2 但仍然找到 com.android.vending.INSTALL_REFERRER @AndrewS【参考方案3】:

各种 SDK 都可以为安装引用者注册一个接收者。

对于不确定哪个 SDK 将接收器添加到您的清单的开发人员,查看清单合并责备文件很有用。 通常,在build/ 中有一个文件intermediates/manifest_merge_blame_file/release/manifest-merger-blame-release-report.txt

在该文件中,您需要找到具有

的接收器
<action android:name="com.android.vending.INSTALL_REFERRER" />

在它的意图过滤器中,它之前的行将指示该行的来源在您的清单中。

例如,我的一个应用程序的相关行如下所示:

44        <receiver
44-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:29:9-35:20
45            android:name="com.appbrain.ReferrerReceiver"
45-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:30:13-57
46            android:exported="true" >
46-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:31:13-36
47            <intent-filter>
47-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:32:13-34:29
48                <action android:name="com.android.vending.INSTALL_REFERRER" />
48-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:33:17-79
48-->[com.appbrain:appbrain-sdk:15.10] .../jetified-appbrain-sdk-15.10/AndroidManifest.xml:33:25-76
49            </intent-filter>
50        </receiver>

这表明 AppBrain SDK(我是其中的开发者之一)为安装引荐来源网址添加了接收器。我们的博文中的下图解释了究竟发生了什么变化 (https://medium.com/appbrain/the-google-play-referrer-api-and-the-appbrain-sdk-38cfbaa350dc) 阐明了 Google 正在发生的变化:

【讨论】:

太棒了!我不知道这个文件,它帮助我弄清楚install_referrer 到底在使用什么。澄清一下,我在 app-modules build/ 文件夹中找到它,而不是在根 build/ 文件夹中。 我正在使用 Unity3D,但我不确定如何使用这些信息,您是否也知道 Unity3D 的解决方案?【参考方案4】:

检查我构建的 apk 上的清单文件后,我发现 Firebase Core Analytics 上的 firebase-measurement-connector 模块使用的安装引用广播,因此我将它们排除在外:

 implementation ('com.google.firebase:firebase-ads:17.2.0')

    exclude group: 'com.google.firebase', module: 'firebase-core'
    exclude group: 'com.google.firebase', module: 'firebase-analytics'
    exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'

然后通过 Analyzing APk 再次重新检查我的 manifest 合并文件,并且 Install referer 广播消失了。

另一方面,如果您使用跟踪分析,Google 会要求您在 2020 年 3 月之前切换到 Install Referrer API https://developer.android.com/google/play/installreferrer/library.html

【讨论】:

【参考方案5】:

我检查了 Firebase 支持代理是否存在此问题。 Firebase 库正在使用 install_referrer,我得到了 Firebase 支持代理的以下响应:

这是一个很好的收获。谢谢让我们注意到这个。我是 目前正在与我们的分析专家讨论,并将回复 在 48 小时内,或在我有更多信息后尽快。目前,没有 需要您采取任何行动,等待下一次更新 Firebase 团队。

我认为我们需要等待 Firebase 的下一个版本。 Firebase 团队更新了这些包以使用新的 API。

如果您自己在代码中使用了此 API,则需要立即更改它,因为您不依赖于 firebase 或任何其他第三方库提供商。

【讨论】:

我更新到了17.2.2版本还是找到了com.android.vending.INSTALL_REFERRER,请问你是怎么解决的? 是的,同样的情况,Faxriddin Abdullayev 收到支持代理的回复了吗?谢谢! 好吧,我们终于有更新了,他们删除了:分析版本 17.4.0。【参考方案6】:

Android 开发者博客上有一篇关于此的文章

https://android-developers.googleblog.com/2019/11/still-using-installbroadcast-switch-to.html

在本文中,他们还提到了 install_referrer 意图广播机制的旧实现,并提供了完整的信息。所以我们可以在我们现有的代码中找到它。

https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-campaigns

【讨论】:

OP 提到他没有直接集成到这个 API 中......鉴于其相对模糊的用例,这里的大多数开发人员很可能不会直接使用它 @Jey Sidri 它帮助了我,*** 不仅仅是关于你知道的 OP 吗?【参考方案7】:

INSTALL_REFERRER 不仅带有Firebase,还带有ADMOB。我可以确认Admob v3.18.3 拥有此权限,但它不再进入Admob v4.2.1。我没有测试过其他版本,但我听说一些以前的版本,比如4.2.0 & 4.1.0 也没有这个权限。

但这里的问题是我们是否需要删除权限,或者我们需要确保如果我们的应用使用Play Install Referrer Library,那么必须包含INSTALL_REFERRER。因为所需的操作不是删除它,而是迁移到它。

【讨论】:

以上是关于install_referrer 意图弃用的主要内容,如果未能解决你的问题,请参考以下文章

处理 Lollipop 中的隐含意图未来弃用

Google Play Install Referrer API 与 INSTALL_REFERRER 广播

如何在Unity3d游戏中检索Android安装引荐来源网址

从 Android Market 安装应用后获取推荐人

如何确认片段中条带的设置意图?

Android:如何获取服务接收到的意图?