2
我使用ABAddressBookRegisterExternalChangeCallback
在ios地址簿聯繫人更改時收到通知。如何從ABAddressBookRegisterExternalChangeCallback獲取更新的聯繫人列表?
如何從回調中獲取更新(添加/刪除/修改)聯繫人列表?我不想重新加載我的整個聯繫人列表。
我似乎無法在文檔中的任何地方找到它。任何人都可以指導我,如何做到這一點?
我使用ABAddressBookRegisterExternalChangeCallback
在ios地址簿聯繫人更改時收到通知。如何從ABAddressBookRegisterExternalChangeCallback獲取更新的聯繫人列表?
如何從回調中獲取更新(添加/刪除/修改)聯繫人列表?我不想重新加載我的整個聯繫人列表。
我似乎無法在文檔中的任何地方找到它。任何人都可以指導我,如何做到這一點?
你不能。你可以做的是,這將給你一個「在給定時間內修改」的聯繫人列表,例如:
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];
}
我想這是唯一的方法。謝謝。 – wjheng 2013-03-20 01:43:58