10

我已经完成了几乎所有关于 SO 的 Universal Links 问题,我可以找到但还没有运气。作为记录,这一切似乎都通过了Branch 的验证器

我正在运行 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(位于/publicas 中apple-app-site):

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

路线:

  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 中,我实现了 application:continueUserActivity:restorationHandler:函数,它被设置为与调用 didFinishLaunchingWithOptions 时完全相同(加上打印出大量的====踢球)

但是...

没有什么。部署到登台后,我在手机上加载应用程序,通过我们的共享功能生成一个链接,将其保存到笔记中,然后单击它仅在 Safari 中打开它。长按不会做任何事情,并且没有其他迹象表明 Safari 正在打开而不是应用程序。设备日志似乎没有表明任何问题,但也许我没有寻找正确的东西?

哈尔普。

4

3 回答 3

1

看来您的问题在于您的应用程序实现而不是您的服务器。

您需要application:continueUserActivity:restorationHandler:在您的应用程序委托上实现功能。

您可以在这里阅读更多相关信息,我猜您已经访问过,但请密切注意“准备您的应用程序以处理通用链接”部分,特别是:

指定关联域后,为 Handoff 采用 UIApplicationDelegate 方法(特别是 application:continueUserActivity:restorationHandler:),以便您的应用可以接收链接并适当地处理它。

当 iOS 在用户点击通用链接后启动您的应用程序时,您会收到一个 NSUserActivity 对象,其 activityType 值为 NSUserActivityTypeBrowsingWeb。活动对象的webpageURL 属性包含用户正在访问的URL。网页 URL 属性始终包含 HTTP 或 HTTPS URL,您可以使用 NSURLComponents API 来操作 URL 的组件。

于 2017-08-01T12:09:55.483 回答
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,它应该会打开您的应用程序

于 2017-07-26T21:11:59.640 回答
0

最终使它起作用的是添加一个application-identifier权利,其值类似于 AASA 文件中的 appID;我使用通配符 $() 作为后缀,所以理论上它可以跨部署环境工作。不知道这应该来自哪里,或者 Apple 文档的部分做出了哪些假设,但是......现在,该应用程序从链接打开!

于 2017-08-04T23:40:53.440 回答