Я хочу отправить сообщение с данными изображения. Поэтому я использовал MFMessageComposeViewController
. Но этот контроллер предоставляет только услугу SMS. Поэтому я использовал UIPasteBoard
прикрепил данные изображения. Но это тоже не работает. Кнопка "Вставить" не создается при наборе сообщений. Прикрепление изображения к UIPasteBoard
явно удалось. Я думаю, что использование MFMessageComposeViewController
не решает мою проблему. Как я могу достичь своей цели?
Как прикрепить изображение к сообщению через приложение для iPhone?
Ответы (6)
Это невозможно с текущим API MessageUI: MSMessageComposeViewController не принимает вложения, как это делает MFMailComposeViewController.
Единственный способ сделать это в настоящее время — использовать внешний сервис, который позволяет отправлять ммс, например, через вызов REST.
GSMA определяет спецификацию REST именно для этой цели: http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (несколько pdf на этой странице)
Попробуйте найти местного поставщика услуг, который реализует эту спецификацию, и все готово.
Просто добавьте прямую вики-ссылку на спецификацию OneAPI MMS: http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx и ссылку на изолированную программную среду PHP/Java https://github.com/OneAPI/GSMA-OneAPI, где MMS можно протестировать локально . Ваше здоровье.
Вот правильный рабочий код, и он отлично работает на моем устройстве.
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];
У меня был тот же вопрос, который я разместил здесь. В MFMessageComposeViewController
есть ошибка, и если вы просто используете код ниже, он запустит сообщение, в которое вы можете вставить изображения
NSString *phoneToCall = @"sms: 123-456-7890";
NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];
[[UIApplication sharedApplication] openURL:url];
NSURL *url = [[NSURL alloc] initWithString:@"sms:"];
потом [[UIApplication sharedApplication] openURL:url];
- person toblerpwn; 25.07.2012
Этот метод проверен и проверен. Я использовал это в своем коде.
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];
Вы можете использовать любые форматы jpeg jpg и png.
Быстрый путь. Работает в 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)
}
Почему бы вам не поделиться изображением и текстом через Share API (выбрав «Сообщение» и если вы хотите исключить Facebook, Twitter и т. д.)