Переводя какао на прикосновение какао - - PullRequest
2 голосов
/ 09 марта 2012

Я работал над SNRLastFMEngine последние пару часов, что делает его дружественным к iOS, но зашел в тупик.Моя проблема в одной единственной функции, которая, кажется, использует функции, доступные только в приложениях какао для Mac OS.

Функция ниже:

- (void)_registerCustomURLSchemeHandler
{
    // Register for Apple Events
    NSAppleEventManager *em = [NSAppleEventManager sharedAppleEventManager];
    [em setEventHandler:self andSelector:@selector(getURL:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];
    // Set Sonora as the default handler
    NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
    LSSetDefaultHandlerForURLScheme((CFStringRef)kCustomURLScheme, (CFStringRef)bundleID);
}

, где kCustomURLScheme предопределено NSString

, который затем обрабатывается функцией: - (void)getURL:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent

Я думал о добавлении наблюдателя NSNotification для обработки события, но мне не повезло (это не 'Я не могу распознать класс события или идентификатор события, и я не знаю, что делать для учета LSSetDefaultHandlerForURLScheme).У меня нет опыта работы с приложениями для Mac OS, и я уверен, что мне не хватает общей картины.Я был бы очень признателен за помощь / руководство от любого, кто владеет обоими языками.

1 Ответ

4 голосов
/ 09 марта 2012

В iOS вы не можете динамически зарегистрировать схему URL в системе во время выполнения.

Вы сообщаете iOS, что ваше приложение может обрабатывать схему URL, перечисляя ее в файле Info.plist с помощьюСвойство CFBundleURLTypes.(Который может отображаться в Xcode-файле как «Типы URL»).

Это означает, что ваш список поддерживаемых схем предварительно объявляется при отправке приложения и не может измениться, если вы не отправитеболее новая версия приложения.Попытка изменить файл Info.plist не будет работать, так как это нарушит подпись файла, и iOS откажется его запускать.

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