Как прикрепить изображение с сообщением через приложение iPhone? - PullRequest
9 голосов
/ 26 августа 2010

Я хочу отправить сообщение с данными изображения.Поэтому я использовал MFMessageComposeViewController.Но этот контроллер предоставляет только услугу SMS.Поэтому я использовал UIPasteBoard прикрепил данные изображения.Но это тоже не работает.При вводе сообщений кнопка «Вставить» не создается.Прикрепление изображения на UIPasteBoard было явно успешным.Я думаю, что использование MFMessageComposeViewController не решает мою проблему.Как я могу достичь своей цели?

Ответы [ 6 ]

6 голосов
/ 09 февраля 2011

Это невозможно с текущим API-интерфейсом MessageUI: MSMessageComposeViewController не принимает вложения, как это делает MFMailComposeViewController.

В настоящее время единственный способ сделать это - использовать внешнюю службу, которая позволяет отправлять MMSнапример, через вызов REST.

GSMA определяет спецификацию REST именно для этой цели: http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (несколько PDF-файлов на этой странице)

Попробуйте найти местного поставщика услуг, который реализует эту спецификацию, и вывсе готово.

Просто добавьте прямую вики-ссылку к спецификации MMS OneAPI: http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx и ссылку на песочницу PHP / Java https://github.com/OneAPI/GSMA-OneAPI, где MMS можно тестировать локально.,Приветствия.

4 голосов
/ 19 декабря 2014

Этот метод проверен и подтвержден.Я использовал его в своем коде.

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.

4 голосов
/ 30 декабря 2013

Вот правильный рабочий код, и он отлично работает на моем устройстве.

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];
4 голосов
/ 20 марта 2012

У меня был тот же вопрос, который я разместил здесь . В MFMessageComposeViewController есть ошибка, и если вы просто воспользуетесь приведенным ниже кодом, она выдаст сообщение о том, что вы можете вставить изображения в

    NSString *phoneToCall = @"sms: 123-456-7890";
    NSString *phoneToCallEncoded = [phoneToCall stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    NSURL *url = [[NSURL alloc] initWithString:phoneToCallEncoded];

    [[UIApplication sharedApplication] openURL:url];
3 голосов
/ 14 декабря 2017

Быстрый путь.Работает в 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)
}
0 голосов
/ 17 декабря 2015

Почему бы вам не поделиться изображением и текстом через API Share (выберите «Сообщение», и если вы хотите исключить Facebook, Twitter и т. Д.)

...