Как настроить приложение Cocoa в качестве веб-браузера по умолчанию? - PullRequest
31 голосов
/ 08 сентября 2008

Как установить приложение Какао в качестве веб-браузера по умолчанию?

Я хочу создать приложение, которое запускается по умолчанию, когда пользователь нажимает ссылку HTTP или HTTPS в других приложениях (Mail, iChat и т. Д.).

Ответы [ 2 ]

73 голосов
/ 08 сентября 2008

Существует четыре шага для создания приложения, которое может работать как веб-браузер по умолчанию. Первые три шага позволяют вашему приложению выступать в роли обработчика роли для соответствующих схем URL (HTTP и HTTPS), а последний шаг делает его обработчиком роли по умолчанию для этих схем.

1) Добавьте схемы URL, которые ваше приложение может обработать, в файл info.plist вашего приложения

Чтобы добавить поддержку http:// и https://, вам нужно добавить следующее в файл info.plist вашего приложения. Это говорит ОС, что ваше приложение способно обрабатывать HTTP и HTTP URL.

<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>

2) Написать метод URL-обработчика

Этот метод вызывается операционной системой, когда она хочет использовать ваше приложение для открытия URL-адреса. Неважно, к какому объекту вы добавите этот метод, он будет явно передан Менеджеру событий на следующем шаге. Метод обработчика URL должен выглядеть примерно так:

- (void)getUrl:(NSAppleEventDescriptor *)event 
    withReplyEvent:(NSAppleEventDescriptor *)replyEvent
{
  // Get the URL
  NSString *urlStr = [[event paramDescriptorForKeyword:keyDirectObject] 
    stringValue];

  //TODO: Your custom URL handling code here
}

3) Зарегистрировать метод обработчика URL

Затем сообщите менеджеру событий, какой объект и метод вызывать, когда он хочет использовать ваше приложение для загрузки URL-адреса. В этом коде я передаю self как обработчик события, предполагая, что мы вызываем setEventHandler из того же объекта, который определяет метод getUrl:withReplyEvent:.

Вы должны добавить этот код где-нибудь в коде инициализации вашего приложения.

NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
[em 
  setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:kInternetEventClass 
  andEventID:kAEGetURL];

Некоторые приложения, в том числе ранние версии Adobe AIR, используют альтернативный WWW! / OURL AppleEvent для запроса, чтобы приложение открывало URL-адреса, поэтому для совместимости с этими приложениями также необходимо добавить следующее:

[em
  setEventHandler:self 
  andSelector:@selector(getUrl:withReplyEvent:) 
  forEventClass:'WWW!' 
  andEventID:'OURL'];

4) Установите приложение в качестве браузера по умолчанию

Все, что мы сделали, пока сообщили ОС, что ваше приложение браузер , теперь нам нужно сделать его браузером по умолчанию .

Для этого нам нужно использовать API Launch Services. В этом случае мы устанавливаем наше приложение в качестве обработчика роли по умолчанию для ссылок HTTP и HTTPS:

CFStringRef bundleID = (CFStringRef)[[NSBundle mainBundle] bundleIdentifier];
OSStatus httpResult = LSSetDefaultHandlerForURLScheme(CFSTR("http"), bundleID);
OSStatus httpsResult = LSSetDefaultHandlerForURLScheme(CFSTR("https"), bundleID);
//TODO: Check httpResult and httpsResult for errors

(вероятно, лучше спросить разрешения у пользователя, прежде чем менять браузер по умолчанию.)

Пользовательские схемы URL

Стоит отметить, что вы можете использовать эти же шаги для обработки своих собственных схем URL. Если вы создаете собственную схему URL-адресов, рекомендуется использовать ее на основе идентификатора пакета вашего приложения, чтобы избежать конфликтов с другими приложениями. Поэтому, если ваш идентификатор пакета com.example.MyApp, вам следует рассмотреть возможность использования x-com-example-myapp:// URL.

2 голосов
/ 21 сентября 2008

Если вы просто хотите изменить вспомогательное приложение по умолчанию для http (s), вы можете сделать это в настройках Safari. Там вы найдете раскрывающийся список, который позволит вам выбрать все зарегистрированные приложения-обработчики для http. Чтобы автоматически установить приложение в качестве браузера по умолчанию, см. Предыдущие инструкции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...