我正在尝试使用两种配置为IOS 9设备实现设置Universal Link。首先,我在服务器端完成了配置步骤:
1.创建一个未签名的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> 苹果应用内站点关联
3.然后在签名文件上创建,即 apple-app-site-association
4.将此文件移动到我的证书可用的根服务器中。
5.使用node.js
创建一个端点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);
});
6.然后我的终点是: - https://domain.com:8443/apple-app-site-association
7.我的应用程序未安装在设备中然后如果我在Ios 9 safari浏览器中复制了通用链接即https://domain.com:8443/apple-app-site-association,它不会重定向到App Store,而不是显示apple-app-site-要下载的协会文件。
注意: - 我只进行了服务器端配置,因此,如果我的应用程序未安装,则应重定向到应用商店。
对此我有什么想法?
答案 0 :(得分:8)
我相信您可能从根本上误解了Universal Links的工作方式。您应该对Universal Links进行一些额外的研究,以确保您的概念正确无误。 This might be a good place to start
那就是说,有些事可能会有所帮助:
apple-app-site-association
文件的位置。它不会检查端口8443.最简单的选择是使用标准HTTPS端口(443),但假设您的签名尝试有效,则非HTTPS 也应该有效(端口80)。https://domain.com/apple-app-site-association
(已移除的外部端口引用)本身不是通用链接。这只是您需要托管的验证文件,以便在您的应用中实施通用链接时,iOS可以确认您拥有并控制相关域。许多应用程序甚至都没有尝试处理所有这些复杂性,特别是因为Universal Links仍然只是深层链接的部分解决方案(它们无法在Facebook,Twitter或使用SFSafariViewController
的任何应用程序中运行,等等),所以你可能想要查看外部链接路由服务。 Branch.io(完全披露:我在分支机构团队中)是一个很好的选择,并为您处理所有这些技术细节。