我希望从收听Play商店的INSTALL_REFERRER意图迁移到使用新的Google Play安装引荐库.
我很难找到一种方法来测试这个新的库,而无需先将我的应用程序添加到Play商店.通过BroadcastReceiver监听INSTALL_REFERRER意图时,我可以通过活动管理器手动发送广播来模拟行为进行测试.也就是说,我可以按照Google的这些步骤进行测试.
是否还有一种方法可以测试这个新库而无需先将我的应用程序放在Play商店中?
最近我将谷歌播放服务依赖版更新到15.0.0它自动添加了以下权限.
我不是不需要此Google Play Referrer API权限
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
Run Code Online (Sandbox Code Playgroud)
我可以删除此权限
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"
tools:node="remove" />
Run Code Online (Sandbox Code Playgroud)
但我需要知道哪个依赖项需要BIND_GET_INSTALL_REFERRER_SERVICE权限,依赖项是否真的需要此权限.
App Level Gradle
dependencies {
ext {
support_library_version = '27.0.2'
google_play_services_version = '15.0.0'
}
implementation 'com.android.support:multidex:1.0.3'
implementation "com.android.support:appcompat-v7:${support_library_version}"
implementation "com.android.support:design:${support_library_version}"
implementation "com.android.support:recyclerview-v7:${support_library_version}"
implementation "com.android.support:cardview-v7:${support_library_version}"
implementation "com.google.android.gms:play-services-analytics:${google_play_services_version}"
implementation "com.google.android.gms:play-services-gcm:${google_play_services_version}"
implementation "com.google.firebase:firebase-messaging:${google_play_services_version}"
implementation "com.google.firebase:firebase-core:${google_play_services_version}"
implementation "com.google.firebase:firebase-ads:${google_play_services_version}"
}
Run Code Online (Sandbox Code Playgroud)
项目级别Gradle
dependencies {
classpath 'com.android.tools.build:gradle:3.1.1'
classpath 'com.google.gms:google-services:3.2.0'
}
Run Code Online (Sandbox Code Playgroud)
注意:对于推荐人跟踪我已经在使用谷歌分析
<service android:name="com.google.android.gms.analytics.CampaignTrackingService"
android:enabled="true"
android:exported="false" />
Run Code Online (Sandbox Code Playgroud) android google-play-services android-gradle-plugin install-referrer
我有一个简单的任务:我想跟踪应用安装的引用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)
所以,我期望在这里得到的价值referrer
是4
基于上述intent
.但我得到的价值就是这个字符串utm_source=google-play&utm_medium=organic
我做错了什么,如何修复它以获得正确的referrer
字段值?
编辑
referrer
安装应用程序后,我在创建URL或从字段中提取值时没有任何问题.
通过点击任意按钮或直接在移动浏览器中打开邀请链接后,我使用上述内容"如果已经安装了应用程序,请打开应用程序,或者在Play商店应用程序上打开应用程序页面以供用户安装".
问题是,我应该如何通过上述意图将referrer字段的值从邀请链接传递到Play商店应用,以便Play商店收到此值并在安装时将其传递给应用.
android android-intent install-referrer android-broadcastreceiver
我正在构建电子商务平台。这包括网站、Android 应用程序和 iOS 应用程序。
我已经使用 Google Play Install Referrer API 在 Android 上实现了.
我搜索了 iOS 解决方案,但没有得到任何合适的解决方案。
我该怎么办?
谢谢。
我最初问过这个问题,关于在安装时通过市场链接将参数传递到我的应用程序.
每个人似乎都在说BroadcastListener
用这个intent-filter
动作来创造一个com.android.vending.INSTALL_REFERRER
.关于这一点的所有文档似乎暗示这是Google Analytics的功能(文档在v1中,但我现在只能下载v2 SDK ...这就是我正在使用的内容).我无法通过这些链接传递数据.我有我的完整清单和我的广播听众.我已将谷歌分析包括在内,以防万一.
它根本不起作用.我的广播监听器永远不会被调用,日志中不会打印出任何内容.救命!
AndroidManifest.xml中
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.robotsidekick.webbrowser"
android:versionCode="4"
android:versionName="4.0">
<uses-sdk android:minSdkVersion="17"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:label="@string/app_name"
android:icon="@drawable/ic_launcher">
<activity
android:name="WebBrowser"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver
android:exported="true"
android:name="com.robotsidekick.webbrowser.InstallReceiver">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
广播听众
public class InstallReceiver extends BroadcastReceiver
{
private static final String TAG = "InstallReceiver";
public void onReceive(Context …
Run Code Online (Sandbox Code Playgroud) 我收到了来自谷歌的电子邮件:
我们最近宣布将弃用 install_referrer 意图广播机制。由于您的一个或多个应用使用此 Intent 来跟踪引荐,我们希望确保您在 2020 年 3 月 1 日之前进行切换。在此日期之后,Play 商店应用的新版本将不再在应用安装后广播 install_referrer Intent。
我在 Stack 上检查了这个答案:install_referrer intent deprecation并遵循等待 Firebase 库更新的建议,现在我将我的项目更新到最新版本,但仍然在 package="com.google.firebase 下的清单合并中进入 INSTALL_REFERRER。 measurement_impl"
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.firebase.measurement_impl" >
<uses-sdk android:minSdkVersion="14" />
<!-- Required permission for App measurement to run. -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
<application>
<receiver
android:name="com.google.android.gms.measurement.AppMeasurementInstallReferrerReceiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.INSTALL_PACKAGES" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
这里是我在项目中使用的 firebase 版本
implementation 'com.google.firebase:firebase-messaging:20.1.0'
implementation 'com.google.firebase:firebase-analytics:17.2.2'
implementation 'com.google.firebase:firebase-crash:16.2.1'
implementation …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在谷歌分析中跟踪我的广告系列,我已按照教程但它无法正常工作:(这是我的清单:
<service android:name="com.google.android.gms.analytics.CampaignTrackingService" />
<receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
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)
当我尝试测试这个并通过控制台发送此命令时它什么都不做:
$ shell am broadcast -a com.android.vending.INSTALL_REFERRER -n "MY_PACKAGE_NAME/com.google.android.gms.analytics.CampaignTrackingReceiver" --es referrer "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"
Run Code Online (Sandbox Code Playgroud)
我唯一看到的是,如果我发送两次它说:
Ignoring duplicate install campaign
Run Code Online (Sandbox Code Playgroud)
所以我猜应用程序会收到意图,除此之外,当我发送意图时应用程序会唤醒.
教程说该应用程序将记录(如果它是正确的)
GAv4 : Received installation campaign: source=testSource
Run Code Online (Sandbox Code Playgroud)
如果有任何问题:
Thread[GAThread,5,main]: No campaign data found.
Run Code Online (Sandbox Code Playgroud)
但就我而言,它什么也没说:(
有人可以帮帮我吗??? 谢谢!!
我需要跟踪我的Android应用程序的安装引荐.它在大多数设备中都能正常工作.但在Redmi设备中,广播没有被触发.我用Redmi Note 4测试了它
我已经通过ADB和Play商店测试了它.两者都不会在Redmi设备中触发广播
下面是我正在使用的代码
public class ReferrerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Broadcast", "RECEIVED!");
}
}
<receiver
android:name=".receiver.ReferrerReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
请建议是否有人遇到同样的问题,并得到一些解决方案?
android google-analytics android-studio install-referrer android-broadcastreceiver
将 Install Referrer Library 从 v1.0 更新到 v1.1 添加了以下权限:
WRITE_EXTERNAL_STORAGE
READ_EXTERNAL_STORAGE
READ_PHONE_STATE
这些权限不存在于 Install Referrer Library manifest.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.installreferrer" >
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
<application />
</manifest>
Run Code Online (Sandbox Code Playgroud)
来源:https : //mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1
为什么将这些权限添加到合并的清单中?
我更新了
implementation 'com.android.installreferrer:installreferrer:X'
Run Code Online (Sandbox Code Playgroud)
从1.1.2
到2.0
然后开始收到此错误:
Process: com.tomatedigital.lottogram, PID: 13424
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/aidl/BaseStub;
at com.android.installreferrer.api.InstallReferrerClientImpl.startConnection(InstallReferrerClientImpl.java:36)
at com.tomatedigital.lottogram.app.App.saveReferralInfo(App.java:221)
at com.tomatedigital.lottogram.app.App.onCreate(App.java:102)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1182)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Run Code Online (Sandbox Code Playgroud)
代码没有从上一个版本改变(工作正常)
final InstallReferrerClient mReferrerClient = InstallReferrerClient.newBuilder(this).build();
try {
mReferrerClient.startConnection(new InstallReferrerStateListener() {
public void onInstallReferrerSetupFinished(int responseCode) {
//do stuff
}
@Override
public void onInstallReferrerServiceDisconnected() {
}
});
} catch (Exception e) {
FirebaseCrashlytics.getInstance().recordException(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 android …
install-referrer ×10
android ×9
google-play ×2
app-store ×1
deprecated ×1
firebase ×1
ios ×1
itunes-store ×1
java ×1