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 に答える