1. Introduction▲
La bibliothèque« MessageUI » n'est pas seulement conçue pour le courrier électronique, mais elle fournit également un contrôleur de vues spécialisé permettant aux développeurs de présenter, dans une application, l'interface standard pour composer un message texte SMS. Lorsque vous utilisez la classe MFMailComposeViewController pour le courrier électronique, elle offre une autre classe nommée MFMessageComposeViewController pour la gestion des messages texte.
Au fond, l'utilisation de la classe MFMessageComposeViewController est très semblable à celle permettant de créer des courriels. Si vous avez lu les tutoriels sur l'envoi de courriels ou la gestion des pièces jointes dans un courriel, vous ne devriez avoir aucun problème avec cette classe. Quoi qu'il en soit, nous allons utiliser la classe MFMessageComposeViewController et illustrer son utilisation à l'aide d'une application simple.
2. L'application de démonstration▲
Nous réutilisons l'application du tutoriel précédent, mais en la modifiant un peu. L'application affiche toujours une liste de fichiers sous forme de tableau. Cependant, au lieu d'ouvrir le compositeur de courriels, l'application fera apparaître l'interface de la messagerie avec le contenu du message prérenseigné lorsque l'utilisateur sélectionne l'une des lignes de la table.
2-1. Mise en route▲
Pour gagner du temps lors de la création du projet Xcode, vous pouvez télécharger le modèle du projet pour commencer le codage. Nous avons déjà conçu l'environnement « Storyboard » (scénario) et créé la vue « table » pour vous.
2-2. Importer la bibliothèque « MessageUI »▲
Tout d'abord, importez la bibliothèque « MessageUI » dans le projet :
2-3. Implémenter la méthode▲
Allez au fichier « AttachmentTableViewController.m » et ajoutez le code suivant pour importer l'entête de MessageUI et implémenter la méthode MFMessageComposeViewControllerDelegate :
#import <MessageUI/MessageUI.h>
@interface AttachmentTableViewController (
) <
MFMessageComposeViewControllerDelegate>
La classe MFMessageComposeViewControllerDelegate définit une seule méthode qui sera appelée lorsque l'utilisateur termine la rédaction d'un message SMS. Nous devons fournir la mise en œuvre de cette méthode et gérer diverses situations.
- L'utilisateur abandonne l'édition du SMS.
- L'utilisateur appuie sur le bouton « envoi » et le SMS est envoyé avec succès.
- L'utilisateur appuie sur le bouton « envoi », mais l'émission du SMS échoue.
Ajoutez le code ci-dessous dans le fichier « AttachmentTableViewController.m ». Ici, nous affichons un message d'alerte lors du cas 3. Pour les autres cas, nous fermons tout simplement le composeur de messages.
-
(
void
)messageComposeViewController:(
MFMessageComposeViewController *
)controller didFinishWithResult:(
MessageComposeResult) result
{
switch
(
result) {
case
MessageComposeResultCancelled:
break
;
case
MessageComposeResultFailed:
{
UIAlertView *
warningAlert =
[[UIAlertView alloc] initWithTitle:@"
Error
"
message:@"
Failed to send SMS!
"
delegate:nil cancelButtonTitle:@"
OK
"
otherButtonTitles:nil];
[warningAlert show];
break
;
}
case
MessageComposeResultSent:
break
;
default
:
break
;
}
[self dismissViewControllerAnimated:YES completion:nil];
}
2-4. Afficher le composeur de messages▲
Lorsque l'utilisateur sélectionne une ligne de la table, nous récupérons le fichier sélectionné et appelons une méthode personnalisée pour faire apparaître le composeur de messages. Modifiez la méthode « didSelectRowAtIndexPath » avec le code suivant :
-
(
void
)tableView:(
UITableView *
)tableView didSelectRowAtIndexPath:(
NSIndexPath *
)indexPath
{
NSString *
selectedFile =
[_files objectAtIndex:indexPath.row];
[self showSMS:selectedFile];
}
La méthode « showSMS » est le cœur du code pour initialiser et remplir le contenu par défaut du SMS. Ajoutez le code suivant :
-
(
void
)showSMS:(
NSString*
)file {
if
(!
[MFMessageComposeViewController canSendText]) {
UIAlertView *
warningAlert =
[[UIAlertView alloc] initWithTitle:@"
Error
"
message:@"
Your device doesn't support SMS!
"
delegate:nil cancelButtonTitle:@"
OK
"
otherButtonTitles:nil];
[warningAlert show];
return
;
}
NSArray *
recipents =
@[@"
12345678
"
, @"
72345524
"
];
NSString *
message =
[NSString stringWithFormat:@"
Just sent the %@ file to your email. Please check!
"
, file];
MFMessageComposeViewController *
messageController =
[[MFMessageComposeViewController alloc] init];
messageController.messageComposeDelegate =
self;
[messageController setRecipients:recipents];
[messageController setBody:message];
// Present message view controller on screen
[self presentViewController:messageController animated:YES completion:nil];
}
Bien que la plupart des appareils iOS soient capables d'envoyer un SMS, en tant que développeur, vous devez gérer les exceptions. Que faire si votre application est utilisée par un iPod touch avec iMessages désactivé ? Dans ce cas, il est évident que l'appareil ne peut pas envoyer un SMS. Aussi, au début du code, nous vérifions si l'appareil est capable d'envoyer un message texte à l'aide de la méthode « canSendText » de la classe MFMessageComposeViewController.
Le reste du code est très simple et similaire à celui que vous avez vu avec le tutoriel sur les courriels. Vous pouvez prérenseigner plusieurs destinataires (à savoir leurs numéros de téléphone) dans le message de texte. Pour le corps du message, il ne supporte que le contenu « texte ».
Une fois que le contenu est prêt, il suffit d'invoquer la méthode « presentModalViewController » pour afficher le composeur de messages.
2-5. Compiler et lancer l'application▲
C'est tout ! Simple et facile. Vous pouvez maintenant lancer l'application et la tester. Mais veuillez noter que vous devez tester l'application sur un véritable appareil iOS. Le simulateur ne vous permet pas d'envoyer des SMS.
2-6. Et si vous ne voulez pas d'une application SMS ?▲
La mise en œuvre ci-dessus fournit une intégration transparente de la fonction SMS dans votre application. Mais que faire si vous voulez juste envoyer un message texte sans utiliser la bibliothèque « MessageUI » ? C'est encore plus simple, vous pouvez le faire en une seule ligne de code :
[[UIApplication sharedApplication] openURL: @"
sms:98765432
"
];
Avec le système iOS, vous pouvez communiquer avec les autres applications en utilisant une URL. Le système d'exploitation du mobile possède déjà avec prise en charge intégrée des schémas d'URL « http », « mailto », « tel », et « sms ». Lorsque vous sollicitez une URL HTTP, iOS lance par défaut l'URL en utilisant Safari. Si vous souhaitez ouvrir l'application « Messages », vous pouvez utiliser une URL de type « sms » et spécifier le destinataire. Toutefois, ce type d'URL ne vous permet pas de mettre un contenu par défaut.
3. Conclusion▲
Dans ce tutoriel, nous vous avons montré une manière simple d'envoyer un message texte dans votre application. Pour votre information, vous pouvez télécharger le code source complet ici.
Comme toujours, nous aimons vos commentaires. N'hésitez pas à nous en faire part et à partager vos réflexions sur ce tutoriel.
3-1. 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 milkoseck 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 .