通用链接不会redirect到app store

我正在尝试为双方configuration实现设置IOS9设备的通用链接。首先,我已经完成configuration在服务器端与步骤:

1.创build一个未签名的apple-app-site-association-unsigned.txt文件,文件内容为

{ "activitycontinuation": { "apps": [ "9JA89QQLNQ.com.apple.wwdc" ] }, "applinks": { "apps": [], "details": [ { "appID":"9JA89QQLNQ.com.apple.wwdc", "paths": [ "*", "/" ] } ] } } 

2.使用上面提到的文件签名

cat apple-app-site-association-unsigned.txt | openssl smime -sign -inkey demo.key -signer demo.crt -certfile demo.pem -noattr -nodetach -outform DER> apple-app-site-association

3,然后在签名文件即apple-app-site-association上创build

把这个文件移动到我的证书可用的根服务器上。

5.用node.js创build一个端点

 var https = require('https'); var fs=require('fs'); var express = require('express'); var privateKey = fs.readFileSync(home_path + 'src/Server/API/demo.key', 'utf8'); var certificate = fs.readFileSync(home_path + 'src/Server/API/demo.crt', 'utf8'); var credentials = {key: privateKey, cert: certificate}; var app = express(); var httpsServer = https.createServer(credentials, app); httpsServer.listen(8443); console.log('deeplink service listening on port 3501'); var aasa = fs.readFileSync('./apple-app-site-association'); app.get('/apple-app-site-association', function(req, res, next) { console.log("Request landed on 8443 port."); res.set('content-type', 'application/pkcs7-mime'); res.status(200).send(aasa); }); 

那么我的终点是: – https://domain.com:8443/apple-app-site-association

7.我的应用程序没有安装在设备,然后如果我复制通用链接,即https://domain.com:8443/apple-app-site-association在IOS 9 safari浏览器,它不是redirect到app store,而不是它正在显示apple-app-site-association文件来下载。

注意: – 我只做服务器端configuration,所以如果我的应用程序没有安装它应该redirect到应用程序商店。

任何想法在这个我错了吗?

我相信你可能从根本上误解了Universal Links的工作原理。 你应该对通用链接进行一些额外的研究,以确保你有正确的概念。 这可能是一个开始的好地方 。

这就是说,有几件事可能会有帮助:

  1. 只有一半的等式不能实现通用链接。 对于任何工作,你都需要服务器应用程序组件。
  2. iOS非常关注它在哪里寻找apple-app-site-association文件。 它不会检查端口8443.最简单的select是使用标准的HTTPS端口(443),但假设您的签名尝试有效,非HTTPS也应该工作(端口80)。
  3. URL https://domain.com/apple-app-site-association (无关的端口引用已删除)本身不是通用链接。 这只是您需要托pipe的validation文件,因此当您在应用中实现Universal Links时,iOS能够确认您拥有并控制相关域。
  4. 通用链接不会自动处理redirect到App Store。 他们只是控制应用程序是否打开(如果安装)或网站加载(如果应用程序没有安装)。 未安装应用程序时加载的网站需要实现App Storeredirect。

许多应用程序甚至不尝试处理所有这些复杂性,尤其是因为通用链接仍然只是深度链接的一部分解决scheme(它们在Facebook,Twitter或任何使用SFSafariViewController应用程序SFSafariViewController ),所以您可能希望查看外部链路路由服务。 Branch.io (全面披露:我在分公司团队)是一个很好的select,并为您处理所有这些技术细节。