Dans ce tutoriel sur le SDK iOS, je vais vous montrer comment autoriser vos utilisateurs à envoyer des courriers électroniques sans quitter votre application à l'aide de la classe MFMailComposeViewController. Nous allons configurer un modèle de courrier électronique avec les destinataires, un objet, un corps de texte et même une pièce jointe..
Le SDK iOS fournit une interface standard facile à utiliser pour permettre à vos utilisateurs d'envoyer et de modifier des messages électroniques à partir de votre propre application. Pour ce faire, vous devrez utiliser le MFMailComposeViewController
classe. Ce contrôleur de vue affiche une interface de messagerie standard et fournit également la fonctionnalité permettant de répondre aux événements utilisateur exécutés sur cette interface. Par exemple, la classe vous informera si l'utilisateur clique sur "envoyer" ou "annuler".
Remarque: MFMailComposeViewController est uniquement disponible sur iOS 3.0 ou version ultérieure..
Alors, comment ça marche? Suivez les étapes de ce tutoriel pour le savoir.
Ouvrez Xcode et sélectionnez? Créer un nouveau projet Xcode?. Sélectionner Application basée sur les vues puis cliquez sur Suivant. Entrez un nom pour votre projet. J'ai appelé le mien @? Mail ?. Entrez votre identifiant d'entreprise et assurez-vous d'avoir sélectionné "iPhone" pour Famille de périphérique, parce que nous allons faire une application iPhone. Si vous avez terminé, cliquez sur Suivant. Choisissez un emplacement pour enregistrer votre projet et cliquez sur Créer.
яя яOuvrez le fichier "MailViewController.xib" et faites glisser un bouton dans la vue. Définissez le titre du bouton sur "Mail". Maintenant, sélectionnez le bouton du milieu de l'éditeur pour afficher "Assistant éditeur", afin que nous puissions ajouter une action au bouton que nous venons de créer.
яя яSélectionnez le bouton et faites glisser CTRL vers le fichier? MailViewController.h ?. Dans la fenêtre qui s’affiche, entrez? OpenMail? pour name et assurez-vous de définir le type de connexion sur "Action", car nous voulons effectuer une action et non une prise.
яя яDans la zone de navigation de Xcode 4, sélectionnez le nom du projet. Ensuite, sélectionnez la cible actuelle (? Mail? Dans ce cas), puis sélectionnez? Build Phases? languette. Développez le? Link Binary With Libraries? option, puis cliquez sur le bouton? +? bouton pour ajouter un nouveau cadre. Tapez? Message "dans le champ de recherche et sélectionnez le MessageUI.framework option qui apparaît dans la liste. Cliquez sur? Ajouter? inclure ce cadre dans la phase de liaison de votre projet.
Maintenant que vous avez ajouté le framework MessageUI à votre projet, vous devez importer ce framework dans le contrôleur de vue qui utilisera le MFMailComposeViewController
, donc, dans notre cas, MailViewController.h.
Allez dans ce fichier et modifiez le code pour lire comme suit:
#importation#importation @interface MailViewController: UIViewController - (IBAction) openMail: (id) expéditeur; @fin
Comme vous pouvez le constater, nous avons également déclaré le MFMaileComposeViewControllerDelegate
dans le code ci-dessus. Nous allons utiliser ce délégué pour voir le résultat du mail.
Faites glisser l'image suivante vers le fichier? Fichiers pris en charge? dossier dans votre projet. Assurez-vous de copier les éléments dans le dossier du groupe de destination (si nécessaire). est cochée avant de cliquer terminer.
яя яOuvrez le fichier? MailViewController.m? fichier et faites défiler jusqu'à la openMail:
action et modifier le code pour lire comme suit:
- (IBAction) openMail: (id) expéditeur if ([MFMailComposeViewController canSendMail]) else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Echec" message: @ "Votre périphérique ne prend pas en charge la feuille de composition" délégué: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [émission d'alerte]; [libération d'alerte];
Ici, nous vérifions si l’appareil actuel est capable d’envoyer un e-mail avec canSendMail
méthode de classe de MFMailComposeViewController
. Vous devez toujours appeler cette méthode avant d'ouvrir l'interface de messagerie. Si le périphérique ne peut pas envoyer de courrier électronique, vous devez en informer l'utilisateur (j'ai utilisé une UIAlertView
pour ça).
Si l'appareil est capable d'envoyer un courrier électronique, l'interface de messagerie est affichée. Aller au openMail:
action et modifier le code pour lire comme suit:
- (IBAction) openMail: (id) expéditeur if ([MFMailComposeViewController canSendMail]) MFMailComposeViewController * mailer = [[MFMailComposeViewController alloc] init]; mailer.mailComposeDelegate = self; [mailer setSubject: @ "Un message de MobileTuts +"]; NSArray * toRecipients = [NSArray arrayWithObjects: @ "[email protected]", @ "[email protected]", nil]; [mailer setToRecipients: toRecipients]; UIImage * myImage = [UIImage imageNamed: @ "mobiletuts-logo.png"]; NSData * imageData = UIImagePNGRepresentation (myImage); [mailer addAttachmentData: imageData mimeType: @ "image / png" NomFichier: @ "mobiletutsImage"]; NSString * emailBody = @ "Avez-vous vu le site Web MobileTuts +?"; [mailer setMessageBody: emailBody isHTML: NO]; [self presentModalViewController: mailer animated: YES]; [publication de courrier]; else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Échec" message: @ "Votre appareil ne prend pas en charge la feuille de composition" délégué: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [émission d'alerte]; [libération d'alerte];
Nous créons d'abord un MFMaileComposeViewController
et appelez-le "mailer". Nous avons mis le mailComposeDelegate
à soi-même, afin que nous puissions voir le résultat du courrier. Le sujet est défini sur? Un message de MobileTuts + ?. Comme vous pouvez le voir, le aux destinataires
est du type NSArray
. En effet, vous pouvez ajouter plusieurs destinataires. J'ai ajouté deux adresses e-mail factices, mais vous pouvez bien sûr indiquer l'adresse de votre choix. Après cela, nous stockons une image en tant que NSData
objet, parce que nous ne pouvons pas envoyer un UIImage
directement. Puis on ajoute le NSData
objet en pièce jointe à notre courrier électronique. Nous définissons le type sur une image png et le nom du fichier sur "mobiletutsImage". Cela signifie que lorsque le destinataire enregistre l'image, celle-ci le sera sous le nom "mobiletutsImage". La dernière chose que nous faisons est de montrer le courrier avant de relâcher l'objet de courrier.
Vous devez fermer manuellement l'interface de messagerie en réponse à un appel à une méthode de délégation. Ajoutez le code suivant sous le openMail:
action:
- (void) mailComposeController: (MFMailComposeViewController *) contrôleur didFinishWithResult: (MFMailComposeResult) erreur de résultat: (NSError *) erreur commutateur (résultat) cas MFMailComposeResult Annoncé: NSLog (@ "message annulé: vous avez annulé le message) et vous avez annulé le message "); Pause; case MFMailComposeResultSaved: NSLog (@ "E-mail enregistré: vous avez enregistré l'e-mail dans le dossier des brouillons."); Pause; case MFMailComposeResultSent: NSLog (@ "Mail send: l'e-mail est mis en file d'attente dans la boîte d'envoi. Il est prêt à être envoyé."); Pause; case MFMailComposeResultFailed: NSLog (@ "Échec de la messagerie: le message n'a pas été enregistré ni mis en file d'attente, probablement à cause d'une erreur."); Pause; défaut: NSLog (@ "Mail non envoyé."); Pause; // Supprime la vue courrier [self liciteModalViewControllerAnimated: YES];
Dans cette méthode de délégation, nous vérifions le résultat de l'affichage du contrôleur de vue de courrier avec une instruction switch, puis le renvoyons avec une animation. Dans le code ci-dessus, j'ai simplement imprimé un NSLog
message avec les résultats, mais le fait est que vous pouvez répondre dynamiquement à l'action de l'utilisateur.
Sur un iPad, il est agréable d'afficher l'interface de messagerie dans une présentation de feuille de page. Vous pouvez le faire en ajoutant la ligne de code suivante juste au dessus de [self presentModalViewController: mailer animated: YES];
:
mailer.modalPresentationStyle = UIModalPresentationPageSheet;яя я
J'espère que vous avez apprécié ce tutoriel. Si vous avez des commentaires ou des demandes de contenu iOS supplémentaire, veuillez laisser un commentaire ci-dessous.!