Задача C получить данные из другого приложения - PullRequest
1 голос
/ 14 апреля 2011

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

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

В первом приложении:

  • Идентификатор URL: com.mycompany.myfirstapp
  • Схемы URL сначалаitem: myFirstApp

Во втором приложении:

  • Идентификатор URL: com.mycompany.mysecondapp
  • Схемы URL первый элемент: mySecondApp

Затем в первом приложении, например, в IBAction кнопки:

[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mySecondApp://pleaseGenerateNumber"]];

Во втором приложении мне нужно реализовать метод

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

и

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

метод.Затем проанализируйте URL и выполните генерацию номера.Но проблема здесь.Как я могу «сказать» первому приложению номер, сгенерированный первым приложением?Я должен снова использовать openURL, и получить номер через URL?

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Доступно в iOS4.2, для передачи данных из одного приложения в другое по схеме вы можете использовать UIApplicationDelegate метод протокола

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
       sourceApplication:(NSString *)sourceApplication 
       annotation:(id)annotation

Из документов annotation это:

Объект списка свойств, предоставленный исходным приложением для передачи информации принимающему приложению.

РЕДАКТИРОВАТЬ: оказывается, что вы можете использовать аннотацию под iOS 3.2;application:DidFinishLaunchingWithOptions: допускает использование ключа аннотации в словаре опций.

0 голосов
/ 14 апреля 2011

Для максимальной совместимости (iOS 3+), да, вам придется снова использовать openURL, передавая число обратно в качестве параметра URL.Чтобы повторно использовать предоставленный системой код синтаксического анализа URL, убедитесь, что ваш формат URL соответствует шаблону HTTP:

схема: // kinda-host / kinda-path? Params

Рассмотрите возможность использования kinda-hostв качестве кода команды и передачи данных в виде пути и / или параметров;таким образом, вы можете расширить свой протокол связи без введения дополнительных схем URL.

Да, это ужасно.Такова iOS.

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