5

Viele SO-Fragen wurden bezüglich des Abhörens von iOS-Adressbuchänderungen gestellt. Berühmte Frage Address book sync.Gelöschter Kontakt mit ABAddressBookRegisterExternalChangeCallback oder einer anderen Benachrichtigung

Aber meine Frage ist eng, d. H. Wie können wir erhalten, welche Kontakte gelöscht wurden während der Adressbuch-Synchronisierung Rückruf.

void MyAddressBookExternalChangeCallback (ABAddressBookRef ntificationaddressbook,CFDictionaryRef info,void *context) 
{ 
NSLog(@"Changed Detected......"); 
/* 
    NSDate *lastSyncTime = [self gettingLastSyncTime]; 
    // By above time, I could get which contacts are modified(kABPersonModificationDateProperty) 
    // and which contacts are created newly(ABRecordGetRecordID() 
    // But how can I get this contact was DELETED? 
*/ 
} 

Aber jemand löste dieses Problem in Detect what was changed..... (A) Speichern aller Datensatz-IDs beim ersten Mal. (B) Überprüfen Sie während der Synchronisierung alle gespeicherten Datensatz-IDs mit den aktuellen Adressbuch-IDs, um zu prüfen, ob sie verfügbar sind oder nicht. Wenn nicht, dann nehme man an, dass der Kontakt gelöscht werden soll (kostenintensive Operation).

Meine Frage: Gibt es eine andere Möglichkeit, DELETED Kontakt zu erkennen?

Antwort

1

Soweit ich der einzige Weg, wissen, es zu tun ist, Kontakt-IDs in irgendeiner Weise zu speichern und modifiziert überprüfen, MyAddressBookExternalChangeCallback verursachen wird nur aufgerufen, wenn die App aktiv oder im Hintergrund ist, also, wenn Ihre Anwendung Sie wird beendet würde nicht in der Lage sein, diese Änderungen zu verfolgen. Hier ist meine Implementierung von Adressbuch-Sync-Controller, die nur Ihre lokalen Kontakte mit Geräten aktualisiert:

+0

+1 für Ihre Sachen. Aber ich erwähne bereits einen Link, der mit deiner Antwort identisch ist. Aber ich suche nach einer besseren Antwort. – Mani

Verwandte Themen