如何在IOS中的联系人更改事件中获得通知?

如何在IOS中的联系人更改事件中获得通知?,ios,swift,Ios,Swift,我想在iPhone联系人发生插入/更新事件时得到通知 是否可以向我的应用程序获取有关发生特定联系人更改事件的通知 只是个新手。。。对于IOS Swift 我并不期待完整的源代码。只是想知道它是否可能,也想暗示一下 提前感谢。您可以实现KeyValue observevalueforkeypath

我想在iPhone联系人发生插入/更新事件时得到通知

是否可以向我的应用程序获取有关发生特定联系人更改事件的通知

只是个新手。。。对于IOS Swift

我并不期待完整的源代码。只是想知道它是否可能,也想暗示一下


提前感谢。

您可以实现
KeyValue observevalueforkeypath
以获得有关所选元素在iOS中状态更改的通知。

可以使用-

注册外部更改回调通知程序-

ABAddressBookRef ntificationaddressbook = ABAddressBookCreate();
    ABAddressBookRegisterExternalChangeCallback(ntificationaddressbook, MyAddressBookExternalChangeCallback, self);
执行回调-

void MyAddressBookExternalChangeCallback (ABAddressBookRef ntificationaddressbook,CFDictionaryRef info,void *context)
{
    // called when there is any change in AddressBook
}
有关更多详细信息,请参阅此链接-


在iOS 9中,您可以注册您的类以观察CNContactStoreDidChangeNotification

然后:

@objc func addressBookDidChange(notification: NSNotification){     
    //Handle event here...
}
如报告所述

成功执行保存后,联系人存储将发布 CNContactStoreDidChangeNotification通知为默认值 通知中心。如果缓存任何联系人框架对象 需要通过这些对象的标识符或使用 最初用于获取它们的谓词,然后 释放缓存的对象。请注意,缓存对象是过时的,但是 不是无效的

编辑:


请注意,现在不推荐使用通讯簿和通讯簿UI框架。

KVO和NSNotification都是您的解决方案。看到这些,@iphone thankx得到了非常好的答案@SanjayMohnani!!!我正在尝试将其转换为swift 2.0,但无法正确执行。请您在swift 2.0中发布相同的消息,即使联系人中没有任何更改,我也会收到通知。如果我只是打开系统联系人并切换到我的应用程序,我会收到通知,而不仅仅是一个,而是两个或三个,它会通知吗?如果我们关闭应用程序并更改地址簿中的某些内容。在应用程序被关闭且联系人被更改时,打开应用程序againit不会发出通知,然后打开应用程序。有人找到解决方案吗?即使应用程序被关闭且联系人被更改为Whatsapp所做的操作?
@objc func addressBookDidChange(notification: NSNotification){     
    //Handle event here...
}