iOS SDK E-Mail-In-App senden

In diesem iOS SDK-Lernprogramm werde ich Ihnen zeigen, wie Sie Benutzern das Senden von E-Mails ermöglichen, ohne die Anwendung mit der Klasse MFMailComposeViewController zu verlassen. Wir richten eine E-Mail-Vorlage mit Empfängern, einem Betreff, Haupttext und sogar einem Bildanhang ein.

Das iOS SDK bietet eine einfach zu verwendende Standardschnittstelle, über die Benutzer E-Mails aus Ihrer eigenen Anwendung senden und bearbeiten können. Dazu müssen Sie das verwenden MFMailComposeViewController Klasse. Dieser Ansichtscontroller zeigt eine Standard-Mail-Schnittstelle an und stellt außerdem die Funktionalität bereit, auf Benutzerereignisse zu reagieren, die auf dieser Schnittstelle ausgeführt werden. Zum Beispiel werden Sie von der Klasse benachrichtigt, wenn der Benutzer "Senden" oder "Abbrechen" drückt..

Hinweis: MFMailComposeViewController ist nur unter iOS 3.0 oder höher verfügbar.

Wie funktioniert es? Befolgen Sie die Schritte in diesem Lernprogramm, um dies herauszufinden.


Schritt 1: Erstellen Sie ein neues Xcode-Projekt

Öffnen Sie Xcode und wählen Sie "Neues Xcode-Projekt erstellen". Wählen Ansichtsbasierte Anwendung und klicken Sie dann auf Nächster. Geben Sie einen Namen für Ihr Projekt ein. Ich rief mein @ "Mail" an. Geben Sie Ihre Firmenkennung ein und stellen Sie sicher, dass Sie "iPhone" für ausgewählt haben Gerätefamilie, weil wir eine iPhone App machen werden. Wenn Sie fertig sind, klicken Sie auf Nächster. Wählen Sie einen Ort zum Speichern Ihres Projekts und klicken Sie auf Erstellen.

яя я

Schritt 2: Fügen Sie die Mail-Schaltfläche hinzu

Öffnen Sie die Datei "MailViewController.xib" und ziehen Sie eine Schaltfläche in die Ansicht. Stellen Sie den Titel der Schaltfläche auf "Mail". Wählen Sie nun die mittlere Schaltfläche des Editors aus, um den Assistenten-Editor anzuzeigen, damit wir der gerade erstellten Schaltfläche eine Aktion hinzufügen können.

яя я

Wählen Sie die Schaltfläche aus und ziehen Sie die STRG-Taste auf "MailViewController.h". Geben Sie im angezeigten Popup "openMail" ein. Geben Sie als Namen den Namen der Verbindung an und stellen Sie sicher, dass der Verbindungstyp auf "Aktion" gesetzt ist, da wir eine Aktion und keine Steckdose ausführen möchten.

яя я

Schritt 3: Importieren Sie das MessageUI Framework

Wählen Sie im Navigatorbereich von Xcode 4 den Projektnamen aus. Wählen Sie dann das aktuelle Ziel aus ("Mail" in diesem Fall) und wählen Sie dann "Build Phases". Tab. Erweitern Sie den Link? Binär mit Bibliotheken? Option und klicken Sie dann auf die Taste? +? Schaltfläche, um ein neues Framework hinzuzufügen. Geben Sie "message" in das Suchfeld ein und wählen Sie die Option MessageUI.framework Option, die in der Liste angezeigt wird. Klicken Sie auf Hinzufügen. um dieses Framework in die Verknüpfungsphase Ihres Projekts aufzunehmen.

Nachdem Sie nun das MessageUI-Framework in Ihr Projekt eingefügt haben, müssen Sie dieses Framework in den View-Controller importieren, der das verwendet MFMailComposeViewController, In unserem Fall also MailViewController.h.

Gehen Sie zu dieser Datei und ändern Sie den zu lesenden Code wie folgt:

 #einführen  #einführen  @interface MailViewController: UIViewController  - (IBAction) openMail: (ID) Absender; @Ende

Wie Sie sehen können, haben wir auch das erklärt MFMaileComposeViewControllerDelegate im obigen Code. Wir werden diesen Delegierten verwenden, um das Ergebnis der Mail zu sehen.


Schritt 4: Fügen Sie Projektressourcen hinzu

Ziehen Sie das folgende Bild in das Feld? Unterstützende Dateien? Ordner in Ihrem Projekt. Stellen Sie sicher, dass Elemente in den Ordner der Zielgruppe kopiert werden (falls erforderlich). wird vor dem Klick geprüft Fertig.

яя я

Schritt 5: Prüfen Sie, ob das Gerät E-Mails senden kann

Öffnen Sie den? MailViewController.m? Datei und scrollen Sie nach unten openMail: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) openMail: (id) sender if ([MFMailComposeViewController canSendMail])  else UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Fehler" -Meldung: @ "Ihr Gerät unterstützt das Composer-Sheet nicht." Delegat: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [Alertshow]; [Alarme freigeben]; 

Hier überprüfen wir, ob das aktuelle Gerät mit der E-Mail eine E-Mail senden kann canSendMail Klassenmethode von MFMailComposeViewController. Sie sollten diese Methode immer aufrufen, bevor Sie die Mailschnittstelle öffnen. Wenn das Gerät keine E-Mails senden kann, sollten Sie den Benutzer benachrichtigen (Ich habe ein verwendet UIAlertView dafür).


Schritt 6: Mail-Schnittstelle anzeigen

Wenn das Gerät E-Mails senden kann, wird die E-Mail-Schnittstelle angezeigt. Gehe zum openMail: Aktion und ändern Sie den Code wie folgt:

 - (IBAction) openMail: (id) sender if ([MFMailComposeViewController canSendMail]) MFMailComposeViewController * mailer = [[MFMailComposeViewController-Zuordnung] init]; mailer.mailComposeDelegate = self; [Mailer setSubject: @ "Eine Nachricht von 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" Dateiname: @ "mobiletutsImage"]; NSString * emailBody = @ "Haben Sie die MobileTuts + Website gesehen?"; [Mailer setMessageBody: emailBody isHTML: NO]; [self presentModalViewController: Mailer animiert: JA]; [mailer release];  else UIAlertView * alert = [[UIAlertView-Zuordnung] initWithTitle: @ "Failure" -Meldung: @ "Ihr Gerät unterstützt das Composer-Blatt nicht" Delegat: nil cancelButtonTitle: @ "OK" otherButtonTitles: nil]; [Alertshow]; [Alarme freigeben]; 

Zuerst erstellen wir eine MFMaileComposeViewController und nennen Sie es "Mailer". Wir setzen die mailComposeDelegate an sich selbst, damit wir das Ergebnis der Mail sehen können. Der Betreff ist auf "Eine Nachricht von MobileTuts +" eingestellt. Wie Sie sehen können, die Empfänger ist von der Art NSArray. Dies liegt daran, dass Sie mehrere Empfänger hinzufügen können. Ich habe zwei falsche E-Mail-Adressen hinzugefügt, aber Sie können natürlich jede beliebige Adresse angeben. Danach speichern wir ein Bild als NSData Objekt, weil wir nicht senden können UIImage direkt. Dann fügen wir die NSData Objekt als Anhang zu unserer E-Mail. Wir setzen den Typ auf ein PNG-Bild und den Dateinamen auf "MobiletutsImage". Das heißt, wenn der Empfänger das Bild speichert, wird es unter dem Namen "mobiletutsImage" gespeichert. Das Letzte, was wir tun, ist dem Mailer vor dem Freigeben des Mailerobjekts zu zeigen.


Schritt 7: Überprüfen Sie das Ergebnis und schließen Sie die Ansicht ab

Sie müssen die Mailschnittstelle als Reaktion auf einen Aufruf einer Delegatenmethode manuell schließen. Fügen Sie den folgenden Code unter dem hinzu openMail: Aktion:

 - (void) mailComposeController: (MFMailComposeViewController *) -Controller didFinishWithResult: (MFMailComposeResult) Ergebnisfehler: (NSError *) Fehler switch (Ergebnis) case MFMailComposeResultCancelled: NSLog (@ "Mail abgebrochen: Sie haben den Vorgang abgebrochen und keine E-Mail-Nachricht wurde in die Warteschlange gestellt. "); brechen; case MFMailComposeResultSaved: NSLog (@ "E-Mail gespeichert: Sie haben die E-Mail-Nachricht im Entwurfsordner gespeichert."); brechen; case MFMailComposeResultSent: NSLog (@ "E-Mail senden: Die E-Mail-Nachricht befindet sich im Postausgang. Sie ist zum Senden bereit."); brechen; case MFMailComposeResultFailed: NSLog (@ "Mail fehlgeschlagen: Die E-Mail-Nachricht wurde möglicherweise nicht gespeichert oder in die Warteschlange gestellt, möglicherweise aufgrund eines Fehlers."); brechen; Standard: NSLog (@ "Mail nicht gesendet."); brechen;  // Entfernen Sie die Mailansicht [self dismissModalViewControllerAnimated: YES]; 

Bei dieser Delegatmethode überprüfen wir das Ergebnis der Anzeige des Mail-View-Controllers mit einer switch-Anweisung und schließen den View-Controller anschließend mit einer Animation ab. In dem obigen Code habe ich einfach eine NSLog Nachricht mit den Ergebnissen, aber der Punkt ist, dass Sie dynamisch auf die Aktion des Benutzers reagieren könnten.


BONUS: Damit das iPad funktioniert

Auf einem iPad sieht es gut aus, die Mail-Oberfläche in einer Seitenblattpräsentation anzuzeigen. Sie können dies tun, indem Sie die folgende Codezeile direkt darüber hinzufügen [self presentModalViewController: Mailer animiert: JA];:

 mailer.modalPresentationStyle = UIModalPresentationPageSheet;
яя я

Einpacken

Ich hoffe, dir hat dieses Tutorial gefallen. Wenn Sie Feedback oder Anfragen zu weiteren iOS-Inhalten von mir haben, hinterlassen Sie bitte einen Kommentar!