У меня есть мини-приложение с расширением Today, и я создал собственную схему URL. Затем, щелкнув UIB-кнопку в расширении, я вызвал функцию open, например
extensionContext?.open(URL(string: "todayextensionexample://inform")!, completionHandler: nil)
Приложение успешно запустилось, но я не могу его отладить.
Я пробую 3 разных подхода.
Прежде всего для открытой отладки Edit Scheme -> Info -> Wait for executable to be launched
для запуска исполняемого файла в схеме приложения, но приложение ожидает и не запускается, поэтому нет отладки.
Моя (open url: URL) функция как показано ниже:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
NotificationCenter.default.post(name: NSNotification.Name.urlOpenedNotification, object: nil, userInfo: nil)
return true
}
в методе viewDidLoad ViewController;
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(notificationHandler(_:)), name: NSNotification.Name.urlOpenedNotification, object: nil)
}
Это был мой второй подход.
3. Подход состоит в том, чтобы использовать синтаксический анализ параметров URL и регистрировать его, как показано ниже:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let sendingAppID = options[.sourceApplication];
print("source application = \(sendingAppID ?? "Unknown") ")
guard let components = NSURLComponents(url: url, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
print("Invalid URL or album path missing")
return false
}
print("components > ", components)
print("path > ", path)
print("params >", params)
var param: [String: Any] = ["components": components, "path": path, "params": params];
NotificationCenter.default.post(name: NSNotification.Name.urlOpenedNotification,
object: nil,
userInfo: param)
return true
}
В подходе 3. я попытался уведомить и напечатать некоторые переменные.
Перед моими вопросами; Я изменяю некоторые из print()
на NSLog()
, но в Device -> Show Logs
ничего не работает.
Приложение открылось с openUrl, но я не могу отладить его, потому что, если я запускаю целевое приложение TodayExtension
не отлаживать и другие, если я запускаю цель приложения, когда я нажимаю кнопку TodayExtension
, затем снова открываю приложение, когда функция фона
func application(_ app: UIApplication, open url: URL ...)
не работает. Я видел отладки реального устройства, но там ничего не видно.
Есть ли способ, после нажатия кнопки на расширении Today, тогда Xcode запустил цель основного приложения, и я смогу увидеть все из журналов?
Как я могу отладить его и проверить, успешно ли он работает?