iOS универсальные ссылки с подстановочными знаками не работают

В приложении для iOS, над которым я работаю, я установил Universal Links. Приложение содержит несколько доменов. Некоторые домены, которые я настроил с подстановочными знаками. Эти домены, похоже, не работают. Например, я хочу ссылку на https://news.mydomain.com/, Если я добавлю следующее в список связанных доменов:

applinks:*.mydomain.com -> не работает

applinks:news.mydomain.com -> отлично работает

Поэтому я считаю, что все настроил правильно, файл apple-app-site-association настроен нормально. Я даже вижу, что в обоих случаях (с использованием Charles Proxy) файл apple-app-site-association получен нормально.

В случае подстановочного знака ссылка открывается только в Safari.

Когда я настраиваю домен без подстановочного знака, приложение открывается.

Я что-то здесь упускаю? Я использую iOS 9.3.2 на устройстве и использую Xcode 7.3.1, которые на сегодняшний день являются самыми последними версиями.

4 ответа

Я добавил свои выводы в эту ветку: https://forums.developer.apple.com/thread/47315

Короче говоря, даже в iOS 10 кажется, что для подстановочных знаков требуется, чтобы apple-app-site-association файл будет обслуживаться корнем подстановочного знака.

Например, если вы хотите использовать *.domain.comтогда apple-app-site-association должен быть размещен на обоих, например, app1.domain.com а также domain.comиначе это не будет работать с простым указанием applinks:*.domain.com в Xcode.

Это прискорбно, если ваш основной сайт размещен на www.domain.comи что у вас есть перенаправление 301 на domain.com (который перенаправляет вас на www.domain.com), потому что универсальные ссылки не разрешают перенаправления.

Обходной путь, который я нашел, заключался в создании основного субдомена для вашего приложения и использовании субдоменов для подстановочного знака. Например

  • app.domain.com (должен служить apple-app-site-association файл)
  • server1.app.domain.com (должен служить apple-app-site-association)
  • server2.app.domain.com (...)

Таким образом, в Xcode вы можете указать только applinks:*.app.domain.com и Universal Links будут работать без необходимости указывать server1.app.domain.com, server2.app.domain.comи так далее... в Xcode.

Обратите внимание, однако, что вы также должны явно указать applinks:app.domain.com если вы планируете использовать этот сервер вместе с вашим приложением.

Надеюсь, это поможет.

Кажется, что добавление подстановочного знака в доменной части applinks был введен только в iOS 9.3 Beta 2, В 9.3 Beta 2 заметки о выпуске:

Теперь вы можете использовать универсальные ссылки с произвольными поддоменами вместо того, чтобы указывать все поддомены приложения как полностью определенные доменные имена. Записи имеют форму:

: [: номер порта], в котором "webcredentials", "actioncontinuation" или "applinks".

Часть записи теперь может опционально иметь префикс "*." Для обозначения поддомена подстановочного знака. Например:

applinks: * example.com.

Вы говорите, что вы бежите на iOS 9.3.2, Но это твой deployment target > = iOS 9.3? Если нет, попробуйте изменить его. Я думаю, что это решит вашу проблему.

Здесь вы можете найти копию этой заметки о выпуске (извините, у меня нет другого публичного источника)

Редактировать:

Даже если Apple Doc сообщает, что вы можете использовать подстановочные знаки в доменах, у них, похоже, есть проблема по этому поводу:

Чтобы сопоставить все дочерние домены связанного домена, вы можете указать подстановочный знак с помощью префикса . до начала конкретного домена (период обязателен). Соответствие доменов основано на самой длинной подстроке в записях приложения. Например, если вы укажете записи applinks:.mywebsite.com и applinks:*. Users.mywebsite.com, сопоставление для домена emily.users.mywebsite.com будет выполнено для более длинной записи *.users.mywebsite.com. Обратите внимание, что запись для *.mywebsite.com не соответствует mywebsite.com из-за периода после звездочки. Чтобы включить сопоставление для *.mywebsite.com и mywebsite.com, необходимо предоставить отдельную запись для ссылок на приложения для каждого из них.

Я попробовал это в сентябре 2016 года с iOS 9.3.5 и iOS 10 beta. Ситуация остается неизменной: универсальные ссылки по-прежнему не работают, если ссылки на приложения содержат только подстановочные домены, хотя в документации предполагается, что это должно работать.

Я думаю, что это ошибка Apple в документации. Я получил ту же ошибку на 9.3.1. И 9.3.2 работает отлично. Очень интересная ссылка, о проблемах подписания, см. Комментарий Лоуренса Фана

Apple должна сказать, что *.domain.com работает для>= 9.3.2 по этой ссылке Поддержка универсальных ссылок

Apple внесла изменения в файл AASA для поддержки динамической ссылки, пожалуйста, измените и добавьте также в Assciate domain: webcredentials:dev.rlogical.com

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
             "components": [
               {
                  "#": "no_universal_links",
                  "exclude": true,
                  "comment": "Matches any URL whose fragment equals no_universal_links and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/buy/*",
                  "comment": "Matches any URL whose path starts with /buy/"
               },
               {
                  "/": "/help/website/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /help/website/ and instructs the system not to open it as a universal link"
               },
               {
                  "/": "/help/*",
                  "?": { "articleNumber": "????" },
                  "comment": "Matches any URL whose path starts with /help/ and which has a query item with name 'articleNumber' and a value of exactly 4 characters"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   },
    "appclips": {
        "apps": ["ABCED12345.com.example.MyApp.Clip"]
    }
}
Другие вопросы по тегам