通用链接未重定向到应用商店

时间:2016-10-25 05:05:45

标签: node.js ios9 server-side ios-universal-links

我正在尝试使用两种配置为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-要下载的协会文件。

注意: - 我只进行了服务器端配置,因此,如果我的应用程序未安装,则应重定向到应用商店。

对此我有什么想法?

1 个答案:

答案 0 :(得分:8)

我相信您可能从根本上误解了Universal Links的工作方式。您应该对Universal Links进行一些额外的研究,以确保您的概念正确无误。 This might be a good place to start

那就是说,有些事可能会有所帮助:

  1. 您无法仅在等式的一半上实施通用链接。要做好任何工作,您需要服务器应用内组件。
  2. iOS非常关注查找apple-app-site-association文件的位置。它不会检查端口8443.最简单的选择是使用标准HTTPS端口(443),但假设您的签名尝试有效,则非HTTPS 也应该有效(端口80)。
  3. 网址https://domain.com/apple-app-site-association(已移除的外部端口引用)本身不是通用链接。这只是您需要托管的验证文件,以便在您的应用中实施通用链接时,iOS可以确认您拥有并控制相关域。
  4. Universal Links不会自动处理重定向到App Store。他们只是控制应用程序是打开(如果已安装)还是网站加载(如果未安装应用程序)。未安装应用程序时加载的网站需要实现App Store重定向。
  5. 许多应用程序甚至都没有尝试处理所有这些复杂性,特别是因为Universal Links仍然只是深层链接的部分解决方案(它们无法在Facebook,Twitter或使用SFSafariViewController的任何应用程序中运行,等等),所以你可能想要查看外部链接路由服务。 Branch.io(完全披露:我在分支机构团队中)是一个很好的选择,并为您处理所有这些技术细节。