Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何处理联系人应用程序(如Facebook)中的即时消息URL_Ios_Objective C_Custom Url - Fatal编程技术网

Ios 如何处理联系人应用程序(如Facebook)中的即时消息URL

Ios 如何处理联系人应用程序(如Facebook)中的即时消息URL,ios,objective-c,custom-url,Ios,Objective C,Custom Url,我有种感觉这次会很难 在iOS7上,Facebook应用程序可以通过点击任何联系人的IM(即时消息)信息直接从iOS联系人应用程序启动: 显然,这只有在您允许Facebook访问您的联系人时才有效,但我想知道他们是如何做到的? 我知道,它非常适合处理巧尽心思构建的url,但在本例中,将我自己的伪造url(“myapp://gui13@即时通讯联系信息中的“lol.com”)不会触发功能性 我发现只有一种方法可以触发联系人应用程序启动我的应用程序,那就是将我的URL保存到“链接”类型的联系人信息

我有种感觉这次会很难

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

显然,这只有在您允许Facebook访问您的联系人时才有效,但我想知道他们是如何做到的?
我知道,它非常适合处理巧尽心思构建的url,但在本例中,将我自己的伪造url(“myapp://gui13@即时通讯联系信息中的“lol.com”)不会触发功能性

我发现只有一种方法可以触发联系人应用程序启动我的应用程序,那就是将我的URL保存到“链接”类型的联系人信息中。
糟糕的缺点是,此“链接”类型信息未与远程通讯簿同步

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


或者坏消息。。。Facebook是一个受苹果祝福的应用程序,就像推特一样,它使它能够与苹果的应用程序进行这种高级交互?

这是可以实现的。正如您所说,您必须为您的应用程序创建自定义URL方案(如果有人不知道如何创建,请参阅)

现在,您必须向联系人(现有联系人或新联系人)添加
kapersonsocialprofileproperty

为了完整起见,这里详细说明了如何创建联系人并将其添加到通讯录中


希望它能帮助别人。

Facebook很特别。Facebook集成作为iOS6的一部分被添加到设备和Social.framework中。
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 */