Vidéo: Configurer boite e-mail sur iPhone et iPad 2025
Le framework iOS fournit des fonctions permettant à votre application de fonctionner avec les bases de données venir avec des appareils iOS. L'une de ces bases de données est le carnet d'adresses, , qui inclut les personnes et leurs coordonnées. Les appareils iOS proposent également une application Contacts qui permet aux utilisateurs de gérer cette base de données en ajoutant de nouveaux contacts, en les mettant à jour, en les supprimant, etc.
Les informations d'un carnet d'adresses sont accessibles à d'autres applications, mais de manière contrôlée. Par exemple, votre application peut présenter aux utilisateurs les contacts du carnet d'adresses, leur permettre de sélectionner un contact, puis utiliser les informations du contact sélectionné. J'utilise parfois cette fonctionnalité dans Tic-Tac-Toe pour jubiler sur mon score glorieux Tic-Tac-Toe via un e-mail à quelqu'un dans ma liste de contacts.
Pour mieux comprendre, jetez un coup d'œil au contrôleur de vue de session de jeu (TTTGameSessionViewController. M et.h) et suivez. D'abord, vous utilisez le contrôleur de vue pour implémenter le protocole ABPeoplePickerNavigationControllerDelegate, comme indiqué ici:
@interface TTTGameSessionViewController: UIViewController {…}
La méthode sendScoresByEmailWithContact (reproduite ensuite) est la méthode d'action qui lance le processus en présentant l'adresse Book booker et permettant à l'utilisateur de sélectionner le contact:
- (IBAction) sendScoresByEmailWithContact: (id) expéditeur {ABPeoplePickerNavigationController * picker = [[c alloc] init]; cueilleur. peoplePickerDelegate = self; [self presentViewController: sélecteur animé: YES achèvement: nil];}
Cette méthode définit également son objet (le contrôleur de vue de session de jeu) en tant que délégué pour le sélecteur. Lorsque le sélecteur a fini de sélectionner une entrée dans le carnet d'adresses, la méthode déléguée shouldContinueAfterSelectingPerson est appelée:
- (BOOL) peoplePickerNavigationController: (ABPeoplePickerNavigationController *) peoplePicker shouldContinueAfterSelectingPerson: (ABRecordRef) selectedPerson {NSString * unEmail = nil; ABMultiValueRef emails = ABRecordCopyValue (selectedPerson, kABPersonEmailProperty); if (ABMultiValueGetCount (emails)> 0) {oneEmail = (__bridge_transfer NSString *) ABMultiValueCopyValueAtIndex (emails, 0);} CFRelease (emails); [self dismissViewControllerAnimated: OUI achèvement: ^ {[self sendScoresByEmailWithAddress: oneEmail];}]; return NO;}
L'adresse e-mail du contact sélectionné à l'aide du sélecteur est extraite de la variable selectedPerson à l'aide de la propriété kABPersonEmailProperty. Notez également que le contact peut avoir plusieurs e-mails, et seul le premier (à l'index 0 dans la liste extraite) est utilisé.
Ensuite, le contrôleur de vue Sélecteur est ignoré à l'aide de la commande dismissViewControllerAnimated. Voici la partie cool: Définir le paramètre d'achèvement à la méthode sendScoresByEmailWithAddress provoque l'appel de cette méthode juste après le retrait du sélecteur de carnet d'adresses. Ce processus, à son tour, provoque l'exécution de l'application Mail, avec l'adresse renseignée, prête à envoyer vos scores.
Enfin, regardez les deux méthodes bridge_transfer et CFRelease. Ils sont nécessaires car l'API Address Book n'est pas intégrée au nouveau mécanisme de gestion de mémoire ARC (Automated Reference Counting).
