Получение параметров из пользовательского URL-адреса в TideSDK

Я собираю настольное приложение в TideSDK, и у меня возникают проблемы с поиском параметров, передаваемых в приложение через настраиваемый URL-адрес запуска.

Приложение запускается при вызове соответствующего протокола (назовите его aaa://), но я не смог понять, как получить строку URL. Я прочитал пару потоков, в которых предполагалось, что я могу получить строку с помощью вызова Ti.API.application.getArguments(), но он возвращает что-то странное (см. ниже).

// launch application with aaa://some_args_here
var args = Ti.API.application.getArguments();
// returns (StaticBoundList) [ /path/to/app, "-psn_0_721072", ]

Я не совсем удивлен, что это, похоже, не работает, поскольку в документации API говорится, что метод getArguments возвращает список аргументов командной строки.

Будем признательны за любое понимание того, как получить доступ к URL-адресу запуска!


person oliver    schedule 15.01.2013    source источник


Ответы (3)


взгляните на window.location.search

https://developer.mozilla.org/en-US/docs/DOM/window.location

person meeech    schedule 15.01.2013
comment
Это возвращает информацию о ссылке, с помощью которой SDK запускает приложение (протокол app://), в отличие от протокола, который использовался для запуска приложения через веб-браузер (например, Safari). Я вручную отредактировал Info.plist приложения, чтобы добавить пользовательскую схему URL-адресов. Есть ли правильный способ добавить пользовательскую схему? - person oliver; 15.01.2013
comment
ах поймал. извините за путаницу. Я не думаю, что есть «правильный способ» добавить собственный протокол. То, как вы это делаете, вероятно, единственный способ. - person meeech; 17.01.2013

Не похоже, что в настоящее время существует «официальный» способ сделать это, поэтому я придумал свое собственное решение, которое, похоже, работает довольно хорошо (хотя в настоящее время оно реализовано только для OSX).

Просматривая исходный код TideSDK, я нашел место, где создается собственный делегат приложения. Я добавил обработчик запуска URL-адреса в делегате приложения, который хранит URL-адрес запуска в новом члене делегата приложения, и подключил его к API с помощью привязки в Ti.UI.

Если кто-то еще заинтересован в этой функции или знает, как выполнить эту задачу для Windows, свяжитесь с нами!

person oliver    schedule 24.01.2013

Хотя у меня нет вашей проблемы, просто хочу сказать, что следующая функция отлично работает для меня.

var args = Ti.API.application.getArguments();

возможно ли, что это проблема реестра urlprotocl?

мой протокол URL-адреса установлен следующим образом: MSDN

таким образом, значение в «Команде» равно

"C:\ВАША_ПАПКА_ПРИЛОЖЕНИЯ\ВАШЕПРИЛОЖЕНИЕ.exe" "%1"

проверено на win7 и winxp, оба успешно получают аргументы.

person kurocat    schedule 05.03.2013