Я реализовал универсальные ссылки в своем приложении, но по какой-то причине файл AASA пока не будет загружен на сервер.
Можем ли мы протестировать iOS Universal Links / Deep Links без ассоциации Apple-App-Site (AASA)?
Ответы (3)
Да, вы действительно можете!
Вы можете проверить реакцию вашего приложения на глубокую ссылку без фактической реализации удаленной стороны, вызвав эту функцию из терминала:
$ xcrun simctl openurl booted 'YOUR_LINK_HERE'
Это вызовет следующий обратный вызов в appDelegate вашего приложения:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool
... это именно то поведение, которое вы должны ожидать от глубокой ссылки.
только не забудьте включить симулятор ;-)
Что касается универсальных ссылок - обратный вызов appDelegate немного отличается, но это очень небольшой умственный скачок:
func application(_ app: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
if let url = userActivity.webpageURL {
// parse the url and decide how to handle the universal link
}
}
return true
}
Нет, вы должны загрузить «apple-app-site-association» на сервер с вашим идентификатором пакета и идентификатором команды. Без него не протестируешь. Также вы не можете протестировать его, используя чужой файл «apple-app-site-association», поскольку его идентификатор команды и идентификатор пакета будут другими.
Вы можете загрузить свой файл AASA на сервер heroku для целей тестирования.
Apple, похоже, не поддерживает это.
Однако вы можете просто вызвать метод делегата непосредственно из любого места вашей программы.
NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
activity.webpageURL = [NSURL URLWithString:@"https://<your-domain.com>/route"];
[UIApplication.sharedApplication.delegate application: UIApplication.sharedApplication continueUserActivity:activity restorationHandler:^(id restorableObjects) {
}];