Как получить уведомление в контакте изменилось событие в IOS?
Я хочу получать уведомления о событиях вставки / обновления контактов iPhone.
Можно ли получить уведомление для моего приложения о том, что произошло конкретное изменение контакта?
Просто новичок... для IOS Swift.
Я не ожидаю полного исходного кода. Просто хочет узнать, возможно ли это или нет, а также намекнуть.
Заранее спасибо.
3 ответа
В iOS это можно сделать с помощью -
Зарегистрировать уведомление об изменении внешнего обратного вызова
ABAddressBookRef ntificationaddressbook = ABAddressBookCreate();
ABAddressBookRegisterExternalChangeCallback(ntificationaddressbook, MyAddressBookExternalChangeCallback, self);
Реализовать обратный звонок -
void MyAddressBookExternalChangeCallback (ABAddressBookRef ntificationaddressbook,CFDictionaryRef info,void *context)
{
// called when there is any change in AddressBook
}
Для более подробной информации вы можете обратиться по этой ссылке
Определить, что было изменено из ABAddressBookRegisterExternalChangeCallback
С iOS 9 вы можете зарегистрировать свой класс, чтобы наблюдать CNContactStoreDidChangeNotification
NSNotificationCenter.defaultCenter().addObserver(
self,
selector: #selector(addressBookDidChange),
name: NSNotification.Name.CNContactStoreDidChange,
object: nil)
А потом:
@objc func addressBookDidChange(notification: NSNotification){
//Handle event here...
}
как сообщается в Contact Framework Reference
После успешного выполнения сохранения хранилище контактов отправляет уведомление CNContactStoreDidChangeNotification в центр уведомлений по умолчанию. Если вы кэшируете какие-либо объекты каркаса контактов, вам необходимо повторно получить эти объекты либо по их идентификаторам, либо по предикатам, которые использовались для их первоначального извлечения, а затем освободить кэшированные объекты. Обратите внимание, что кэшированные объекты устарели, но не являются недействительными.
РЕДАКТИРОВАТЬ:
Обратите внимание, что платформы адресной книги и адресной книги теперь устарели.
Вы можете реализовать KeyValue Observers
observevalueforkeypath
получать уведомления об изменении статуса выбранных элементов