Обработчик нестандартного протокола не передает аргумент в OSX - PullRequest
3 голосов
/ 17 октября 2010

Я пытаюсь подключить собственный обработчик протокола к своему приложению в OSX, чтобы я мог выполнить test: // аргумент

В моем списке есть следующее:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>CFBundleURLIconFile</key>
        <string></string>
        <key>CFBundleURLName</key>
        <string>test</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>test</string>
        </array>
    </dict>
</array>

Это успешно запускает приложение, однако мой список аргументов всегда пуст. Почему это?

Под прикрытием запускается приложение Java \ Scala, основной метод: объект LoadJS { def main (args: Array [String]) {

Я могу передать аргументы при использовании команды "open" в командной строке. Пробовал как из Chrome, так и из Firefox но оба работают.

Есть идеи?

Спасибо

Ben

1 Ответ

2 голосов
/ 11 апреля 2011

URL не передается в качестве аргумента. Скорее, ваше приложение запускается, а затем получает AppleEvent класса kInternetEventClass и ID kAEGetURL. Может быть, этот пост, который описывает, как использовать собственный протокол из Objective C, может помочь понять, как он работает:

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

Чтобы реально обработать это событие из Java / Scala, вам нужно еще немного изучить и, возможно, написать собственный код… Посмотрите на Apple's ApplicationAdapter класс, который позволяет обрабатывать несколько основных AppleEvents как открыть, открыть, около и т. д .; но не связанные с URL события, к сожалению. На этом форуме кто-то сообщает, что делает это с JNI.

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