macOS에서 코코아 애플리케이션을 기본 웹 브라우저로 설정하는 방법
웹 브라우저를 만드는 것은 다소 벅차게 느껴질 수 있지만, 코코아 애플리케이션이 해당 역할을 맡기를 원한다면 어떻게 해야 할까요? macOS에서 애플리케이션을 기본 웹 브라우저로 설정하는 것은 가능할 뿐만 아니라, HTTP 및 HTTPS 링크와의 원활한 상호작용을 통해 사용자 경험을 향상시킬 수 있습니다. 이 블로그 포스트에서는 이를 달성하기 위한 필수 단계를 설명하겠습니다.
문제점
사용자가 Mail이나 iChat과 같은 애플리케이션에서 웹 링크를 클릭하면, 기본 웹 브라우저가 열립니다. 코코아 애플리케이션을 개발 중이고 이 링크들을 여는 웹 브라우저로 설정하고 싶다면, 애플리케이션이 HTTP 및 HTTPS 링크를 처리할 수 있도록 구성해야 합니다.
해결책
코코아 애플리케이션을 기본 웹 브라우저로 만드는 방법은 다음 네 가지 단계입니다:
1. 애플리케이션의 Info.plist 파일에 URL 스킴 추가하기
첫 번째 작업은 macOS에 애플리케이션이 HTTP와 HTTPS 요청을 처리할 수 있음을 알리는 것입니다. 이는 애플리케이션의 Info.plist
파일을 수정함으로써 이루어집니다. 방법은 다음과 같습니다:
- 애플리케이션의 Info.plist 파일을 엽니다.
- 다음 XML 스니펫을 추가합니다:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>http URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>http</string>
</array>
</dict>
<dict>
<key>CFBundleURLName</key>
<string>Secure http URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>https</string>
</array>
</dict>
</array>
이 추가를 통해, 애플리케이션이 두 가지 유형의 URL 스킴을 처리할 수 있음을 선언합니다.
2. URL 처리 메서드 작성하기
다음으로, 애플리케이션이 URL을 여는 요청을 받을 때 트리거되는 메서드를 생성해야 합니다. 간단한 예시는 다음과 같습니다:
- (void)getUrl:(NSAppleEventDescriptor *)event
withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
// TODO: 사용자 정의 URL 처리 코드 여기에 작성
}
이 메서드에서는 URL을 가져온 후 URL을 처리하는 논리를 구현하게 됩니다.
3. URL 처리 메서드 등록하기
이제 URL 처리 메서드를 작성했으므로 이를 macOS 이벤트 관리자에 등록해야 합니다. 애플리케이션 초기화 섹션에 다음 코드를 추가할 수 있습니다:
NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
또한, 오래된 애플리케이션을 지원하기 위해 WWW!/OURL Apple Event에 대해서도 등록해야 합니다:
[em setEventHandler:self
andSelector:@selector(getUrl:withReplyEvent:)
forEventClass:'WWW!'
andEventID:'OURL'];
4. 애플리케이션을 기본 브라우저로 설정하기
마지막으로, Launch Services API를 사용하여 애플리케이션을 HTTP 및 HTTPS 스킴의 기본 처리기로 설정해야 합니다. 다음 코드를 추가합니다:
CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
// TODO: httpResult 및 httpsResult에서 오류 확인
팁: 기본 브라우저 설정을 변경하기 전에 사용자에게 허가를 요청하는 것이 좋습니다.
사용자 정의 URL 스킴
표준 URL 스킴 외에도 고유한 사용자 정의 스킴을 구현할 수 있습니다. 다른 애플리케이션과의 충돌을 피하기 위해, 사용자 정의 스킴을 애플리케이션의 번들 식별자를 기반으로 하는 것이 현명합니다. 예를 들어, 번들 ID가 com.example.MyApp
인 경우 x-com-example-myapp://
와 같은 구성으로 구현하는 것을 고려해 보세요.
결론
이 간단한 가이드를 따르면 macOS에서 사용자의 기본 웹 브라우저로 코코아 애플리케이션을 설정할 수 있습니다. 이는 애플리케이션의 유용성을 향상시킬 뿐만 아니라 사용자에게 더 나은 통합 웹 경험을 제공합니다. 기본 설정을 변경할 때는 항상 사용자 동의를 우선시하여 원활한 전환을 이루도록 하세요.
구현 중 문제가 발생하면 언제든지 질문하거나 댓글을 남겨주세요!