1

我想从我的应用程序中的用户配置文件中加载信息到 iPhone 电话簿/联系人列表中。

我的应用程序有用户资料,其中包含有关他们所代表的人的各种属性,例如他们的电话号码、姓名、学校、教育水平、电子邮件地址、照片、他们所做的事情的摘要、他们的兴趣等。

我想做的是让另一个用户能够从这个配置文件页面中提取(单击)联系人属性,以便将其导入到 iPhone 联系人列表中。

例如,如果我喜欢 UserA,并且想将她添加到我的 iPhone 联系人列表中,我可以单击“添加到联系人”,然后导入 UserA 的所有相关个人资料信息(电话号码、电子邮件地址、街道地址、URL、照片等)并在我的 iPhone 电话簿中创建 UserA 作为新联系人。

这可以使用 iphone 的 abpeoplepicker api 吗?如果是这样,我该如何执行此操作(我在哪里可以参考适当的文档),以及可能的限制/约束/标准是什么?

4

1 回答 1

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];

}
于 2013-02-12T21:01:01.987 回答