0

我有一种感觉,这会很难。

在 iOS7 上,Facebook 应用程序可以直接从 iOS 联系人应用程序启动,方法是单击任何联系人的 IM(即时消息)信息:

在此处输入图像描述

显然,这仅在您启用 Facebook 访问您的联系人时才有效,但我想知道他们是如何做到的?
我知道自定义 URL 处理,它非常适合处理特制 URL,但在这种情况下,将我自己的伪造 URL(“myapp://gui13@lol.com”)放入 IM 联系信息不会触发功能性。

我发现只有一种方法可以触发从联系人应用程序启动我的应用程序,即将我的 URL 保存到有关联系人的“链接”类型信息中。
坏的缺点是这个“链接”类型的信息没有与远程地址簿同步......

所以我的问题是:当用户单击联系人应用程序中的 IM 信息时,我如何告诉 iOS 启动我的应用程序?

或者是坏消息……Facebook 是 Apple 祝福的应用程序,就像 Twitter 一样,使它能够与 Apple 的应用程序进行这种高级交互?

4

1 回答 1

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 */

为了完整起见,这里是教程,它深入解释了如何创建联系人并将其添加到地址簿。

希望它会帮助某人。

于 2014-08-13T09:30:33.283 回答