監(jiān)聽手機(jī)通訊錄的變化減少每次進(jìn)入程序重新獲取通訊錄信息。主要使用了AddressBook和CNContact來(lái)完成
有兩種實(shí)現(xiàn)方式:
1.使用框架AddressBook
//監(jiān)聽通訊錄變化
void addressBookChanged(ABAddressBookRef addressBook, CFDictionaryRef info, void *context)
{
NSLog(@"AddressBook Changed");
// VC1 *myVC = (__bridge VC1 *)context;
// [myVC getPersonOutOfAddressBook];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
ABAddressBookRef addresBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRegisterExternalChangeCallback(addresBook, addressBookChanged, (__bridge void *)(self.viewcontrller));
}
```
調(diào)用此方法需要放在-application:didFinishLaunchingWithOptions:
2.使用CNContact框架,
**Obj-C code:**
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(addressBookDidChange:) name:CNContactStoreDidChangeNotification object:nil];
然后
-(void)addressBookDidChange:(NSNotification*)notification{
}
**Swift code:**
NSNotificationCenter.defaultCenter().addObserver( self, selector: "addressBookDidChange:", name: CNContactStoreDidChangeNotification, object: nil)
然后
@objc func addressBookDidChange(notification: NSNotification){
}