Мое приложение iOS обрабатывает универсальные ссылки для перенаправления пользователей сафари в мое приложение. Пока все работает отлично, если пользователь нажимает ссылку на мой веб-сайт из Google, вместо моего веб-сайта открывается мое приложение, например:
from safari https://my-web-site.com -> my-app
Но мое приложение не поддерживает некоторые функции, которыемой веб-сайт делает, поэтому я хотел бы программно отклонить некоторые URL-адреса и позволить своим пользователям использовать сафари вместо перенаправления его в моем приложении, например:
from safari https://my-web-site.com -> my-app
ИЛИ
from safari https://my-web-site.com?reject -> safari
Это возможно в соответствии с документацией Apple :
Важно понимать, что если ваше приложение использует openURL : чтобы открыть универсальную ссылку на ваш сайт,ссылка не открывается в вашем приложении. В этом сценарии iOS распознает, что вызов поступает из вашего приложения и поэтому не должен обрабатываться вашим приложением как универсальная ссылка.
К сожалению, это не то, что добавляется, вместо того, чтобы оставаться в сафари, мой пользовательненадолго перенаправляется в мое приложение, а затем снова перенаправляется в сафари следующим образом:
from safari https://my-web-site.com?reject -> my-app (briefly) -> safari
вот мой код для AppDelegate.swift:
internal func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard let url = userActivity.webpageURL else { return false }
guard let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: true) else { return false }
let params = urlComponents.queryItems ?? []
if params.contains(where: { $0.name == "reject" }) {
// This line should prevent the app from opening according to Apple's documentation
application.open(url)
return false
} else {
return true
}
}
Так что у кого-нибудь есть идеякак я могу сделать отклонение универсальной ссылки так, как это описано в документации Apple?
примечание: отклонение универсальной ссылки должно быть сделано программно приложением, в соответствии с данными, хранящимися локально. Поэтому добавление исключения пути в файл apple-app-site-association * не является опцией в моем случае:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "XXXXXXXXX.com.my-app",
"paths": [
"*",
"NOT /reject"
]
}
]
}
}