2

ABAddressBookRegisterExternalChangeCallbackiOSアドレス帳の連絡先が変更されたときに通知を受け取るために使用しています。

コールバックから更新された (追加/削除/変更された) 連絡先のリストを取得するにはどうすればよいですか? 連絡先のリスト全体を再度リロードしたくありません。

ドキュメントのどこにも見つからないようです。誰でも私を導くことができますか、これを行う方法は?

4

1 に答える 1

3

できません。あなたができることは、これにより、「指定された時間内に変更された」連絡先のリストが表示されます。例:

void MyAddressBookExternalChangeCallback (ABAddressBookRef notifyAddressBook,CFDictionaryRef info,void *context)
{        
    //The addressbook object get's updated.


    CFArrayRef peopleRefs = ABAddressBookCopyArrayOfAllPeopleInSource(notifyAddressBook, kABSourceTypeLocal);



    ABAddressBookRevert(notifyAddressBook);

    CFIndex count = CFArrayGetCount(peopleRefs);

    for (CFIndex i=0; i < count; i++) {
        ABRecordRef ref = CFArrayGetValueAtIndex(peopleRefs, i);
        NSDate* datemod = (__bridge_transfer NSDate *)(ABRecordCopyValue(ref, kABPersonModificationDateProperty));


        NSTimeInterval distanceBetweenDates = [[NSDate date] timeIntervalSinceDate:datemod];

        int seconds = round(distanceBetweenDates);

        if(seconds < 60){

            ABCPerson * person = [[ABCFacade sharedABCFacade] convertABRecordRef:ref];
            NSLog(@"modifactiondate: %@", [person modificationdate]);

            [[ABCFacade sharedABCFacade] replacePersonInPersonListWithPerson:person];

        }
    }


    NSLog(@"Yes it does get called by this change %@", context);

    [[ABCFacade sharedABCFacade] ABRefresh];   
}
于 2013-03-19T13:58:09.717 に答える