Ich möchte eine Nachricht mit Bilddaten senden. Also habe ich MFMessageComposeViewController
verwendet. Aber dieser Controller bietet nur SMS-Service. Also habe ich UIPasteBoard
eine Bilddatei angehängt. Aber es funktioniert auch nicht. Es gibt keine Schaltfläche "Einfügen", die beim Eingeben von Nachrichten erstellt wird. Das Anbringen eines Bildes bei UIPasteBoard
war eindeutig ein Erfolg. Ich denke, mit MFMessageComposeViewController
löst nicht mein Problem. Wie kann ich mein Ziel erreichen?Wie man Bild mit Nachricht über iPhone-Anwendung anfügt?
Antwort
Dies ist nicht möglich mit der aktuellen MessageUI-API: der MSMessageComposeViewController akzeptiert keine Anlagen wie der MFMailComposeViewController tut.
Die einzige Möglichkeit, dies zu tun, ist derzeit die Verwendung eines externen Dienstes, mit dem Sie z. B. mms über einen REST-Aufruf senden können.
GSMA definiert eine REST-Spezifikation für genau diesen Zweck: http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (mehrere PDF-Dateien auf dieser Seite)
Versuchen Sie, einen lokalen Service-Provider zu finden, die diese Spezifikation implementiert und Sie sind gut zu gehen.
einfach den direkten Wiki Link zu der OneAPI MMS-Spezifikation hinzuzufügen: http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx und ein Link auf die PHP/Java-Sandbox https://github.com/OneAPI/GSMA-OneAPI wo MMS kann vor Ort getestet werden. Prost.
hatte ich die gleiche Frage, die ich here. posted Es ist ein Fehler in MFMessageComposeViewController
, und wenn Sie nur den Code verwenden, darunter eine Nachricht starten, die Sie Bilder in
NSString *phoneToCall = @"sms: 123-456-7890";
NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];
[[UIApplication sharedApplication] openURL:url];
Noch einfacher, zumindest auf einem iPhone 4S, können Sie die gefälschte Telefonnummer und die Codierung entfernen - alles, was Sie brauchen, ist dies: 'NSURL * url = [[NSURL Alloc] InitWithString: @" SMS: "];' dann ' [[UIApplication sharedApplication] openURL: url]; ' – toblerpwn
einfügen können, ist hier die richtigen Arbeits Code und es funktioniert perfekt auf meinem Gerät.
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];
Was ist kUTTypeUTF8PlainText und kUTTypePNG? – Rick
@Rick Sehen Sie dies [link] (https://developer.apple.com/library/mac/documentation/MobileCoreServices/Reference/UTTypeRef/Reference/reference.html) –
Funktioniert nicht wie von iOS 7 –
Diese Methode wurde getestet und verifiziert. Ich habe es in meinem Code verwendet.
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];
Sie können jedes JPEG JPG und Png Format verwenden.
in meinem Code es geht nie in if ([MFMessageComposeViewController canSendAttachments]) { NSLog (@ "ok"); } Muss ich irgendwelche anderen Einstellungen vornehmen? – Niharika
Warum Sie das Bild und Text über den Anteil API (Auswahl der Nachricht, und wenn Sie Facebook gewählten Art wollen, etc .. twittern) nicht teilen
Um ein anderes Aussehen zu haben – jgvb
Swift Weg. Funktioniert in 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)
}
Machen Sie Sms url und verwenden Sie dann [[UIApplication sharedApplication] openURL: url]; Um ein Bild zu senden, müssen Sie das Bild manuell mit UIPasteBoard einfügen. – Jasmit