这是我的代码,我正在appDelegate中的viewDidLoadwithoptins中注册通知。
NotificationCenter.default.addObserver(
self, selector: #selector(contactStoreDidChange), name: .CNContactStoreDidChange, object: nil)
这是我的功能
@objc func contactStoreDidChange(notification: NSNotification) {
print("Contacts Changed")
UserDefaults.standard.set("Log Changed (Date())", forKey: "contact")
}
我没有收到任何通知。我试过用真实的设备和模拟器。
据我观察,只有当我们在应用程序中至少使用一次CNContactStore
时,才会调用此通知。因此,请转到您的屏幕,在那里您的联系人至少会被提取一次。
所以基本上
let store = CNContactStore()
store.requestAccess(for: .contacts) { (status, error) in
}
上面的代码段应该执行一次
然后转到"联系人"应用程序,使您的应用程序进入后台,更改联系人,然后返回您的应用。您将看到此通知被解雇。
还要确保在某个一直存在的类中添加观察者,如AppDelegate
。