2014-01-29 3 views
0

У меня такое чувство, что это будет сложно.Как обращаться с URL-адресом для обмена мгновенными сообщениями из приложения «Контакты» (например, Facebook)

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

enter image description here

Это работает только если вы сможете Facebook, чтобы иметь доступ к вашим контактам, очевидно, но мне интересно, как они это делают?
Я знаю об Custom URL handling, который идеально подходит для обработки специально созданных URL-адресов, но в этом случае мой собственный поддельный URL-адрес («myapp: //[email protected]») в контактной информации чата не вызывает functionnality.

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

Так что мой вопрос: как я могу сказать, IOS, чтобы запустить мое приложение, когда пользователь нажимает на информацию IM в контактное приложение.?

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

+1

Facebook особенный. Интеграция с Facebook была добавлена ​​как часть iOS6, как на устройстве, так и в Social.framework. –

ответ

0

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

Теперь вы должны добавить 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 */ 

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

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