Desidero inviare un messaggio con dati immagine. Quindi ho usato MFMessageComposeViewController
. Ma quel controller fornisce solo il servizio SMS. Quindi ho utilizzato UIPasteBoard
in allegato dati immagine. Ma non funziona, neanche. Non ci sono pulsanti "Incolla" creati durante la digitazione dei messaggi. Allegare l'immagine allo UIPasteBoard
era chiaramente un successo. Penso che usare MFMessageComposeViewController
non risolva il mio problema. Come posso raggiungere il mio obiettivo?Come allegare un'immagine con un messaggio tramite l'applicazione iPhone?
risposta
Questo non è possibile con l'API MessageUI corrente: il MSMessageComposeViewController non accetta gli allegati come fa il MFMailComposeViewController.
L'unico modo per farlo al momento è utilizzare un servizio esterno che consente di inviare mms tramite una chiamata REST, ad esempio.
GSMA definisce una specifica REST proprio per questo scopo: http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (multipli PDF in questa pagina)
Prova a trovare un fornitore di servizi locale che implementa questa specifica e siete a posto.
Solo per aggiungere il collegamento diretto wiki alle specifiche OneAPI MMS: http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx e un collegamento alla sandbox Java/Java https://github.com/OneAPI/GSMA-OneAPI dove MMS può essere testato localmente. Saluti.
ho avuto la stessa domanda che ho postato here. C'è un bug in MFMessageComposeViewController
e se si utilizza il codice qui sotto che lancerà un messaggio che è possibile inserire le immagini in
NSString *phoneToCall = @"sms: 123-456-7890";
NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];
[[UIApplication sharedApplication] openURL:url];
ancora più semplice, almeno su un iPhone 4S, è possibile rimuovere il numero di telefono falso e la codifica - tutto ciò che serve è questo: 'NSURL * url = [[NSURL alloc] initWithString: @" sms: "];' then ' [[UIApplication sharedApplication] openURL: url]; ' – toblerpwn
Ecco il corretto funzionamento codice e funziona perfettamente sul mio dispositivo.
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];
cosa sono kUTTypeUTF8PlainText e kUTTypePNG? – Rick
@Rick Vedere questo [collegamento] (https://developer.apple.com/library/mac/documentation/MobileCoreServices/Reference/UTTypeRef/Reference/reference.html) –
Non funziona da iOS 7 –
Questo metodo è stato testato e verificato. L'ho usato nel mio codice.
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];
È possibile utilizzare qualsiasi formato jpeg jpg e png.
nel mio codice non entra mai in se ([MFMessageComposeViewController canSendAttachments]) { NSLog (@ "ok"); } Devo impostare qualche altra impostazione? – Niharika
Perché non condividere l'immagine e testo tramite l'API Condividi (selezionando Message, e se si vuole esclusa la Facebook, Twitter, ecc ..)
Per avere un aspetto diverso – jgvb
modo Swift. Funziona su 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)
}
Crea URL di Sms e quindi utilizza [[Applicazione condivisa UIA] openURL: url]; Per inviare l'immagine è necessario incollare manualmente l'immagine usando UIPasteBoard. – Jasmit