ios - 如何从 ABAddressBookRegisterExternalChangeCallback 获取更新的联系人列表?

标签 ios cocoa-touch abaddressbook

我正在使用 ABAddressBookRegisterExternalChangeCallback 在 ios 通讯簿联系人更改时获取通知。

如何从回调中获取更新(添加/删除/修改)的联系人列表?我不想再次重新加载我的整个联系人列表。

我似乎无法在文档中的任何地方找到它。谁能指导我,该怎么做?

最佳答案

你不能。您可以做的是,这将为您提供“在给定时间内修改”的联系人列表,例如:

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

关于ios - 如何从 ABAddressBookRegisterExternalChangeCallback 获取更新的联系人列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495621/

相关文章:

objective-c - NSPrivateQueueConcurrencyType 未正确保存

html - UIWebView 获取 HTML 源

ios - 进入 iPhone 应用程序。逆向工程 iPhone 应用程序

ios - 当用户更改联系人访问权限时,iOS 6 中的应用程序崩溃

ios - 请求访问通讯簿时出现MachMessagePort错误

ios - 尝试删除我的 Xcode 项目中的文件时出现 Git 错误

iphone - iOS 应用程序 : lag issue when display a huge amount of small images

ios - 我的 UIButton 无法在触摸时禁用?

ios - 应用程序不要求 iOS 6 上的联系人访问权限

ios - TWTRTweetTableViewCell 无法检测链接 - Fabric TwitterKit