Je veux envoyer un message avec des données d'image. Donc, j'ai utilisé mfmessagecomposeviewController code>.
Mais ce contrôleur fournit uniquement un service SMS. J'ai donc utilisé
uipasteboard code> ci-joint une donnée d'image.
Mais cela ne fonctionne pas non plus. Il n'y a pas de bouton "Coller" créé lors de la frappe des messages. Fixation de l'image au
Uipasteboard code> était clairement réussie.
Je pense qu'utiliser
mfmessagecomposeviewController code> ne résout pas mon problème.
Comment puis-je accomplir mon objectif? P>
6 Réponses :
Ceci n'est pas possible avec l'API actuel MessageUI: Le MSMESSAGECOMPOSEVIEWNONTROLLER n'accepte pas les pièces jointes telles que le MFMailCommentViewController. P>
Le seul moyen de faire cela est actuellement d'utiliser un service externe qui vous permet d'envoyer des MMS via un appel de repos par exemple. p>
GSMA définit une spécification de repos pour exactement cet objectif: http://www.gsmworld.com/oneapi/reference_documentation-verse_1.html (plusieurs PDF sur cette page) p>
Essayez de trouver un fournisseur de services local qui implémente cette spécification et que vous êtes prêt à partir. P>
Juste pour ajouter le lien de wiki direct à l'ONAPI MMS Spec: http: //gsma.securespsite.com/access/access%20api%20wiki/mms%20Restful%20api.aspx et un lien vers la boîte à sable PHP / Java HTTTPS://github.com/oneapi/gsma-oneapi où MMS peut être testé localement. Bravo. P>
J'ai eu la même question que j'ai posté ici. Il y a un bogue dans MfMessagecomposeviewController Code> Et si vous utilisez simplement le code ci-dessous, il lancera un message que vous pouvez insérer des images dans
NSString *phoneToCall = @"sms: 123-456-7890";
NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];
[[UIApplication sharedApplication] openURL:url];
Même plus simple, au moins sur un iPhone 4S, vous pouvez supprimer le faux numéro de téléphone et le codage - tout ce dont vous avez besoin est celui-ci: nsurl * url = [[[Nsurl alloc] Initwithstring: @ "SMS:"]; code> alors
[[uiapplication SharedApplication] openURL: URL]; code>
Voici le code de travail correct et fonctionnent parfaitement sur mon appareil.
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; pasteboard.persistent = NO; NSMutableDictionary *text = [NSMutableDictionary dictionaryWithCapacity:1]; [text setValue:label.text forKey:(NSString *)kUTTypeUTF8PlainText]; NSMutableDictionary *image = [NSMutableDictionary dictionaryWithCapacity:1]; [image setValue:imageView.image forKey:(NSString *)kUTTypePNG]; pasteboard.items = [NSArray arrayWithObjects:image,text, nil]; NSString *phoneToCall = @"sms:"; NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded]; [[UIApplication sharedApplication] openURL:url];
Cette méthode est testée et vérifiée. Je l'ai utilisé dans mon code.
if (![MFMessageComposeViewController canSendText]) { UIAlertView *alertV = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Your device not support SMS \nOr you hadn't login your iMessage" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; [alertV show]; return; } MFMessageComposeViewController *mVC = [[MFMessageComposeViewController alloc] init]; mVC.body = @"jjjj"; mVC.recipients = @[@"00XXXXXXXXXX"]; mVC.messageComposeDelegate = self; if ([MFMessageComposeViewController canSendAttachments]) { NSLog(@"ok"); } [mVC addAttachmentData: UIImageJPEGRepresentation([UIImage imageNamed:@"test.jpg"], 1.0) typeIdentifier:@"public.data" filename:@"image.jpeg"]; [self presentViewController:mVC animated:YES completion:nil];
Dans mon code, il ne va jamais dans si ([MfMessagecomposeViewController Cansendatchembles]) {nslog (@ "OK"); } Dois-je définir des paramètres d'autre chose?
Pourquoi ne partagez-vous pas l'image et le texte via l'API de Share (Sélection du message, et si vous souhaitez supprimer Facebook, Twitter, etc.) P>
Avoir un look différent
Swift Way. Fonctionne dans iOS11
func shareViaMessage() { if !MFMessageComposeViewController.canSendText() { showAlert("Text services are not available") return } let textComposer = MFMessageComposeViewController() textComposer.messageComposeDelegate = self textComposer.body = "Try my #app" if MFMessageComposeViewController.canSendSubject() { textComposer.subject = "AppName" } if MFMessageComposeViewController.canSendAttachments() { let imageData = UIImageJPEGRepresentation(imageView.image!, 1.0) textComposer.addAttachmentData(imageData!, typeIdentifier: "image/jpg", filename: "photo.jpg") } present(textComposer, animated: true) }
Créez une URL SMS, puis utilisez [[UIAPPLication SharedApplication] Openurl: URL]; Pour l'envoi de l'image, vous devez coller manuellement l'image en utilisant Uipasteboard.