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

时间:2015-03-23 11:02:28

标签: ios swift

我希望在iPhone的联系人有插入/更新事件时收到通知。

是否可以通过我的应用获取有关特定联系人更改事件的通知?

对于IOS Swift来说,只是一个新手......

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

提前致谢。

3 个答案:

答案 0 :(得分:25)

从iOS 9开始,您可以注册课程以观察 CNContactStoreDidChangeNotification

NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: #selector(addressBookDidChange),
    name: NSNotification.Name.CNContactStoreDidChange,
    object: nil)

然后:

@objc func addressBookDidChange(notification: NSNotification){     
    //Handle event here...
}

报告Contacts Framework Reference

  

成功执行保存后,联系人存储会发布一个   CNContactStoreDidChangeNotification通知为默认值   通知中心。如果您缓存任何Contacts框架对象   需要通过标识符或使用标记来重新获取这些对象   用于最初获取它们的谓词,然后   释放缓存的对象。请注意,缓存的对象是陈旧的,但是   没有效果。

修改

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

答案 1 :(得分:7)

在iOS中,可以使用 -

完成

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

ABAddressBookRef ntificationaddressbook = ABAddressBookCreate();
    ABAddressBookRegisterExternalChangeCallback(ntificationaddressbook, MyAddressBookExternalChangeCallback, self);

实施回电 -

void MyAddressBookExternalChangeCallback (ABAddressBookRef ntificationaddressbook,CFDictionaryRef info,void *context)
{
    // called when there is any change in AddressBook
}

有关详细信息,请参阅此链接 -

Detect what was changed from ABAddressBookRegisterExternalChangeCallback

答案 2 :(得分:0)

您可以实施KeyValue Observers observevalueforkeypath以获取所选元素状态更改的通知