监听通讯录变更
客户端代码需要这么实现:
/*
移除注册函数
*/
-(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到前台的时候收到延迟的通知。
原文地址:http://blog.csdn.net/hherima/article/details/38740745