iOS 10.3 Универсальные ссылки не работают
Я рассмотрел почти все вопросы Universal Links на SO, которые я могу найти, но мне еще не повезло. Для записи, все это, кажется, проходит валидатор Branch.
Я использую iOS 10.3 и подаю свой файл aasa за https, поэтому теоретически мне не нужно его подписывать.
Вот где я стою:
Когда приложение установлено, следя за журналами 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, route и контроллер Rails, который его обслуживает:
apple-app-site-association (живет в /public
как 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) В My AppDelegate я реализовал приложение:continueUserActivity: восстановлениеHandler:
функция, и она настроена на то же самое, что и при вызове didFinishLaunchingWithOptions (плюс выводит тонну ====
для пинков)
И ВСЕ ЕЩЕ...
Ничего такого. После развертывания на стадии загрузки я загружаю приложение на свой телефон, перехожу через нашу функцию общего доступа, чтобы создать ссылку, сохранить ее в заметках и щелкнуть ее только для ее открытия в Safari. Долгое нажатие ничего не делает, и нет никаких других признаков того, что Safari открывается вместо приложения. Журналы устройств, кажется, не указывают на какие-либо проблемы, но, возможно, я не ищу нужную вещь?
Halp.
3 ответа
В конечном счете, то, что заставило это работать, было добавлением application-identifier
право со значением, аналогичным appID из файла AASA; Я использовал подстановочный знак $() для суффикса, поэтому теоретически он будет работать в средах развертывания. Не знаю, откуда это должно исходить, или какие предположения были сделаны со стороны документации Apple, но... приложение открывается по ссылкам, сейчас!
Кажется, что ваша проблема в реализации вашего приложения, а не на вашем сервере.
Вам необходимо реализовать application:continueUserActivity:restorationHandler:
функция в вашем приложении делегата.
Вы можете прочитать больше об этом здесь, который, я думаю, вы уже посетили, но обратите особое внимание на раздел "Подготовка вашего приложения к обработке универсальных ссылок", а именно:
После того, как вы укажете связанные домены, примите методы UIApplicationDelegate для Handoff (в частности application:continueUserActivity:restorationHandler:), чтобы ваше приложение могло получать ссылку и обрабатывать ее соответствующим образом.
Когда iOS запускает ваше приложение после того, как пользователь нажимает универсальную ссылку, вы получаете объект NSUserActivity со значением ActivityType NSUserActivityTypeBrowsingWeb. Свойство webpageURL объекта действия содержит URL-адрес, к которому обращается пользователь. Свойство URL веб-страницы всегда содержит URL-адрес HTTP или HTTPS, и вы можете использовать API-интерфейсы NSURLComponents для управления компонентами URL-адреса.
Я думаю, что следующее может помочь вам.
1) applinks: trueey-staging.herokuapp.com в связанных доменах
2) Попробуйте изменить свой json в https://trueey-staging.herokuapp.com/apple-app-site-association на
{"applinks":{"apps":[],"details":[{"appID":"SSHENFP95X.com.markmywordsllc.trueey-staging","paths":["*"]}]}}
3) Apple потребуется время, чтобы зарегистрировать новые универсальные ссылки.
После этих шагов попробуйте открыть https://trueey-staging.herokuapp.com/ из другого приложения, и оно должно открыть ваше приложение