В моей программе target-c мне нужно открыть URL в Safari независимо от того, какой браузер используется по умолчанию в системе. Это означает, что это не сработает, потому что он может запустить Firefox или любой другой браузер:
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
[ws openURL: url];
Я думаю, что я близок к этому:
[ws launchAppWithBundleIdentifier: @"com.apple.Safari"
options: NSWorkspaceLaunchWithoutActivation
additionalEventParamDescriptor: NULL
launchIdentifier: nil];
нужно только выяснить, как передать URL в качестве параметра ... Есть ли более простой способ?
Спасибо!
Обновление: Следующий код запускает Safari с нужным мне URL-адресом, но Safari завершает работу сразу же! Есть идеи, почему это так?
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
[ws openURLs: urls withAppBundleIdentifier:@"com.apple.Safari"
options: NSWorkspaceLaunchDefault
additionalEventParamDescriptor: NULL
launchIdentifiers: NULL];
Я наблюдал такое же поведение с LSOpenFromURLSpec
. Если экземпляр Safari работает, он работает нормально. Если ни один экземпляр Safari не запущен, он запускает новый и сразу же завершает работу.
Обновление 2: Сбои Safari возможны только для веб-сайтов, на которых установлен Flash. С помощью приведенного выше кода я могу нормально открыть google.com, однако Safari вылетает, например, для видео на YouTube.