Фон:
- наше приложение использует разные идентификаторы пакетов для сборок разработки, бета-версий и производственных сборок (App Store).
- В настоящее время я внедряю универсальные ссылки в наши разработки.
- Наша производственная сборка, которая в настоящее время находится в App Store, не поддерживает универсальные ссылки.
Я столкнулся с этой сумасшедшей проблемой, когда мои универсальные ссылки не только не открывают разрабатываемую версию приложения, но вместо этого запускают рабочую версию, несмотря на то, что рабочая версия не имеет надлежащих прав.
Мой файл apple-app-site-association
был проверен с использованием обоих https://branch.io/resources/universal-links/ и https://search.developer.apple.com/appsearch-validation-tool/ и выглядит так:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "DY74R9XXXX.com.myapp.consumer.debug",
"paths": [ "/profiles/*", "/messages/*"]
},
{
"appID": "DY74R9XXXX.com.myapp.consumer",
"paths": [ "/profiles/*", "/messages/*"]
}
]
}
}
Согласно https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html массив details
должен оцениваться по порядку и останавливаться после нахождения совпадения.
Порядок словарей в массиве определяет порядок, которому следует система при поиске соответствия, поэтому вы можете указать приложение для обработки определенной части вашего веб-сайта.
Цель состоит в том, чтобы одна и та же универсальная ссылка загружалась в разрабатываемой версии для всех членов моей команды и в рабочей версии для конечных пользователей, у которых нет пакета .debug
на их телефонах.
Это не только не работает, но, как уже упоминалось, универсальные ссылки всегда загружают рабочую версию, даже если в рабочей версии отсутствует право applinks:dev.myserver.com
, указывающее на мой файл apple-app-site-association
. Это кажется безумием, но это будет означать, что я могу запускать произвольные пакеты, которые я не публиковал, и что файл прав не применяется.
Кроме того, если я удалю вторую запись из массива details
и оставлю словарь только для отладочной версии, универсальные ссылки перестанут работать и вместо этого откроют Safari. Переключение порядка массива также не имеет никакого эффекта. Я сталкивался с таким поведением на iPhone 6s как на 9.3, так и на 9.3.1. Любые советы по этим двум проблемам (запуск неправильного пакета и отказ от запуска пакета отладки, когда это единственная запись) очень ценятся!
DY74R9XXXX.com.myapp.consumer.debug
иDY74R9XXXX.com.myapp.consumer
, возможно, потому, что они очень похожи. Это точно нигде не задокументировано. Не могли бы вы попробовать изменить идентификатор пакета для отладочной сборки на что-то однозначно другое? - person Alex Bauer   schedule 19.04.2016com.myapp.dev
, и это сработало. Затем я изменил его наcom.myapp.dev.dev
, и это тоже сработало (меня беспокоила ошибка с идентификаторами 4 уровней по сравнению с типичными 3). Любые предложения по следующим шагам? - person emkman   schedule 19.04.2016apple-app-site-association
извлекается только при установке приложения. Предполагая, что это на самом деле проблема с кэшированием, я думаю, вам придется каждый раз удалять обе сборки приложения, чтобы получить чистый тест. Если бы вы только удаляли и переустанавливали один из них, я мог бы видеть, как это вызвало бы эти затянувшиеся проблемы. - person Alex Bauer   schedule 19.04.2016