Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

<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, вам следует использовать URL x-com-example-myapp://.

Ответ 2

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