Как общаться между двумя приложениями - PullRequest
1 голос
/ 16 декабря 2010

У меня есть два приложения (одно на самом деле является панелью настроек), и мне нужно, чтобы они общались; если быть более точным, мне нужна панель настроек, чтобы запросить у приложения информацию, запущено ли оно. Так что мне нужно:
-(BOOL) isApplicationRunning:(NSString*)pathToApplication;<br> -(NSDictionary*) returnSomeDInfoForMe:(NSString*)pathToApplication;
Есть идеи, как это можно сделать?

ТИА, Орен

Ответы [ 6 ]

2 голосов
/ 16 декабря 2010

Попробуйте NSDistributedNotificationCenter - используя его, вы сможете отправлять словари между двумя приложениями

0 голосов
/ 16 февраля 2011
0 голосов
/ 16 декабря 2010

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

Короткая версия: Ваши приложения могут вызывать друг друга по пользовательским URL-адресам. URL-адрес может содержать аргументы строки запроса, как и любой другой URL-адрес, поэтому вы можете передавать строки состояния или короткие команды и т. Д.

0 голосов
/ 16 декабря 2010

Приложения для iPhone с одинаковым идентификатором пакета имеют доступ к цепочке ключей sMe.Таким образом, вы можете записать данные из app1 в связку ключей, а затем получить к ним доступ из app2.Вам нужно было бы выполнить интеллектуальное обновление цепочки для ключей, чтобы сохранить флаги, когда другое приложение открыто, с помощью правильных методов делегирования приложения, но это должно быть возможно.

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

Ссылка на документы цепочки для ключей:

http://developer.apple.com/library/mac/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html

0 голосов
/ 16 декабря 2010

Если нужно узнать, запущено ли определенное приложение:

: <10.6 NSWorkspace -> launchApplications

:> 10.6 NSRunningApplication -> runningApplication

НаMac, конечно.

Используя IOS, я бы, вероятно, сделал это вручную и использовал NSNotificationCenter.Т.е. напишите куда-нибудь файл состояния, отметив, что приложение работает, когда преф-панель хочет проверить, запущено ли приложение.Если приложение не отвечает на уведомление, файл состояния не записывается, поэтому можно предположить, что он не запущен.

0 голосов
/ 16 декабря 2010

Вы не можете получить доступ к данным одного приложения из другого. Возможно, вы могли бы общаться с сервером во время его работы в фоновом режиме, а затем использовать его в качестве посредника, но тем не менее это будет грязная работа!

...