监听通讯录变更
客户端代码需要这么实现:
/* 移除注册函数 */ -(void)dealloc{ ABAddressBookUnregisterExternalChangeCallback(_addressBook, ContactsChangeCallback, nil); } /* 注册回调函数 */ - (id)init { self = [super init]; [self addressBookHandle]; ABAddressBookRegisterExternalChangeCallback(_addressBook, ContactsChangeCallback, nil); return self; } /* 回调函数,实现自己的逻辑。 */ void ContactsChangeCallback (ABAddressBookRef addressBook, CFDictionaryRef info, void *context){ NSLog(@"ContactsChangeCallback"); }
_addressBook是通讯录句柄
监听规则:
当App活跃(前台+后台包活期间)的时候,当通讯录修改的时候,会收到通知
当App不活跃的时候(挂起的时候),App收不到通知;而是,当App到前台的时候收到延迟的通知。