Video: How to find the owner of a lost iPhone using Siri 2024
IOS-rammen indeholder funktioner, der gør det muligt for din app at arbejde med de databaser, der kommer med iOS-enheder. En sådan database er Adressebog, , som omfatter personer og deres kontaktoplysninger. IOS-enheder giver også en kontaktperson-app, der gør det muligt for brugerne at administrere denne database ved at tilføje nye kontakter, ajourføre dem, slette dem og så videre.
Oplysningerne i en adressebog er tilgængelige for andre apps, om end på en kontrolleret måde. For eksempel kan din app præsentere brugere med kontakterne fra adressebogen, tillade dem at vælge en kontakt, og derefter bruge oplysningerne i den valgte kontaktperson. Jeg bruger nogle gange denne funktionalitet i Tic-Tac-Toe til at glatte over min fantastiske Tic-Tac-Toe score via en e-mail til nogen i min kontaktliste.
For bedre at forstå, se kig på Game Session view controller (TTTGameSessionViewController.m og.h) og følg med. For det første bruger du visningscontrolleren til at implementere ABPeoplePickerNavigationControllerDelegate-protokollen som vist her:
@interface TTTGameSessionViewController: UIViewController {…}
Metoden sendScoresByEmailWithContact (gengivet næste) er handlingsmetoden, der starter processen ved at præsentere adressen Book picker og giver brugeren mulighed for at vælge kontakten:
- (IBAction) sendScoresByEmailWithContact: (id) afsender {ABPeoplePickerNavigationController * picker = [[c alloc] init]; picker. peoplePickerDelegate = self; [self presentViewController: picker animeret: JA færdiggørelse: nul];}
Denne metode sætter også sit objekt (Game Session View Controller) som delegeret til plukkeren. Når vælgeren slutter at vælge en post fra adressebogen, skal delegeringsmetoden shouldContinueAfterSelectingPerson kaldes:
- (BOOL) peoplePickerNavigationController: (ABPeoplePickerNavigationController *) peoplePicker shouldContinueAfterSelectingPerson: (ABRecordRef) selectedPerson {NSString * oneEmail = nil; ABMultiValueRef e-mails = ABRecordCopyValue (selectedPerson, kABPersonEmailProperty); hvis (ABMultiValueGetCount (e-mails)> 0) {oneEmail = (__bridge_transfer NSString *) ABMultiValueCopyValueAtIndex (e-mails, 0);} CFRelease (e-mails); [self dismissViewControllerAnimated: JA fuldførelse: ^ {[self sendScoresByEmailWithAddress: oneEmail];}]; returner NEJ;}
E-mailadressen til den kontakt, der vælges ved hjælp af pickeren, udtrækkes fra variablen valgtPerson ved hjælp af ejendommen kABPersonEmailProperty. Bemærk også, at kontakten kan have flere e-mails, og kun den første (ved indeks 0 i den uddragne liste) bruges.
Derefter afvises Picker View-kontrolenheden ved hjælp af dismissViewControllerAnimated. Her kommer den kølige del: Indstilling af færdiggørelsesparameteren til metoden sendScoresByEmailWithAddress forårsager denne metode, der skal kaldes lige efter, at adressebokvælgeren er afvist. Denne proces forårsager igen, at Mail-appen slår op, med adressen udfyldt, klar til at sende dine scoringer.
Endelig se på de to metoder bridge_transfer og CFRelease. De er nødvendige, fordi adressebog-API'et ikke er integreret med den nye automatiske reference counting (ARC) memory management mekanisme.