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/ из другого приложения, и оно должно открыть ваше приложение

Другие вопросы по тегам