将数据传递到服务器时进行深度链接
Deep linking while passing data to the server
这个问题有两个部分,第一部分很简单,网上有解决方案,但第二部分令人费解,解决方案描述模糊但没有任何意义。
一个 link 将通过短信分享,如果未安装应用程序或在相关部分打开应用程序,该短信将带到商店。
虽然传递的数据也以某种方式报告给服务器,但 android OS 以某种方式向服务器报告,可能作为分析的一部分,不知何故建立的连接可以帮助我识别安装该应用程序的特定用户是谁,并根据他的身份自定义这个深度 linked 页面的内容。
我可以尝试如何解决第二个问题?
由于问题集中在#2。让我解释一下。
对于尚未安装您的应用的用户,有一个由 Google Playstore 直接管理的推荐计划。
您需要在您的依赖项部分实施他们的引用 gradle 包。
dependencies {
implementation 'com.android.installreferrer:installreferrer:1.1'
}
请在此处找到有关要在您的 Android 应用中添加哪些代码的详细信息。 https://developer.android.com/google/play/installreferrer/library
请添加以下代码块以连接到启动器 activity 中的 Google Playstore。
InstallReferrerClient referrerClient;
referrerClient = InstallReferrerClient.newBuilder(this).build();
referrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerResponse.OK:
// Connection established.
ReferrerDetails response = referrerClient.getInstallReferrer();
String referrerUrl = response.getInstallReferrer();
long referrerClickTime = response.getReferrerClickTimestampSeconds();
long appInstallTime = response.getInstallBeginTimestampSeconds();
boolean instantExperienceLaunched = response.getGooglePlayInstantParam();
break;
case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app.
break;
case InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection couldn't be established.
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
您将能够从 API 中检索以下信息。
ReferrerDetails response = referrerClient.getInstallReferrer();
String referrerUrl = response.getInstallReferrer();
long referrerClickTime = response.getReferrerClickTimestampSeconds();
long appInstallTime = response.getInstallBeginTimestampSeconds();
boolean instantExperienceLaunched = response.getGooglePlayInstantParam();
此 API 仅适用于 Googleplay 应用程序版本为 8.3.73 或更高版本的设备。
现在,如果该应用程序已经安装并且您打开 link,基本的深度 linking(在您的 Manifest 文件中注册了接收器)将完成这项工作。
这应该为您提供了一个起点。
这个问题有两个部分,第一部分很简单,网上有解决方案,但第二部分令人费解,解决方案描述模糊但没有任何意义。
一个 link 将通过短信分享,如果未安装应用程序或在相关部分打开应用程序,该短信将带到商店。
虽然传递的数据也以某种方式报告给服务器,但 android OS 以某种方式向服务器报告,可能作为分析的一部分,不知何故建立的连接可以帮助我识别安装该应用程序的特定用户是谁,并根据他的身份自定义这个深度 linked 页面的内容。
我可以尝试如何解决第二个问题?
由于问题集中在#2。让我解释一下。
对于尚未安装您的应用的用户,有一个由 Google Playstore 直接管理的推荐计划。
您需要在您的依赖项部分实施他们的引用 gradle 包。
dependencies {
implementation 'com.android.installreferrer:installreferrer:1.1'
}
请在此处找到有关要在您的 Android 应用中添加哪些代码的详细信息。 https://developer.android.com/google/play/installreferrer/library
请添加以下代码块以连接到启动器 activity 中的 Google Playstore。
InstallReferrerClient referrerClient;
referrerClient = InstallReferrerClient.newBuilder(this).build();
referrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerResponse.OK:
// Connection established.
ReferrerDetails response = referrerClient.getInstallReferrer();
String referrerUrl = response.getInstallReferrer();
long referrerClickTime = response.getReferrerClickTimestampSeconds();
long appInstallTime = response.getInstallBeginTimestampSeconds();
boolean instantExperienceLaunched = response.getGooglePlayInstantParam();
break;
case InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// API not available on the current Play Store app.
break;
case InstallReferrerResponse.SERVICE_UNAVAILABLE:
// Connection couldn't be established.
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
}
});
您将能够从 API 中检索以下信息。
ReferrerDetails response = referrerClient.getInstallReferrer();
String referrerUrl = response.getInstallReferrer();
long referrerClickTime = response.getReferrerClickTimestampSeconds();
long appInstallTime = response.getInstallBeginTimestampSeconds();
boolean instantExperienceLaunched = response.getGooglePlayInstantParam();
此 API 仅适用于 Googleplay 应用程序版本为 8.3.73 或更高版本的设备。
现在,如果该应用程序已经安装并且您打开 link,基本的深度 linking(在您的 Manifest 文件中注册了接收器)将完成这项工作。
这应该为您提供了一个起点。