Android URI 方案与应用链接
Android URI schemes vs App Links
Android App Links 仅适用于 Android 6.0,与 Android 4.2 的深度链接不同,但行为和编码有何不同?
我阅读了文档,但没有看出区别。
深层链接:https://developer.android.com/training/app-indexing/deep-linking.html
应用链接:https://developer.android.com/training/app-links/index.html
URI 方案深层链接 (Android 4.2)
标准 URI 方案深度 linking (Android 4.2) 允许开发人员为 URI 方案注册应用程序,即 pinterest:// 并且当用户单击此 link 和安装了该应用程序,该应用程序将打开。如果未安装该应用程序,则会产生 'Page Not Found' 错误。
它的工作原理是注册一个应用程序以通过清单中的 Intent 过滤器响应给定的 URI。
<intent-filter>
<data android:scheme="your_uri_scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
然后您将通过从给定的 activity 中获取意图字符串来处理 link。
Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
String uri = this.getIntent().getDataString();
Log.i("MyApp", "Deep link clicked " + uri);
}
注意:如果用户来自 Chrome,您将需要包括单独的处理。 Chrome 如果应用程序未安装,将不会抛出错误,它会将您带到 Play 商店或(可选)为您提供后备 URL
应用程序链接 (Android 6.0)
引入应用程序链接是为了复制 iOS 通用链接的功能。应用链接是一种将网站 link 转换为应用链接的简单方法。因此,如果点击一个普通的HTTP/HTTPS link 并安装相应的应用程序,它会立即打开。如果未安装该应用程序,则会提供备用网站 link。
要求
- 您必须有一个正常运行的网站
- 用户必须使用 Android 6.0
配置
对于应用程序链接,您的清单看起来会略有不同。
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="yoursite.com" />
<data android:scheme="https" android:host="yoursite.com" />
</intent-filter>
然后您必须注册您的网站才能处理应用程序链接。您需要创建一个 assetlinks.json 文件并将其托管在您的网站上 yoursite.com/.well-known/assetlinks.json
/.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "io.branch.branchster",
"sha256_cert_fingerprints":
["14:6D:E9:..."]
}
}]
延迟深度链接
不幸的是,这两种方法都不支持延迟深度 linking,即在尚未安装应用程序时深入 link 到应用程序内部内容的能力。这是新用户入职的重要用户体验,因此我建议使用像 Branch(我在 Branch 工作的完全披露)或 Firebase 这样的第三方。他们将处理所有功能和边缘情况,并且包括其他功能,如深度视图和应用程序横幅,如果您对此感兴趣的话。
Android App Links 仅适用于 Android 6.0,与 Android 4.2 的深度链接不同,但行为和编码有何不同?
我阅读了文档,但没有看出区别。
深层链接:https://developer.android.com/training/app-indexing/deep-linking.html
应用链接:https://developer.android.com/training/app-links/index.html
URI 方案深层链接 (Android 4.2)
标准 URI 方案深度 linking (Android 4.2) 允许开发人员为 URI 方案注册应用程序,即 pinterest:// 并且当用户单击此 link 和安装了该应用程序,该应用程序将打开。如果未安装该应用程序,则会产生 'Page Not Found' 错误。
它的工作原理是注册一个应用程序以通过清单中的 Intent 过滤器响应给定的 URI。
<intent-filter>
<data android:scheme="your_uri_scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
然后您将通过从给定的 activity 中获取意图字符串来处理 link。
Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
String uri = this.getIntent().getDataString();
Log.i("MyApp", "Deep link clicked " + uri);
}
注意:如果用户来自 Chrome,您将需要包括单独的处理。 Chrome 如果应用程序未安装,将不会抛出错误,它会将您带到 Play 商店或(可选)为您提供后备 URL
应用程序链接 (Android 6.0)
引入应用程序链接是为了复制 iOS 通用链接的功能。应用链接是一种将网站 link 转换为应用链接的简单方法。因此,如果点击一个普通的HTTP/HTTPS link 并安装相应的应用程序,它会立即打开。如果未安装该应用程序,则会提供备用网站 link。
要求
- 您必须有一个正常运行的网站
- 用户必须使用 Android 6.0
配置
对于应用程序链接,您的清单看起来会略有不同。
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" android:host="yoursite.com" />
<data android:scheme="https" android:host="yoursite.com" />
</intent-filter>
然后您必须注册您的网站才能处理应用程序链接。您需要创建一个 assetlinks.json 文件并将其托管在您的网站上 yoursite.com/.well-known/assetlinks.json
/.well-known/assetlinks.json
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "io.branch.branchster",
"sha256_cert_fingerprints":
["14:6D:E9:..."]
}
}]
延迟深度链接
不幸的是,这两种方法都不支持延迟深度 linking,即在尚未安装应用程序时深入 link 到应用程序内部内容的能力。这是新用户入职的重要用户体验,因此我建议使用像 Branch(我在 Branch 工作的完全披露)或 Firebase 这样的第三方。他们将处理所有功能和边缘情况,并且包括其他功能,如深度视图和应用程序横幅,如果您对此感兴趣的话。