macOS에서 코코아 애플리케이션을 기본 웹 브라우저로 설정하는 방법

웹 브라우저를 만드는 것은 다소 벅차게 느껴질 수 있지만, 코코아 애플리케이션이 해당 역할을 맡기를 원한다면 어떻게 해야 할까요? macOS에서 애플리케이션을 기본 웹 브라우저로 설정하는 것은 가능할 뿐만 아니라, HTTP 및 HTTPS 링크와의 원활한 상호작용을 통해 사용자 경험을 향상시킬 수 있습니다. 이 블로그 포스트에서는 이를 달성하기 위한 필수 단계를 설명하겠습니다.

문제점

사용자가 Mail이나 iChat과 같은 애플리케이션에서 웹 링크를 클릭하면, 기본 웹 브라우저가 열립니다. 코코아 애플리케이션을 개발 중이고 이 링크들을 여는 웹 브라우저로 설정하고 싶다면, 애플리케이션이 HTTP 및 HTTPS 링크를 처리할 수 있도록 구성해야 합니다.

해결책

코코아 애플리케이션을 기본 웹 브라우저로 만드는 방법은 다음 네 가지 단계입니다:

1. 애플리케이션의 Info.plist 파일에 URL 스킴 추가하기

첫 번째 작업은 macOS에 애플리케이션이 HTTP와 HTTPS 요청을 처리할 수 있음을 알리는 것입니다. 이는 애플리케이션의 Info.plist 파일을 수정함으로써 이루어집니다. 방법은 다음과 같습니다:

  1. 애플리케이션의 Info.plist 파일을 엽니다.
  2. 다음 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에서 사용자의 기본 웹 브라우저로 코코아 애플리케이션을 설정할 수 있습니다. 이는 애플리케이션의 유용성을 향상시킬 뿐만 아니라 사용자에게 더 나은 통합 웹 경험을 제공합니다. 기본 설정을 변경할 때는 항상 사용자 동의를 우선시하여 원활한 전환을 이루도록 하세요.

구현 중 문제가 발생하면 언제든지 질문하거나 댓글을 남겨주세요!