2 Stimmen

Gelöschte Einträge werden nicht erkannt - iOS

Ist es möglich, gelöschte Adressbuch Einträge (zum Beispiel aus dem iOS-Telefonbuch selbst) innerhalb einer Anwendung zu erkennen?

Ich habe eine Anwendung, die eine lokale Kopie der iOS Adressbuch-Datenbank mit dem Adressbuch vom Telefon synchronisieren muss. Die Anwendung unterstützt den Hintergrundmodus auf iOS, der dies unterstützt.

Beim Testen der Anwendung in einer iOS-Umgebung, die den Hintergrund unterstützt, besteht mein Problem darin:
Die Anwendung erkennt einen Eintrag, der im Adressbuch des Systems gelöscht wurde, nicht, bis die Anwendung vollständig geschlossen wird (iOS 4, indem sie mit dem roten X im Springboard beendet wird). Wenn die Anwendung einfach im Hintergrund läuft, ein Kontakt aus dem Adressbuch des Systems gelöscht wird und dann die App wieder in den Vordergrund gebracht wird, gibt die Funktion ABRecordRef() für die gelöschte Eintrags-ID nicht NULL zurück, wie es für einen Eintrag, der nicht mehr existiert, zu erwarten wäre, sondern gibt den Eintrag zurück, als wäre er nie aus der Datenbank des Adressbuchs des Systems entfernt worden.

Wie oben erwähnt - wenn die Anwendung vollständig beendet und neu gestartet wird, funktioniert ABRecordRef() für die gelöschte ID wie erwartet - es gibt NULL zurück. Gibt es eine Möglichkeit, diesen gelöschten Eintrag zu erkennen, ohne auf die Beendigung und den Neustart der App zu warten?

0voto

Marco Punkte 6638

Ja. Registrieren Sie sich für Änderungen im Adressbuch mit ABAddressBookRegisterExternalChangeCallback, z.B.

// Ihre Methode wird aufgerufen, wenn der Benutzer den Zugriff auf seine Adressbuchdaten erlaubt hat.
- (void)accessGrantedForAddressBook
{
    ABAddressBookRegisterExternalChangeCallback(sharedAddressBook, MyAddressBookExternalChangeCallback, (__bridge void *)(self));
}

Wo MyAddressBookExternalChangeCallback Ihre Rückruffunktion ist.

0voto

Ricky Helgesson Punkte 3586

Ich glaube, dass du jedes Mal, wenn du die Daten aus dem Adressbuch aktualisierst, ein neues ABAddressBook erstellen musst. Der Grund dafür ist folgender:

Du könntest Datensätze in deiner Kopie des Adressbuchs hinzugefügt, aktualisiert und entfernt haben, aber noch nicht auf Speichern oder Zurücksetzen geklickt haben. Daher kannst du Änderungen im Adressbuch nicht automatisch erhalten, wenn das System (z.B. die iOS-eigene Kontakt-App) Dinge ändert.

Versuche entweder, auf Zurücksetzen zu klicken, oder das Adressbuch neu zu erstellen, dann sollte es funktionieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X