美文网首页iOS即时通讯
iOS通讯录数据变化监听

iOS通讯录数据变化监听

作者: Ylang | 来源:发表于2015-11-24 15:56 被阅读2138次

监听手机通讯录的变化减少每次进入程序重新获取通讯录信息。主要使用了AddressBookCNContact来完成
有两种实现方式:
1.使用框架AddressBook

//监听通讯录变化
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));
}
    ```
调用此方法需要放在-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){
}

相关文章

网友评论

  • 肆意二货:如果我没有启动这个app,然后我做了本地缓存,我可以监听到手机通讯录改变了么?
  • 小咸鱼的生活:在项目里监听到通讯录发生改变,软件中显示的有通讯录,在刷新这个通讯录的同时做其他操作的时候会卡在那里,有没有好的办法解决啊

本文标题:iOS通讯录数据变化监听

本文链接:https://www.haomeiwen.com/subject/osbrhttx.html