在我的应用程序中,我将一些数据导出到地址簿以创建一些新的联系人条目。除了 Facebook 和 Twitter 地址之外,我可以毫无问题地导出我想要的所有内容。我完全迷失了这两个。
这是我用来导出确实有效的非 Facebook/Twitter 数据的一些代码:
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)(thePhoneMobile), kABPersonPhoneMobileLabel, NULL);
ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFTypeRef)(thePhoneHome), kABHomeLabel, NULL);
ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone, NULL);
CFRelease(multiPhone);
这是我尝试导出不起作用的 Facbeook 的方法:
ABMutableMultiValueRef multiSocial = ABMultiValueCreateMutable(kABMultiStringPropertyType);
ABMultiValueAddValueAndLabel(multiSocial, (__bridge CFTypeRef)(theFacebook), kABPersonSocialProfileServiceFacebook, NULL);
ABRecordSetValue(newPerson, kABPersonSocialProfileProperty, multiSocial, NULL);
CFRelease(multiSocial);
我哪里错了?
最佳答案
出于某种原因,设置社交配置文件非常棘手,但这是执行此操作所需的代码:
ABMultiValueRef multiSocial = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
ABMultiValueAddValueAndLabel(multiSocial, (__bridge CFTypeRef)([NSDictionary dictionaryWithObjectsAndKeys:(NSString *)kABPersonSocialProfileServiceFacebook, kABPersonSocialProfileServiceKey, theFacebook, kABPersonSocialProfileUsernameKey,nil]), kABPersonSocialProfileServiceFacebook, NULL);
ABRecordSetValue(newPerson, kABPersonSocialProfileProperty, multiSocial, NULL);
根据文档,社交资料是 kABMultiDictionaryPropertyType,而不是 kABMultiStringType。
这也意味着您需要向 multiSocial
添加字典,而不是字符串。该格式对我来说对于字典来说没有意义,所以只要在需要使用时复制和粘贴即可。
然后,您按照之前的方式设置它。
关于ios - 如何在 iOS 中将 Facebook/Twitter 写入地址簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22897007/