我知道如何使用intent过滤器处理Android和iOS中的深层链接,但我想为所有平台使用相同的URL。
如何创建一个可以在没有任何库的情况下由Android,iOS和Web处理的URL?提前谢谢。
答案 0 :(得分:0)
您可以使用Android上的App Links和iOS上的Universal Links同时维护您的常规网站网址来实现此目的。
为您的网站注册特定域后,您可以将iOS应用配置为使用应用而不是浏览器通过Universal Links打开该URL。
接下来,您必须托管在您的服务器https://.com/apple-app-site-association上正确配置的 apple-app-site-association文件。看起来应该是这样的。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "<teamId>.<bundleId>.dev",
"paths": [ "*" ]
},
{
"appID": "<teamId>.<bundleId>",
"paths": [ "*" ]
}
]
},
"activitycontinuation": {
"apps": [
"<teamId>.<bundleId>.dev",
"<teamId>.<bundleId>"
]
}
}
完成此设置后,您可以使用此tool测试您的通用链接是否有效。
现在,您的应用应该能够处理您网站处理的所有相同网址。您可以看到完整的教程here。
App Links本质上是Android复制Universal Links的方式,因此它们以非常类似的方式运行。要设置它们,首先要在清单中添加意图过滤器。
<activity ...>
<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>
</activity>
接下来,您在Web服务器上托管assetlinks.json文件以及 yoursite.com/.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:83:...
}
}]
然后,您应该能够在应用内处理深层链接。要查看完整的App Links教程,请单击here。
对于Android和iOS使用这两种方法,您应该能够在Web,Android和iOS的所有三种情况下使用相同的完全链接。当然,这并不涵盖deferred deep linking,并且在某些边缘情况下会失败,具体取决于用户链接的来源。出于这些原因,我建议使用第三方服务,例如Branch(免责声明,我是长期用户后为分支机构工作)或Firebase。