Как обрабатывать URL-адрес обмена мгновенными сообщениями из приложения "Контакты" (например, Facebook)

У меня такое чувство, что это будет сложно.

В iOS7 приложение Facebook может быть запущено непосредственно из приложения iOS Contact, щелкнув информацию IM (обмен мгновенными сообщениями) любого контакта:

введите описание изображения здесь

Это работает, только если вы разрешите Facebook доступ к вашим контактам, очевидно, но мне интересно, как они это делают?
Я знаю о Обработка настраиваемых URL-адресов, которая идеально подходит для обработки специально созданных URL-адресов, но в данном случае для размещения моего собственного поддельного URL-адреса (" myapp: // gui13 @ lol.com ") в чате контактная информация не активирует эту функцию.

Я обнаружил, что есть только один способ, который запускает мое приложение из приложения «Контакт», а именно сохранение моего URL-адреса в виде информации о контакте типа «ссылка».
Плохой недостаток заключается в том, что этот тип «ссылка» информация не синхронизируется с удаленными адресными книгами ...

Итак, мой вопрос: как я могу сказать iOS запускать мое приложение, когда пользователь щелкает информацию IM в приложении «Контакты»?

Или плохие новости ... Facebook - это приложение, одобренное Apple, как и Twitter, которое позволяет ему иметь такое расширенное взаимодействие с приложениями Apple?


person Gui13    schedule 29.01.2014    source источник
comment
Facebook особенный. Интеграция с Facebook была добавлена ​​как часть iOS6 как на устройстве, так и в Social.framework.   -  person Brian Nickel♦    schedule 29.01.2014


Ответы (1)


Этого можно добиться. Как вы сказали, вам нужно создать собственную схему URL-адресов для своего приложения (если кто-то не знает, как это сделать, вот руководство).

Теперь вам нужно добавить kABPersonSocialProfileProperty в свой контакт (существующий или новый).

ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, nil);
ABRecordRef contact = ABPersonCreate();

/* implement standard contact info */
/* the social part below */

ABMultiValueRef social = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
ABMultiValueAddValueAndLabel(social, (__bridge CFTypeRef)([NSDictionary dictionaryWithObjectsAndKeys:
                                                           @"your app service name ", kABPersonSocialProfileServiceKey, //will be visible in contact
                                                           @"contact firstname / lastname / identifier", kABPersonSocialProfileUsernameKey, //will be visible in contact
                                                           @"your app custom url scheme", kABPersonSocialProfileURLKey, //url which will be open onclick event
                                                           nil]), (__bridge CFStringRef)@"your app special identifier", NULL); //to know to which app this social belongs to. I believe it is for search purposes

ABRecordSetValue(contact, kABPersonSocialProfileProperty, social, NULL);
CFRelease(social);

/* save contact */

Для полноты картины предлагается руководство, в котором подробно объясняется, как создавать и добавить контакт в адресную книгу.

Надеюсь, это кому-то поможет.

person Neru    schedule 13.08.2014