監聽通訊錄變更
客戶端代碼需要這麼實現:
/*
移除注冊函數
*/
-(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到前台的時候收到延遲的通知。