Откройте URL with Safari к независимо от того, чему настроен системный браузер

В моей объективной-c программе я должен открыть URL in 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, например.

12
задан Mike Abdullah 24 July 2013 в 17:49
поделиться

2 ответа

Попробуйте метод OpenURLs из NSWorkspace:

- (BOOL) openURLs:(NSArray *)urls
         withAppBundleIdentifier:(NSString *)bundleIdentifier
         options:(NSWorkspaceLaunchOptions)options
         additionalEventParamDescriptor:(NSAppleEventDescriptor *)descriptor
         launchIdentifiers:(NSArray **)identifiers
5
ответ дан 2 December 2019 в 21:22
поделиться

Два перечисленных выше варианта действительно работают для веб-сайтов, на которых нет Flash-роликов.

Описанный мною сбой кажется ошибкой, которую можно воспроизвести даже с помощью одного Applescript. Я открыл для этого отдельный вопрос ( AppleScript для открытия URL-адреса в Safari вылетает для веб-сайтов на основе Flash )

Для записи, ответ на мой вопрос - использовать LSOpenFromURLSpec или этот код:

NSWorkspace * ws = [NSWorkspace sharedWorkspace];
[ws openURLs: urls withAppBundleIdentifier:@"com.apple.Safari" 
  options: NSWorkspaceLaunchDefault
  additionalEventParamDescriptor: NULL
  launchIdentifiers: NULL];
2
ответ дан 2 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: