通用链接不会重定向到应用商店

San*_*kar 4 server-side node.js ios9 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": [
                                        "*",
                                        "/"
                                ]
                    }
                ]
            }
     } 
Run Code Online (Sandbox Code Playgroud)

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

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);
});
Run Code Online (Sandbox Code Playgroud)

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-association文件.

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

我有什么想法,我错了吗?

Ale*_*uer 8

我相信你可能从根本上误解了Universal Links的工作方式.您应该对Universal Links进行一些额外的研究,以确保您的概念正确无误.这可能是一个很好的起点.

也就是说,一些可能会有所帮助的事情:

  1. 您不能只在等式的一半上实现通用链接.要做好任何事情,您需要服务器应用内组件.
  2. iOS非常关注它查找apple-app-site-association文件的位置.它不会检查端口8443.最简单的选择是使用标准HTTPS端口(443),但假设您的签名尝试有效,非HTTPS 也应该有效(端口80).
  3. URL https://domain.com/apple-app-site-association(删除了无关的端口引用)本身不是通用链接.这只是您需要托管的验证文件,以便在您的应用中实施通用链接时,iOS可以确认您拥有并控制相关域.
  4. Universal Links不会自动处理重定向到App Store.他们只是控制应用程序是打开(如果已安装)还是网站加载(如果未安装应用程序).未安装应用程序时加载的网站需要实现App Store重定向.

许多应用程序甚至没有尝试处理所有这些复杂性,特别是因为Universal Links仍然只是深层链接的部分解决方案(它们不能在Facebook,Twitter或任何使用的应用程序SFSafariViewController中工作),所以你可能想要查看外部链接路由服务.Branch.io(完全披露:我在分支团队)是一个很好的选择,并为您处理所有这些技术细节.