iOS 10.3通用链接不起作用

时间:2017-07-26 20:46:57

标签: ios ios10 ios-universal-links aasa

我已经经历过几乎所有关于我的Universal Links问题,我可以找到并且还没有运气。为了记录,这一切似乎都通过了Branch's validator

我正在运行iOS 10.3并在https后面提供我的aasa文件,因此理论上我不需要签名。

这就是我的立场:

安装应用程序后,为我的登台服务器拖尾Heroku的日志会给我这个:

7-07-27T17:24:59.818724+00:00 heroku[router]: at=info method=GET path="/.well-known/apple-app-site-association" host=trueey-staging.herokuapp.com request_id=54b817e2-1d89-4c7a-9ed8-f52bdb3ad46e fwd="24.23.197.78" dyno=web.1 connect=1ms service=6ms status=200 bytes=618 protocol=https
2017-07-27T17:24:59.812926+00:00 app[web.1]: Started GET "/.well-known/apple-app-site-association" for 24.23.197.78 at 2017-07-27 17:24:59 +0000
2017-07-27T17:24:59.814845+00:00 app[web.1]: Processing by Web::AppSiteController#show as */*
2017-07-27T17:24:59.815538+00:00 app[web.1]: Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms)

1)我的权利:

applinks:trueey-staging.herokuapp.com
applinks:https://trueey-staging.herokuapp.com

这些是一回事吗?可能,但让我们双倍下降

2)我的apple-app-site-association文件,路由和Rails控制器为其提供服务:

apple-app-site-association(位于/public apple-app-site):

{
    "applinks": {
        "apps": [ ],
        "details": [
            {
                "appID": "[Prefix].[AppId]",    
                "paths": [ "*", "/" ]
            }
        ]
    }   
}

路线(S):

  get "/apple-app-site-association", to: "web/app_site#show"
  get "/.well-known/apple-app-site-association", to: "web/app_site#show"

控制器:

module Web

class AppSiteController < ApplicationController
    def show
        data = File.read("#{Rails.root}/public/apple-app-site")
        render json: data
    end
end

end

3)在我的AppDelegate中,我实现了应用程序:continueUserActivity:recover Handler:函数,它的设置与调用didFinishLaunchingWithOptions完全相同(加上打印出大量的{{1} (踢))

AND YET ......

无。部署到分段后,我在手机上加载应用程序,浏览我们的共享功能以生成链接,将其保存到备注中,然后单击它以使其在Safari中打开。长按没有做任何事情,并且没有其他迹象表明Safari正在打开而不是应用程序。设备日志似乎没有表明任何问题,但也许我不是在寻找正确的东西?

HALP。

3 个答案:

答案 0 :(得分:1)

您的问题似乎在您的应用实施中,而不是您的服务器。

您需要在应用代理上实施application:continueUserActivity:restorationHandler:功能。

你可以阅读更多关于here的信息,我猜你已经访问了它,但要密切注意“准备你的应用来处理通用链接”部分,特别是:

  

指定关联的域后,请采用   用于Handoff的UIApplicationDelegate方法(具体来说   应用程序:continueUserActivity:restorationHandler :)以便您的应用程序   可以收到一个链接并妥善处理。

     

当iOS用户点击通用链接后启动您的应用时,您就可以了   接收活动类型值为的NSUserActivity对象   NSUserActivityTypeBrowsingWeb。活动对象的网页URL   property包含用户正在访问的URL。网页网址   属性始终包含HTTP或HTTPS URL,您可以使用   NSURLComponents API用于操作URL的组件。

答案 1 :(得分:0)

我认为以下内容可以帮助您。

1)applinks:关联域中的trueey-staging.herokuapp.com

2)尝试将https://trueey-staging.herokuapp.com/apple-app-site-association中的json更改为

{"applinks":{"apps":[],"details":[{"appID":"SSHENFP95X.com.markmywordsllc.trueey-staging","paths":["*"]}]}}

3)Apple花时间注册新的通用链接。

完成这些步骤后,尝试从其他应用中打开https://trueey-staging.herokuapp.com,它应该会打开您的应用

答案 2 :(得分:0)

最终使其工作的是添加application-identifier权利,其值与AASA文件中的appID类似;我使用通配符$()作为后缀,因此从理论上讲它可以跨部署环境工作。不知道应该从哪里来,或者Apple的文档中有什么假设,但是...应用程序现在从链接打开!