10

我想发送带有图像数据的消息。所以我用MFMessageComposeViewController. 但是那个控制器只提供短信服务。所以我使用UIPasteBoard了附加的图像数据。但它也不起作用。输入消息时没有创建“粘贴”按钮。附加图像UIPasteBoard显然是成功的。我认为使用MFMessageComposeViewController并不能解决我的问题。我怎样才能实现我的目标?

4

6 回答 6

6

这在当前 MessageUI API 中是不可能的:MSMessageComposeViewController 不像 MFMailComposeViewController 那样接受附件。

目前唯一的方法是使用外部服务,例如,允许您通过 REST 调用发送彩信。

GSMA 专门为此目的定义了 REST 规范: http ://www.gsmworld.com/oneapi/reference_documentation-version_1.html (此页面上有多个 pdf)

尝试找到实现此规范的本地服务提供商,您就可以开始了。

只需将直接 wiki 链接添加到 OneAPI MMS 规范:http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx和 PHP/Java 沙箱链接https:// /github.com/OneAPI/GSMA-OneAPI可以在本地测试彩信。干杯。

于 2011-02-09T09:33:16.990 回答
4

这是正确的工作代码,它在我的设备上运行良好。

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];
于 2013-12-30T10:43:07.877 回答
4

该方法经过测试和验证。我在我的代码中使用了它。

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 格式。

于 2014-12-19T20:32:31.290 回答
4

我有同样的问题,我在这里发布。 有一个错误MFMessageComposeViewController,如果您只使用下面的代码,它将启动一条消息,您可以将图像插入

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

    [[UIApplication sharedApplication] openURL:url];
于 2012-03-20T19:45:26.840 回答
3

迅速的方式。适用于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)
}
于 2017-12-14T09:43:51.287 回答
0

为什么不通过共享 API 共享图像和文本(选择消息,如果你想排除 Facebook、Twitter 等)

于 2015-12-17T16:33:48.957 回答