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