내 objective-c 프로그램에서 시스템의 기본 브라우저가 무엇이든 관계없이 Safari에서 URL을 열어야합니다. 어떤 시스템 브라우저가 설정되어 있더라도 Safari에서 URL 열기
[ws launchAppWithBundleIdentifier: @"com.apple.Safari"
options: NSWorkspaceLaunchWithoutActivation
additionalEventParamDescriptor: NULL
launchIdentifier: nil];
만 전달하는 방법을 알아 내야 : 나는 이것에 가까운 것 같아요
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
[ws openURL: url];
: 즉, 파이어 폭스 또는 무엇이든에게 다른 브라우저를 실행할 수 있기 때문에이 작동하지 않습니다 것을 의미합니다 매개 변수로 URL에 ... 쉬운 방법이 있습니까?
감사합니다.
업데이트 : 다음 코드는 원하는 URL로 Safari를 실행하지만 Safari가 즉시 종료됩니다! 이게 왜 어떤 아이디어일까요?
NSWorkspace * ws = [NSWorkspace sharedWorkspace];
[ws openURLs: urls withAppBundleIdentifier:@"com.apple.Safari"
options: NSWorkspaceLaunchDefault
additionalEventParamDescriptor: NULL
launchIdentifiers: NULL];
LSOpenFromURLSpec
과 동일한 거동을 관찰했다. Safari 인스턴스가 실행중인 경우 제대로 작동합니다. Safari 인스턴스가 실행 중이 아니면 새로운 인스턴스가 시작되고 즉시 종료됩니다.
업데이트 2 : Safari는 플래시가 내장 된 웹 사이트에서만 충돌합니다. 위의 코드를 사용하면 google.com을 열어도 좋지만 Safari는 YouTube 동영상과 충돌합니다.
'시스템 ("Safari URL") 또는 이와 비슷한 것이 작동하지 않습니까? – barrycarter
불행히도 없습니다. 나는 터미널에서 이것을 시도했다. Safari가 시작되지만 URL을 로컬 파일로 취급하므로 찾을 수 없습니다. – Mark
이것은 나에게 가까이 왔지만 Safari가 아직 실행 중이 아니면 즉시 열리고 종료됩니다. 오류가보고되지 않았습니다 : NSString * safariFullPath = [[NSWorkspace sharedWorkspace] fullPathForApplication : @ "Safari"]; NSArray * urls = [NSArray arrayWithObject : url]; LSLaunchURLSpec urlSpec; urlSpec.appURL = (CFURLRef) [NSURL URLWithString : safariFullPath]; urlSpec.itemURLs = (CFArrayRef) urls; urlSpec.passThruParams = NULL; urlSpec.launchFlags = kLSLaunchAsync; urlSpec.asyncRefCon = NULL; OSStatus 상태 = LSOpenFromURLSpec (& urlSpec, NULL); – Mark