2017-07-19 100 views
1

我知道如何使用意向过滤器处理Android和iOS中的深层链接,但我希望为所有平台使用相同的URL。为所有平台创建深层链接网址

如何创建可以在没有任何库的情况下由Android,iOS和Web处理的URL?提前致谢。

回答

0

您可以通过使用Android上的应用链接和iOS上的通用链接来完成此操作,同时维护您的正常网站URL。

设置通用连接

一旦你有一个特定的域名注册你的网站,你可以配置你的iOS应用使用的应用程序,而不是通过通用链接浏览器中打开该网址。

为此,请将您的域添加到Xcode项目中的关联域。

接下来,你必须拥有一个正确配置您的服务器使用HTTPS的一个苹果应用程序站点关联文件://.com/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

设置应用链接

的应用链接基本上是照搬通用链接,使他们在一个非常类似的方式运作的Android的方式。要设置它们,您首先要将意图过滤器添加到清单中。

<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> 

接下来,你yoursite.com/.well-known/assetlinks.json您的Web服务器上托管的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这两个方法,你应该能够使用在所有三种情况下网,安卓和iOS的完全相同的链接。当然,这不包括deferred deep linking,并且在某些边缘情况下会失败,具体取决于用户链接的来源。由于这些原因,我建议使用第三方服务,如Branch(免责声明,我是长期用户后为分支机构工作)或Firebase。