Універсальні посилання iOS не відкриваються в додатку


109

Тож я точно дотримувався цього підручника і використовую ті самі значення, що й надані: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Файл Apple Association також готовий у каталозі посилань:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Здається, все налаштовано з цього боку.

Я додав права, оновив профіль забезпечення та все налаштовано.

Коли я запускаю додаток на своєму пристрої та відкриваю посилання http://WEB_PAGE:PORT_NUMBER, Safari завжди відкриває це.

У мене навіть є точки перерви в наступному методі:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

Але пшик.

Хтось вдосконалив це? Щось мені не вистачає?


2
перевірка тут , щоб переконатися , що ви не пропустите ні одного кроку stackoverflow.com/questions/35609667 / ...
Vineet Чудхарі

Відповіді:


189

Існує кілька можливих проблем.

  1. Спробуйте вставити свій домен у валідатор цього посилання та переконайтесь, що немає проблем: https://limitless-sierra-4673.herokuapp.com/ (кредит на ShortStuffSushi - див. Репо )

  2. iOS записує повідомлення про помилку в системних журналах, якщо у вас не встановлено TLS належним чином у домені, визначеному вашими правами. Він похований у журналах ОС, а не в журналах програм. Повідомлення про помилку виглядатиме так Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. Звідси вийшло повідомлення про помилку , швидкі (неповні) інструкції щодо використання CloudFlare для TLS тут .

  3. В моєму особистому тестуванні натискання / введення посилання в Safari ніколи не відкривало додаток безпосередньо. Клацнувши з інших додатків (IMessage, електронна пошта, розслаблені і т.д.) вже працював. Інші повідомили, що натискання посилань в результатах пошуку Google відкрило додаток безпосередньо.

  4. Зауважте, що якщо Universal Link вдасться відкрити додаток, а потім ви перейдете до Safari (натиснувши свій сайт у верхньому правому куті панелі навігації в додатку), то iOS припинить відкривати додаток, коли ви відвідуєте цю URL-адресу . Потім у Safari ви можете відкрити банер у верхній частині сторінки з написом "Відкрити". Я витрачав на це багато часу. Зауважте, що натискання на сайт => відключення UL здається специфічним для шляху , заснованого на шляхах, вказаних у файлі apple-app-site-assocation. Отже, якщо у вас є окремі маршрути, yoursite.com/a/*і yoursite.com/b/*якщо ви натискаєте yoursite.com/a/*і він відкриває ваш додаток безпосередньо, у вас є можливість у верхньому правому куті програми перейти до yoursite.com/a/*. Якщо ви це зробите, наступні візити доyoursite.com/a/*відкриється в браузері, а не в програмі. Однак yoursite.com/b/*це не повинно впливати і все-таки відкривати додаток безпосередньо.

Повідомте мене, якщо ви виявите, у чому проблема. Мені особисто дуже цікаво, як працюють Universal Links та які існують крайові випадки. Удачі.


1
Однакові речі. Так дивно. Іноді програма відкриває безпосередньо, а колись відкриває веб-перегляд. Я б хотів, щоб вони зрозуміли документацію. Функціонування цієї функції хаотичне
Legolas

4
Відносно 1) більше не потрібно підписувати файл асоціації Apple-app-site, якщо ви надсилаєте його через https.
Джеремі Хікс

11
Також може допомогти перезапуск пристрою iOS. Я потрійно перевірив усі налаштування та конфігурацію, і я був абсолютно впевнений, що все правильно, але все одно не буде працювати. Потім я спробував з іншим пристроєм, і це спрацювало чудово. Потім я видалив додаток з оригінального пристрою, перезапустив пристрій і перевстановив додаток, потім він просто працював ...
mathz

4
Як повернутися в додаток замість сафарі, якщо хтось випадково натиснув посилання на веб-сайт у правому куті програми?
iEngineer

3
Мені ніде не було відкрито банер додатків. Після тривалого пошуку ось рішення: Введіть будь-яке посилання для вашого сайту в додатку Notes (що є універсальним посиланням). Тепер натисніть Готово. Як тільки це стає посиланням, довго натискайте на нього та виберіть "Відкрити в AppNAME-ТУТ"!
kishorer747

64

Існує маса способів, як це може піти не так. Два моменти спричинили мені неприємності:

  • У Xcode, коли ви додаєте права на асоційовані домени, кожен запис повинен починатися з applinks:вашого імені, а потім імені. Напр applinks:www.apple.com.

  • Хоча Xcode створив для мене файл прав, він не включався в мою збірку: мені довелося натиснути це поле вручну.

І так, після цього не потрібно було підписувати apple-app-site-associationфайл: це просто звичайний текст, і він працює, доки він подається через HTTPS. (Ви все одно будете потребувати підписання, якщо ви підтримуєте iOS 8.)


4
Я також повинен був повністю видалити додаток із тестового пристрою, а потім створити та запустити його ще до того, як він нарешті запрацював.
Філ Ендрюс

14
Ви заощаджуєте мій день, це була моя проблема, хоча XCode створив для мене файл прав, він не включався в мою збірку: мені довелося натиснути це поле вручну.
чам

12
Включення файлу прав у збірку вирішило проблему і для мене. Варто зазначити, що в Xcode 8 цільові прапорці членства у File Inspector фактично вимкнені. Мені довелося перейти до налаштувань збірки та додати файл прав до фази копіювання ресурсів.
Чарльз А.

5
@cham: чи можете ви, хлопці, докладно розповісти про те, "хоча XCode створив для мене файл прав, він не включається в мою збірку: мені довелося натиснути це поле вручну".
Thang Pham

6
@AwaisFayyaz Перейдіть до етапів збирання> Скопіюйте ресурси ресурсу. Клацніть знак плюс, а потім додайте файл прав.
s.zainulabideen

36

Очевидно, в документації для створення файлу асоціації для Universal Links є помилка .

Де написано:

Значення ключа appID - ідентифікатор команди програми та ідентифікатор пакета

це повинно сказати

Значення ключа appID - це префікс програми та ідентифікатор пакета

Для більшості додатків здається, що ідентифікатор команди та префікси додатків однакові, але якщо ваш додаток уже багато років у магазині, ці значення можуть бути різними.

Щоб знайти це значення, відкрийте Центр членів на https://developer.apple.com і подивіться "Сертифікати, ідентифікатори та профілі", натисніть "Ідентифікатори", потім "Ідентифікатори додатків" у таблиці під розділом "Ідентифікатори". Знайдіть свою програму та використовуйте там значення префікса та ідентифікатор групи, щоб створити свій додаток для файлу асоціації.


2
+1, Це мені дуже допомогло. Витратьте половину дня, з'ясовуючи, чому це не працює, і мені здалося, що це так
Іво Беккерс

ти врятував мій день, у справі мій додаток було давно, а префікс додатка відрізняється від ідентифікатора команди.
Ti3t

це єдине, що працює для мене. спасибі!
dhin

Це було рішенням для мене. Чудова порада.
Вінсент

33

Щоб налагодити цю проблему, під час встановлення програми знайдіть "swcd" на виході консолі вашого пристрою, щоб дізнатися, чи зареєстровано універсальне посилання.

  1. Використовуйте фактичний пристрій, а не тренажер.
  2. Видаліть додаток зі свого пристрою.
  3. Підключіть пристрій до комп’ютера та перегляньте вихід консолі пристрою у xcode. (вікно -> пристрої -> [ваш пристрій] -> відкрита консоль). Тримайте це вікно відкритим.
  4. Встановіть додаток і дайте йому запуститися.
  5. Відфільтруйте вихід консолі до "swcd". Якщо це вдало, ви побачите щось на зразок наступного скріншота. Якщо це не вдасться, ви побачите щось інше. Якщо ви нічого не бачите, ви зіпсували щось принципове, як-от додавання прав на асоційовані домени.

Applink додано успішно


2
Відмінна порада! Я додав https: // до додатків: права, а також вказував повний шлях, який хотів прослухати, в якому були обидві помилки. Я вказував example.com/path *, де я повинен лише вказувати мій domain.com та файл AASA на example.com, а потім визначає шлях до ідентифікатора пакета мого додатка
Numan Tariq

3
Чи можу я передати вам грошовий бонус ?? Я провів 2 дні, переглядаючи кожен крок цієї вигадливої ​​установки універсальної посилання, нічого не допомагало, поки я не спробував ваш підхід. Мені було дуже прикро розміщувати мій файл асоціації у кореневій папці firebase для мого домену, і виявилося, що Apple запитує спочатку .well-відомий / підкаталог, а firebase, здається, відповідає на нього власним (!) Правильним файлом асоціації, який не пов’язано додаток. Боже, як я повинен це дізнатися, Apple?
nalexn

Ах, чудовий натяк! Я не знав про цю консоль пристрою, просто дивився на вихід консолі Xcode. Моя біда полягала в тому, що 2 з 3 доменних посилань DID працюють, але не останній. І там же в консолі я побачив, що для останнього домену я неправильно написав його з "appllinks: <domain>" (2 L) Ой чоловік ... все одно, ще раз дякую за чудовий спосіб перевірити, чи універсальні посилання насправді зареєстровані! (Я знайшов журнали консолі також Видалення посилань під час видалення програми: +1)
Arno Teigseth,

1
чи це повинен бути той багатослівний за замовчуванням? Оскільки я не отримую такого докладного журналу .. це означає, що операція не є успішною?
Микола Альо

26

Відповідь St.derrick є інформативною.

Але для того, щоб універсальні посилання знову відкривалися в додатку замість сафарі, нам потрібно зробити наступне.

  • Довго натискайте на Універсальне посилання в пошті чи iMessage, тоді ви побачите варіанти, чи потрібно відкривати в сафарі чи в додатку.

2
Немає можливості app, лише скопіювати, відкрити, додати до списку читання тощо
iEngineer

1
Майже з глузду налагодив цю проблему, але ЦЕ було рішенням чи я. Можливо, якщо він не налаштований правильно і програма Mail відкриє посилання в сафарі, воно завжди відкриється в сафарі? поняття не маю, але я одного разу робив довге натискання -> відкрити в 'myapp' ... і тепер посилання відкриваються правильно!
Герберт

1
Дуже дякую за це рішення. Я застряг у цьому майже добу. Ти врятував мені день.
andrew


18

Я зрозумів, що проблема для мене полягає в тому, що посилання на кореневу директорію a (наприклад, http://example.com/) не відкривали додаток, але якщо я додав шлях (наприклад, http://example.com/mypath), він працював. Додавши "/"до списку шляхів, це його вирішило:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Як відповів slutsker у цій темі Форумів для розробників Apple.


17

Швидкі кроки, щоб перевірити, чи правильно ви реалізували Universal Link.

  • Торкніться й утримуйте посилання, яке ви очікуєте запустити додаток. Ви повинні побачити "Відкрити в [ім'я програми]" в контекстному меню.

  • Відкрийте додаток Примітки, введіть посилання, яке ви хочете відкрити. Торкніться Готово. Посилання стане жовтим, а натискання на посилання має відкрити вашу програму, а не Safari.

  • Якщо посилання http://yourDomain.com не запускає додаток, спробуйте http://yourDomain.com/yourFolder/

  • Якщо в контекстному меню "Сафарі" відображається "Відкрити в [ім'я програми]" на сафарі, але натискання на посилання відкриє посилання в самому сафарі замість запуску програми,

    а. Спробуйте перетягнути сторінку на сафарі, яка відкрилася після натискання на посилання, як у випадку, коли ви "потягнете, щоб оновити". З'явиться банер, який може відкрити вашу програму. Торкніться банера, щоб відкрити додаток, закрийте додаток, натиснувши кнопку додому, поверніться до сафарі та спробуйте запустити додаток, натиснувши посилання ще раз. Цього разу додаток слід запустити, оскільки натискання на банер повинно було зберегти перевагу, щоб відкрити посилання в додатку.

    б. Якщо додаток все ще не запускається після кроку a., Спробуйте надіслати посилання на веб-пошту, наприклад gmail, та відкрийте веб-сайт в сафарі та спробуйте натиснути посилання. Якщо це працює, можливо, ви намагалися запустити додаток із того самого домену, що і посилання. З того, що я бачив, запуск програми з того самого домену в основному не вдається . Ймовірно, сафарі не хоче перевірити, чи є URL-адреса універсального посилання, коли посилання знаходиться в тому самому домені, що і користувач. Тому спробуйте запустити додаток з іншого домену.


3
Це було це, займаючись цим питанням годинами, ЗАПАСНЯЄТЬСЯ ДОПОМОГУ ІЗ ТИХ ДОМАНІВ НАЙБІЛЬШЕ НЕПРАВИ. Дякую :)
maledr53

12

Також дуже важливо збільшити версію проекту або номер збірки після інтеграції універсальних посилань. Навіть якщо ви видалите / перевстановіть, iOS не буде перебирати посилання, якщо ви не навантажите версію.


1
Це! Версія в комплекті була абсолютно те, що спричинило збій мого тестування, тому що я переглянув би всі наведені вище поради, і мої посилання все одно запустили б Safari, оскільки iOS використовує кешований результат з попередньої версії, в apple-app-site-associationякій був неправильний префікс appId
zai chang

Кайл, я думаю, що тебе люблю! Ця відповідь збереже день, дякую!
neiker

Це був для мене секретний соус! Дякую, дякую, дякую!
санітар

10
  • Універсальні посилання не працюватимуть, якщо вставити посилання у поле URL-адреси браузера.

  • Універсальні посилання працюють з керованим користувачем <a href="...">елементом клацання по всіх доменах . Приклад: якщо на google.com є універсальна посилання, що вказує на bnc.lt, програма відкриє програму.

  • Універсальні посилання не працюватимуть із керованим користувачем <a href="...">елементом клацання на одному домені . Приклад: якщо на google.com є універсальна посилання, яка вказує на іншу універсальну посилання на сайті google.com, додаток не відкриється.

  • Універсальні посилання неможливо запустити через Javascript (у window.onload або через .click () виклик <a>елемента), якщо це не є частиною дії користувача.

джерело: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

Третя куля коштувала мені приблизно день, щоб розібратися.


1
3-я куля, тут же: витрачала багато годин, з'ясовуючи це. Apple має навіть гарне дуже дурне пояснення цьому: "iOS поважає найімовірніший намір користувача та відкриває посилання на Safari", дивіться тут .
jox

3 куля ТОП!
Байтерос

10

Для всіх, кому потрібно легко протестувати відкриті (універсальні) посилання, ви також можете відкрити посилання у своєму симуляторі з терміналу за допомогою цієї команди:

xcrun simctl openurl booted yourapp_or_http://yourlink

наприклад:

xcrun simctl openurl booted https://www.google.com


1
У мене це не працює, це завжди просто відкриває Safari. Вони працюють, коли я працюю на фактичному пристрої. Будь-які ідеї будуть оцінені, оскільки це трохи болісніше налагодження / розвиток без тренажера.
chib

7

Якщо тут люди шукають інших рішень, ми збираємо цілий крок за кроком налагодження універсальних посилань, оскільки ми спостерігали багато проблем, що спричиняють багато головних болів.

Перевір:

Посібник з налагодження універсальних посилань

Попередній перегляд посібника з налагодження

Якщо ви просто хочете налаштувати універсальні посилання свіжими, цей посібник дуже корисний:

Посібник із налаштування глибокого зв’язку iOS

Сподіваюся, вони корисні!


Дуже корисно, дякую! Працював для мене під час роботи на фактичному пристрої, але не на iOS Simulator.
Джош Скляр

6

Просто думав, що я додам деякі речі, які я виявив, якщо в майбутньому більше людей зіткнуться з тими ж проблемами, що і я. В основному вони пов'язані з помилками аутентифікації.

Незважаючи на те, що яблуко прямо не вказано, apple-app-site-associationфайл повинен надсилатися через https, навіть якщо він підписаний. Сертифікат, який використовується для https, також повинен довіряти Apple. Тому, хоча сертифікат, доданий до пристрою в Налаштуваннях -> Загальні -> Профілі, дозволить https в сафарі, він не дозволить універсальним посиланням працювати.

У журналах пристрою, при помилці аутентифікації між пристроєм та сервером, буде надруковано значення, подібне до цього "TrustResultValue" : 4. З TrustResultValue5 означає, що сертифікат призначений для неправильного домену (наприклад, test.com, який подається з www.test.com). АTrustResultValue з 4 означає, що сертифікату не довіряють для цього використання.

Там можуть бути деякі корисні кроки для налагодження тут . Розділ "Тестування доступу до яблучних програм-асоціацій із сайтом" - це покрокове керівництво щодо того, як переконатися, що пристрій отримує apple-app-site-associationфайл. Дія зводиться до:

  1. Видаліть додаток. Це необхідно, оскільки файл завантажується при встановленні.

  2. Зупиніть сервер належним чином обслуговувати apple-app-site-association.

  3. У xcode відкрийте вікно -> пристрої та виберіть свій пристрій.

  4. Відкрийте журнали пристроїв, натиснувши трикутник у нижній частині вікна.

  5. Очистіть журнали, клацнувши на кошику, щоб очистити будь-які попередні журнали, які можуть бути пов’язані.

  6. Перевстановіть додаток за допомогою xcode, натиснувши кнопку відтворення.

  7. Після запуску програми, якщо пристрій правильно запитує файл, тоді журнали пристроїв повинні містити помилку, яку можна знайти шляхом пошуку "apple-app-site-association".

Якщо apple-app-site-associationфайл належним чином розміщено (крок 2 не залишився), помилок не повинно бути. Натомість може відображатися помилка аутентифікації, якщо це проблема.


1
Я робив підробку SSL за допомогою Charles Proxy, і це призвело до значення довіри 4. Коли я вимкнув проксі, це вдалося.
Бен Флінн

6

Найпоширенішою причиною є те, коли користувач натискає праворуч угорі, тим самим кажучи iOS НЕ відкривати додаток (в даному випадку Uber) у майбутньому.

Щоб виправити, потягніть вниз, щоб відкрити розумний банер, і натисніть OPEN:

Потягніть вниз в Safari і знову відкрийте

Згодом це буде "пам'ятати", щоб відкрити додаток.


5

До цього місця ми додали файл асоціації Apple-app-site :

https://example.com/apple-app-site-association

На iOS 9 він працював чудово, але на iOS 10 він не працював.

Виявилося, що проблема була з. Добре відомим шляхом:

https://example.com/.well-known/apple-app-site-association

Через https://example.com/.well-known/apple-app-site-association шлях, перенаправлений на https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

На мою думку, якщо якось добре відомий шлях не працює правильно, він порушує універсальні зв'язки.


У посібнику чітко сказано, що "Файл повинен бути доступний через HTTPS - без перенаправлень".
eonil

У посібнику також чітко сказано, що "Для додатків, які працюють в iOS 9.3.1 і пізніших версіях, розмір нестисненого розміру файлу асоціації apple-app-site повинен бути не більше 128 КБ, незалежно від того, підписаний файл". Цей файл - 154 Кб.
Роберто

На iOS11 ваш сервер повинен явно повернути статус 404 для: example.com/.well-known/apple-app-site-association, тоді swcd використовує резервне копіювання для root: example.com/apple-app-site-association . Ви можете швидко перевірити повернений стан HTTP за допомогою таких інструментів, як "Листоноша"
Макс Одноволик

4

Мені вдалося змусити його працювати, але це зайняло досить багато часу і боротьби. Зауважте, що якщо ви не підпишете apple-app-site-association файл (підписання необов’язково!), Натискання на посилання в Safari не відкриє ваше додаток (це спричинило мені великий головний біль).


1
Це цікаво. Apple в документах заявляє, що для чистих універсальних посилань та використання в iOS9 не потрібно підписувати. Тільки якщо ви хочете підтримати iOS 8 Handoff / Shared Web Credentials, вам потрібно буде підписатись. Цікаво! У мене така ж проблема, тож я спробую підписати.
wrtsprt

Підписання дійсно необов’язкове. Якщо натиснути посилання в мобільному Safari, щоб запустити відкриття нативної програми для iOS, називається "Веб-переглядач-на-рідний додаток", у цьому випадку вам потрібно буде додати activitycontinuationвластивість до apple-app-site-associationфайлу json. developer.apple.com/library/ios/documentation/UserExperience/…
Devy

3

Взяв мене близько дня, щоб зрозуміти це. У мене не було завантаження оновлених профілів забезпечення в XCode (я також перезапустив XCode після цього).

(Налаштування> Облікові записи> Переглянути деталі> Завантажити всі)


3

Ви можете перевірити універсальні посилання в тренажері

З Посібника з програмування пошуку додатків: Підтримка універсальних посилань


6
Хтось отримав універсальні посилання для роботи в тренажері? Я безліч разів пробував, і це ніколи не виходить. Це працює, використовуючи реальний пристрій з тими ж потоками, хоча.
Тоні

Я також не зміг перевірити це. Спроба змусити Safari запустити універсальні посилання в тренажері виявилася марною, незважаючи на те, що він працює належним чином на фізичному пристрої.
Альберт Борі

Я також не зміг змусити їх працювати в тренажері. @AlbertBori ти це працював?
chib

Я майже впевнений, що вони не працюють в тренажері . Я знайомий з усіма іншими пастками, і я ніколи не можу змусити їх працювати в тренажері ..
Fattie

3

Через два дні для мене виявилося, що такі посилання (з філії)

додатки: xxxx.app.link

працювати лише після архівації програми (також спеціальної програми) та встановлення її на телефон.


3

Якщо хостинг для вашого apple-app-site-associationна Firebase , переконайтеся , щоб покласти його в /.well-known/підкаталог! Виявляється, що Xcode запитує цю URL-адресу спочатку, і якщо вона успішна, вона не робить спроб запиту apple-app-site-associationв кореневому каталозі. Чомусь інженери firebase змусили веб-сайти, що розміщуються, автоматично відповідати /.well-known/apple-app-site-associationпорожнім (але правильно сформованим) файлом асоціації, який переосмислює ваш власний, не залишаючи поняття, чому нічого не працює!


2
Нарешті! Дуже дякую. Це десь написано? Firebase має десь документувати.
Беркай Туранчі

2

Перейдіть на сторінку developer.apple.com і відредагуйте один із своїх профілів розповсюдження. На сторінці редагування ви можете відкрити спливаюче вікно для ідентифікаторів додатків , де відображатиметься список назв вашої програми, а в () круглих дужках за назвою програми вона відкриє всі ваші справжні ідентифікатори додатка . У деяких додатках може бути ідентифікатор вашої команди як префікс, а в деяких - ні . Обов’язково використовуйте саме те, що ви бачите в цьому спливаючому меню всередині (), і введіть його в поле appID щодо додатків apple-app-site-Association. У мене була саме ця проблема з додатком та його універсальними посиланнями.


2

Проблемою для мене виявився apple-app-site-associationфайл. Згідно з документацією Apple, потрібен лише параметр додатків. Я додав activitycontinuationпараметр і він працював.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

Через 3 роки ми потрапили в цю точну проблему. Додавання activitycontinuation- це те, що зафіксувало це для нас.
Readyornot

2

Насправді я не бачив того самого комбо проблеми / рішення, який би працював на мене, так що я можу також додати мій випадок, якщо хтось має ту ж проблему!

Для свого додатка я використовую користувальницьку схему URL-адрес (встановлено в APP_TARGET > Info > URL Types) і встановлюю схему URL-адрес звідси на консоль Firebase, але все ще не працювала.

Моєю проблемою були насправді дві проблеми:

Слідкуйте, чи перевіряється автоматичне керування підписом

Якщо ви перевіряєте налаштування "Автоматично керувати підписом" Xcode таким, як я був, оскільки я просто намагався зробити швидкий демонстраційний додаток, ви хочете переконатися, що використовуваний TeamID відповідає встановленому на консолі Firebase. Спочатку я перейшов до свого облікового запису розробника Apple і скопіював ідентифікатор команди зі своєї сторінки членства, але пізніше побачив, що фактичний ідентифікатор, що використовується Xcode, був іншим. (Ви можете знайти це в « APP_TARGET > General > Signing > Signing Certificate.Для мене це виглядало так iPhone Developer: My Name (TEAM_ID)).

Визначте свій TeamID до ідентифікатора пакету у своїх типах URL-адрес

Після того, як я переконався, що вони збігаються в консолі Firebase та Xcode, наступною моєю проблемою став ідентифікатор для моєї URL-схеми. Тут типово використовувати ваш ідентифікатор пакету, але Firebase насправді префіксує це тим ідентифікатором команди, який ви вказали у вашій консолі Firebase, тому мені довелося також префіксувати його до ідентифікатора в розділі типів URL у Xcode.

Після цих двох виправлень та повторного завантаження GoogleService-Info.plistфайлу у мене не було проблем відкрити свої динамічні посилання.


2

Після двох днів цілковитого відчаю я думаю, що остаточно виправив це. Ось моє рішення:

Здається, що більш старі програми використовують інший префікс додатка, ніж новіші. Новіші програми використовують для цього лише ідентифікатор команди. Якщо префікс програми та ідентифікатор команди не ідентичні, схоже, що вам потрібно вказати поле продовження активності у файлі асоціації веб-сайтів яблучного сайту:

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

Ще одна річ, яку я відчув під час мого переїзду через пекло, - видалення програми та перезапуск пристрою, здається, єдиний спосіб примусити оновити цей файл.


1

Для мене моя помилка полягала в тому, що наш веб-сайт перенаправляє www.domain.com на domain.com, тому всі www.domain.com/* вийдуть з ладу через це. Сподіваюся, що це допомагає.


1

Мені вдалося протестувати універсальні посилання в iOS Simulator за допомогою програми Календар.

Я щойно створив подію та додав URL-адресу, яку хотів перевірити, у полі події URL. Потім, переглядаючи створену подію, ви можете просто натиснути на посилання URL, і ваш додаток має відкритися.


Це, здається, не працює для мене, я намагався все, щоб змусити їх працювати в тренажері безрезультатно. Вони добре працюють на фактичному пристрої, але це не ідеально для розробки / налагодження. Я довго намагався натискати посилання, і немає опції "Відкрити в додатку".
chib

1

Провівши день, намагаючись змусити це працювати, перезавантаження мого телефону вирішило проблему.

Видалення та перевстановлення програми також не працювало.


1

Для ios13 існує новий формат - перегляньте тут https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Я оновив свій файл, щоб виглядати так:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

Ви повинні були б додати "exclude": trueдо componentsоб'єкту, щоб commentбути правдою
skornos

@skornos хороший момент. я допрацюю свою відповідь.
Аніта

0

Для майбутніх читачів, які знайдуть цю сторінку ...

У мене була схожа ситуація. Однак у моїй ситуації iOS10 працював AOK, і що б я не робив (збільшити кількість збірок, видалити / перевстановити тощо), iOS9, схоже, відмовився працювати.

Я прийшов до цього з iOS10, і мені потрібно було підтримати iOS9. У той час документація тут - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - чітко зазначає, що файл може бути розміщений у корені веб-сервера (наприклад /apple-app-site-association) або у відомій папці (наприклад /.well-known/apple-app-site-association). Оскільки я також підтримую Android, який також використовує відому папку .well для подібного файлу, я вирішив поставити те й інше.

Для нових установок на iOS10 він чітко запитує кореневий файл, відмовляється, а потім запитує відомий файл .well і успішний.

Для iOS9 він чітко запитав кореневий файл, не працює і нічого більше не робить.

Рішення: якщо ви підтримуєте iOS9, поставте файл на /apple-app-site-association.


0

У моєму випадку моя помилка полягала в тому, щоб ставити параметри запиту в шляхи:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

коли я видаляю "? target = підтвердити & *" з шляхів, він починає працювати

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.