1. Créer une application avec une vue et un bouton▲
Le SDK iOS a rendu vraiment facile l'envoi des courriels à l'aide des API intégrées. En quelques lignes de code, vous pouvez avoir la même interface de courrier électronique que l'application « stock Mail » qui vous permet de composer un courriel. Dans ce tutoriel, nous allons construire une application très simple pour vous montrer comment envoyer à la fois des courriels au format texte et HTML en utilisant le SDK iOS.
Tout d'abord, créons une application simple avec un contrôleur de vues et un bouton. Si vous n'avez aucune idée de comment le faire, il vaut mieux revoir le tutoriel Hello World. Appelons ce projet « SimpleEmail ». Une fois que vous avez créé votre projet, ajoutez un bouton « Contact Us » dans la vue.
Que va faire cette application ? Elle va afficher l'interface mail lorsque l'utilisateur clique sur le bouton « Contact Us ».
2. Associer le bouton « Contact Us » à une action▲
Dans les tutoriels précédents, pour ajouter l'action, nous ajoutions manuellement le code dans le fichier d'en-tête du fichier de contrôleur de vues. Ensuite, il nous suffisait de relier cette action au bouton avec Interface Builder.
Cette fois-ci, laissez-nous vous présenter une autre façon d'ajouter l'action (assurez-vous d'utiliser Xcode 4.3 ou plus).
Dans le navigateur de projet, sélectionnez le fichier « SimpleEmailViewController.xib » pour aller à l'Interface Builder. Basculez vers l'assistant de l'éditeur et masquez la zone utilitaire (Utility) :
Une fois cela fait, votre environnement Xcode devrait ressembler à l'écran ci-dessous. L'interface et son code correspondant sont maintenant affichés côte à côte :
Nous allons maintenant ajouter une action pour le bouton « Contact Us ». Appuyez et maintenez enfoncée la touche « contrôle » (CTRL), cliquez sur le bouton « Contact Us » et faites-le glisser vers « SimpleEmailViewController.h ». Lorsque vous placez la souris entre les mots-clés « @interface » et « @end », vous devriez voir une invite qui vous permet d'insérer la sortie et l'action.
Relâchez le bouton de la souris et Xcode vous invite à ajouter la sortie et l'action. Comme nous allons adjoindre une action, sélectionnez « Action » pour « Connection » et le nom de la méthode « showEmail ». Vous pouvez conserver l'événement « Touch Up Inside ». La méthode « showEmail » sera invoquée lorsque l'utilisateur relâchera son doigt du bouton.
Une fois que vous validez la modification en cliquant sur le bouton « Connect », Xcode ajoute automatiquement la déclaration de la méthode dans le fichier « SimpleEmailViewController.h ».
3. Mettre en place l'interface courriel▲
Ensuite, importez le fichier « MessageUI.h » et implémentez la méthode « MFMailComposeViewControllerDelegate » dans le fichier « SimpleEmailViewController.h ».
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>
@interface SimpleEmailViewController : UIViewController <
MFMailComposeViewControllerDelegate>
// Add the delegate
-
(
IBAction)showEmail:(
id)sender;
@end
Sélectionnez « SimpleEmailViewController.m », nous allons implanter les méthodes « showEmail » et « MFMailComposeViewControllerDelegate ». Ajoutez le code suivant dans le fichier :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
-
(
IBAction)showEmail:(
id)sender {
// Email Subject
NSString *
emailTitle =
@"
Test Email
"
;
// Email Content
NSString *
messageBody =
@"
iOS programming is so fun!
"
;
// To address
NSArray *
toRecipents =
[NSArray arrayWithObject:@"
support@appcoda.com
"
];
MFMailComposeViewController *
mc =
[[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate =
self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:NO];
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL
];
}
-
(
void
) mailComposeController:(
MFMailComposeViewController *
)controller didFinishWithResult:(
MFMailComposeResult)result error:(
NSError *
)error
{
switch
(
result)
{
case
MFMailComposeResultCancelled:
NSLog
(
@"
Mail cancelled
"
);
break
;
case
MFMailComposeResultSaved:
NSLog
(
@"
Mail saved
"
);
break
;
case
MFMailComposeResultSent:
NSLog
(
@"
Mail sent
"
);
break
;
case
MFMailComposeResultFailed:
NSLog
(
@"
Mail sent failure: %@
"
, [error localizedDescription]);
break
;
default
:
break
;
}
// Close the Mail Interface
[self dismissViewControllerAnimated:YES completion:NULL
];
}
Les lignes 3 à 7 de ce code définissent le sujet du courriel, le corps du message ainsi que les destinataires. Les lignes 9 à 13 créent un objet « MFMailComposeViewController ». La classe « MFMailComposeViewController » fournit une interface standard qui gère l'édition et l'envoi d'un courriel. Vous pouvez utiliser cette classe pour afficher un courriel standard dans votre application. Renseignons les champs de cet objet avec les valeurs initiales des destinataires, du sujet et du corps de texte.
La ligne 13 de ce code appelle la méthode « presentViewController » pour afficher l'interface courriel à l'écran.
La méthode « didFinishWithResult » est une méthode du protocole « MFMailComposeViewControllerDelegate ». Cette méthode est appelée automatiquement lorsque l'interface de messagerie est fermée (par exemple, lorsque l'utilisateur annule l'opération). Le résultat retourné est le code de résultat lorsque l'interface de courrier est fermée. Par souci de simplicité, dans cet exemple, nous enregistrons tout simplement ce résultat. Dans une application réelle, vous devriez fournir un traitement spécial pour ce résultat (par exemple, afficher une alerte lorsque l'application ne parvient pas à envoyer le courriel).
Enfin, la ligne 41 referme l'interface mail.
4. Ajout de la bibliothèque MessageUI▲
Ce n'est pas fini. Si vous essayez de compiler l'application, vous obtenez l'erreur de compilation ci-dessous :
Le problème est que Xcode n'a aucune idée de ce qu'est « MFMailComposeViewController ». Bien que « MFMailComposeViewController » soit un contrôleur intégré dans le SDK iOS, il est de la responsabilité du développeur de l'intégrer au projet. Lorsque le projet Xcode est créé, il connaît seulement trois bibliothèques de base, « UIKit », « Fondation » et « CoreGraphics ». « MFMailComposeViewController » étant utilisé dans MessageUI, vous devez l'ajouter manuellement.
Pour corriger l'erreur, nous devons incorporer le fichier dans le projet. Dans le navigateur de projet, sélectionnez le projet « SimpleEmail » puis sélectionnez la cible « SimpleEmail » sous la rubrique « targets ». Cliquez sur « Build Phases » en haut de l'éditeur de projet. Ensuite, ouvrez la section « Link Binary With Libraries ».
Puis cliquez sur le bouton « + » et sélectionnez « MessageUI.framework ». Après avoir cliqué sur le bouton « Add », Xcode ajoute MessageUI dans votre projet.
Maintenant l'erreur devrait être corrigée. Exécutez votre application et vérifiez son bon fonctionnement. L'appui sur le bouton « Contact Us » affiche l'interface « Compose Email » et son contenu prérenseigné.
5. Composer un courriel HTML▲
Jusqu'à maintenant, l'application « SimpleEmail » ne prenait en charge que les courriels au format texte brut. Vous pouvez facilement activer le support HTML en modifiant le paramètre « isHTML » de la méthode "de « setMessageBody » de « N » à « Y ». Modifiez le code de la méthode « showEmail » comme suit :
-
(
IBAction)showEmail:(
id)sender {
// Email Subject
NSString *
emailTitle =
@"
Test Email
"
;
// Email Content
NSString *
messageBody =
@"
<h1>Learning iOS Programming!</h1>
"
; // Change the message body to HTML
// To address
NSArray *
toRecipents =
[NSArray arrayWithObject:@"
support@appcoda.com
"
];
MFMailComposeViewController *
mc =
[[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate =
self;
[mc setSubject:emailTitle];
[mc setMessageBody:messageBody isHTML:YES];
[mc setToRecipients:toRecipents];
// Present mail view controller on screen
[self presentViewController:mc animated:YES completion:NULL
];
}
Compilez et lancez l'application à nouveau. Avec ce simple changement, l'application « SimpleEmai » offre maintenant le support HTML !
Comme toujours, laissez-nous un commentaire et partagez vos idées au sujet de ce tutoriel. Si vous avez des suggestions pour la série iOS programmation 101, n'hésitez pas à nous le faire savoir.
6. Remerciements▲
Nous remercions l'auteur, Simon ng,pour son article. Cet article est une traduction autorisée dont le texte original peut être trouvé sur Appcoda.com. Nous remercions aussi ram-0000 pour sa traduction, Lolo78 pour sa relecture technique ainsi que ced pour sa relecture orthographique.
Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez .