В файле ассоциации сайта приложения Apple, почему "НЕ" не исключает упомянутый путь?
Я добавил универсальные ссылки в свое приложение iOS
messages http://somesite.com/message/list/ >> opens the app to messages
review http://somesite.com/review/add/ >> opens the app to review
place http://somesite.com/place/add/ >> opens the app to place
photo http://somesite.com/photo/add/ >> opens the app to photo
все работает, как и ожидалось, мой вопрос: как исключить пути или URL, таким образом, что он никогда даже не открывает приложение?
например
somepage http://somesite.com/somepagelink >> SHOULDN'T OPEN APP, it must show up in the browser.
файл ассоциации сайта приложений Apple
{
"applinks":
{
"details": [
{
"paths": ["*", "NOT /somepagelink/*"],
"appID": "ID1.myApp"
},
{
"paths": ["*", "NOT /somepagelink/*"],
"appID": "ID2.myApp"
}],
"apps": []
},
"activitycontinuation":
{
"apps": ["ID1.myApp","ID2.myApp"]
}
}
это правильный путь для исключения пути?
"NOT /somepagelink/*"
2 ответа
Да, ваш синтаксис правильный, но:
В документации Apple говорится, что порядок заявления важен.
Поскольку система оценивает каждый путь в массиве путей в указанном порядке - и останавливает оценку при обнаружении положительного или отрицательного совпадения - вы должны указать пути с высоким приоритетом перед путями с низким приоритетом.
Первым утверждением, которое он оценивает в вашем файле, является звездочка "*", которая сигнализирует "да, каждый URL разрешен". Тогда это закончится и откроет приложение.
Так может быть, попробуйте наоборот?
"paths": ["NOT /somepagelink/*", "*"],
С нашей стороны это не было проблемой CDN. Оказывается, отрицательные пути можно определить несколькими способами. Указание их ОБЕИХ способов помогло.
Допустим, у нас есть приложение, в котором:
- Основной домен НЕ должен открываться под приложением
- Все под
/customer
должен быть открыт в приложении, за исключением - Все под
/customer/not_included
НЕ следует открывать в приложении
Окончательный файл ассоциации сайта-приложения-яблока:
{
"applinks": {
"apps": [],
"details": [
{
"appIDs": [
"[APPID]"
],
"appID": "[APPID]",
"components": [
{
"/": "/customer/not_included/*",
"exclude": true,
"comment": "not_included exluded"
},
{
"/": "/customer",
"exclude": true,
"comment": "Customer exluded"
},
{
"/": "/customer/",
"exclude": true,
"comment": "Customer exluded"
},
{
"/": "/customer/*",
"comment": "Customer sub pages included"
}
],
"paths": [
"NOT /customer/not_included/*",
"NOT /customer",
"NOT /customer/",
"/customer/*"
]
}
]
},
"webcredentials": {
"apps": [
"[APPID]"
]
}
}
В вашем случае важной частью является то, что есть обаNOT
путь иexclude: true
компоненты, которые выглядят избыточными, но если мы опустим любой из них, логика, похоже, будет нарушена.