【问题标题】:Extracting contact variables from profile page (phone #, email address, photo) to iOS Phonebook Contact List从个人资料页面(电话号码、电子邮件地址、照片)中提取联系人变量到 iOS 电话簿联系人列表
【发布时间】:2013-02-12 19:31:58
【问题描述】:
我想从我的应用程序中的用户配置文件中加载信息到 iPhone 电话簿/联系人列表中。
我的应用有用户个人资料,其中包含有关他们所代表的人的各种属性,例如他们的电话号码、姓名、学校、教育程度、电子邮件地址、照片、他们的工作摘要、他们的兴趣等。
我想做的是让另一个用户能够从该个人资料页面中提取(单击)联系人属性,以便将其导入到 iPhone 联系人列表中。
例如,如果我喜欢 UserA,并且想将她添加到我的 iPhone 联系人列表中,我可以单击“添加到联系人”,然后导入 UserA 的所有相关个人资料信息(电话号码、电子邮件地址、街道地址、URL、照片等)并在我的 iPhone 电话簿中创建 UserA 作为新联系人。
这可能使用 iphone 的 abpeoplepicker api 吗?如果是这样,我该如何执行此操作(我在哪里可以参考适当的文档),以及可以执行此操作的限制/约束/标准是什么?
【问题讨论】:
标签:
iphone
ios
objective-c
abpeoplepickerview
【解决方案1】:
框架:
#import "AddressBook/AddressBook.h"
代码:
- (void) getLocalContacts
{
ABAddressBookRef addressBook = ABAddressBookCreate( );
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople( addressBook );
CFIndex nPeople = ABAddressBookGetPersonCount( addressBook );
User *user;
NSMutableArray *allContacts = [[NSMutableArray alloc] init];
for ( int i = 0; i < nPeople; i++ )
{
ABRecordRef person = CFArrayGetValueAtIndex( allPeople, i );
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
if(ABMultiValueGetCount(emails) != 0)
{
user = [[User alloc] init];
CFStringRef fName, lName;
fName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
lName = ABRecordCopyValue(person, kABPersonLastNameProperty);
CFStringRef email = ABMultiValueCopyValueAtIndex(emails, 0);
NSData *imgData = (NSData *)ABPersonCopyImageData(person);
NSString *firstName = (NSString *) fName;
NSString *lastName = (NSString *) lName;
if (firstName.length == 0 && lastName.length != 0){
user.userName = lastName;
}
else if (firstName.length != 0 && lastName.length == 0){
user.userName = firstName;
}
else if (firstName.length == 0 && lastName.length == 0){
user.userName = @"";
}
else if (firstName.length != 0 && lastName.length != 0){
user.userName = [NSString stringWithFormat:@"%@ %@", firstName, lastName];
}
//user.firstName = (NSString *) firstName;
user.lastName = @"";
user.email = (NSString *) email;
user.firstName = (NSString *) email;
user.localImage = [UIImage imageWithData:imgData];
[allContacts addObject:user];
[user release];
}
}
[DataManager sharedManager].allLocalUsers = allContacts;
[self hideSpinner];
}