Video: iPhone 7 Datenschutz Zugriff auf Kontakte 2025
Das iOS-Framework bietet Funktionen, mit denen Ihre App mit Datenbanken arbeiten kann, die Kommt mit iOS-Geräten. Eine solche Datenbank ist das Adressbuch, , das Personen und deren Kontaktinformationen enthält. iOS-Geräte bieten auch eine Kontakte-App, mit der Benutzer diese Datenbank verwalten können, indem sie neue Kontakte hinzufügen, sie aktualisieren, löschen und so weiter.
Die Informationen in einem Adressbuch sind für andere Apps zugänglich, wenn auch auf kontrollierte Weise. Ihre App kann z. B. Benutzern die Kontakte aus dem Adressbuch präsentieren, ihnen die Auswahl eines Kontakts ermöglichen und dann die Informationen des ausgewählten Kontakts verwenden. Manchmal nutze ich diese Funktion in Tic-Tac-Toe, um mich über meine glorreiche Tic-Tac-Toe-Bewertung per E-Mail an jemanden in meiner Kontaktliste zu freuen.
Um besser zu verstehen, werfen Sie einen Blick auf den Game Session View Controller (TTTGameSessionViewController. M und. H) und folgen Sie ihm. Zunächst verwenden Sie den View-Controller, um das ABPeoplePickerNavigationControllerDelegate-Protokoll zu implementieren, wie hier gezeigt:
@interface TTTGameSessionViewController: UIViewController {…}
Die Methode sendScoresByEmailWithContact (wird als nächstes reproduziert) ist die Aktionsmethode, die den Prozess durch die Angabe der Adresse initiiert. Buchauswahl und Benutzer können den Kontakt auswählen:
- (IBAction) sendScoresByEmailWithContact: (id) Absender {ABPeoplePickerNavigationController * picker = [[c alloc] init]; Pflücker. peoplePickerDelegate = selbst; [self presentViewController: Auswahl animiert: JA Vervollständigung: nil];}
Diese Methode setzt auch ihr Objekt (den Game Session View Controller) als Stellvertreter für den Picker. Wenn die Auswahl einen Eintrag aus dem Adressbuch auswählt, sollte die Delegatmethode ContinuousAfterSelectingPerson aufgerufen werden:
- (BOOL) peoplePickerNavigationController: (ABPeoplePickerNavigationController *) peoplePicker shouldContinueAfterSelectionPerson: (ABRecordRef) selectedPerson {NSString * oneEmail = nil; ABMultiValueRef E-Mails = ABRecordCopyValue (selectedPerson, kABPersonEmailProperty); if (ABMultiValueGetCount (E-Mails)> 0) {oneEmail = (__bridge_transfer NSString *) ABMultiValueCopyValueAtIndex (E-Mails, 0);} CFRelease (E-Mails); [self dismissViewControllerAnimated: JA Vervollständigung: ^ {[self sendScoresByEmailWithAddress: oneEmail];}]; return NO;}
Die E-Mail-Adresse des mit dem Picker ausgewählten Kontakts wird mit der Eigenschaft kABPersonEmailProperty aus der Variable selectedPerson extrahiert. Beachten Sie auch, dass der Kontakt mehrere E-Mails haben kann und nur der erste (bei Index 0 in der extrahierten Liste) verwendet wird.
Als Nächstes wird der Picker-View-Controller mit "dismissViewControllerAnimated" entlassen. Hier kommt der coole Teil: Das Festlegen des Completion-Parameters auf die Methode sendScoresByEmailWithAddress bewirkt, dass diese Methode aufgerufen wird, nachdem die Adressbuch-Auswahl beendet wurde. Dieser Prozess wiederum führt dazu, dass die Mail-App mit der angegebenen Adresse gestartet wird, damit alle Ihre Scores senden können.
Schauen Sie sich schließlich die beiden Methoden bridge_transfer und CFRelease an. Sie sind erforderlich, da die Adressbuch-API nicht in den neuen ARC-Speicherverwaltungsmechanismus (ARC = Automated Reference Counting) integriert ist.