2015-03-23 21 views
5

Desidero ricevere una notifica quando è presente un evento di inserimento/aggiornamento nei contatti di iPhone.Come ricevere la notifica a contatto evento modificato in IOS?

È possibile ricevere notifiche sulla mia app in merito a un evento di contatto specifico modificato?

Solo un principiante ... per IOS Swift.

Non mi aspetto un codice sorgente completo. Vuole solo sapere se è possibile o no e anche suggerire.

Grazie in anticipo.

+0

KVO e NSNotification entrambi sono la soluzione per voi. Vedi questi http://nshipster.com/nsnotification-and-nsnotificationcenter/ e http://www.appcoda.com/understanding-key-value-observing-coding/ – iphonic

+0

@ grazie thankx ha ricevuto l'idea –

risposta

6

In iOS potrebbe essere fatto utilizzando -

registrare la chiamata cambiamento esterno indietro notifier-

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

Implementare la richiamata -

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

Per maggiori dettagli si può fare riferimento questo link-

Detect what was changed from ABAddressBookRegisterExternalChangeCallback

+0

Molto bene la risposta @SanjayMohnani !!! Sto provando a convertire questo a swift 2.0 ma non in grado di farlo correttamente. Potresti postare lo stesso da swift 2.0 –

0

È possibile implementare KeyValue Observersobservevalueforkeypath a ricevere la notifica di modifica dello stato degli elementi selezionati

17

Da iOS 9 è possibile registrare la classe di osservare CNContactStoreDidChangeNotification

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

E poi:

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

come riportato in Contacts Framework Reference

dopo la parata viene eseguita con successo, i contatti negozio messaggi di notifica CNContactStoreDidChangeNotification al centro di notifica di default . Se si memorizza nella cache qualsiasi oggetto framework Contatti, è necessario aggiornare nuovamente tali oggetti, tramite i relativi identificatori, o con per i predicati utilizzati inizialmente per recuperarli, quindi rilasciare gli oggetti memorizzati nella cache. Si noti che gli oggetti memorizzati nella cache sono obsoleti, ma non è valido.

EDIT:

Si noti che e Rubrica framework di interfaccia utente Prenota ora sono deprecati.

+1

Ho ricevuto la notifica anche quando nulla in Contatti è cambiato. Se apro i contatti di sistema e passo alla mia app, ho ricevuto la notifica, e non solo uno, ma due o tre – jiawen

+1

Notifica? Se uccidiamo l'app e cambiamo qualcosa nella rubrica, apri nuovamente l'app –

Problemi correlati