将图像添加到 M MessageView 控制器在 IOS5 中可以正常工作,但在 IOS 6 中不能

Posted

技术标签:

【中文标题】将图像添加到 M MessageView 控制器在 IOS5 中可以正常工作,但在 IOS 6 中不能【英文标题】:Adding image to MFMessageViewController works fine in IOS5 but not in IOS6 【发布时间】:2012-10-24 05:58:34 【问题描述】:

我遇到了一个奇怪的问题,下面的代码在 ios5 设备和所有模拟器中都可以正常工作,但在 IOS6 设备中失败。我得到一个空白视图来代替图像。

要求:需要在邮件中添加图片。

NSString *imageName = @"clas-s-room_tile.png"; 
imagePath = [[NSBundle mainBundle]bundlePath];
imagePath = [imagePath stringByAppendingPathComponent:[NSString   stringWithFormat:@"%@",imageName]];
imagePath = [@"file:///" stringByAppendingString:imagePath];

NSString *formatedUrl = [NSString stringWithFormat:@"</br><table border =\"0\"><tr><td></td><th>%@</th></tr><tr><td><img src= \'%@\' width=200 height=150></td></tr></table>",sometext,imagePath];
[mailComposer setMessageBody:formatedUrl ishtml:YES];

请提出建议。

感谢和问候, 阿尼尔

【问题讨论】:

【参考方案1】:

您尝试做的事情从未得到支持。将图像添加到电子邮件中的唯一有效方法是将图像添加为附件。但即便如此,您也无法在邮件正文中引用图片附件。

在模拟器中起作用的东西与这样的事情无关,因为您实际上无法在模拟器中发送电子邮件。让我问一下 - 在 iOS 5 设备上运行它时,收到的从应用程序发送的电子邮件是否实际显示图像,或者它是否仅在应用程序的邮件编辑器中正确显示?如果从应用程序发送并在用户计算机上的某些电子邮件客户端中打开的此类电子邮件显示图像,我会感到非常惊讶。

编辑:事实证明这在 iOS 5 下确实有效,但在 iOS 6 下却不行。我很惊讶。我做了自己的快速测试。在 iOS 5.1 下,发送带有此类图像引用的电子邮件到 iOS 设备上的本地文件实际上确实与电子邮件一起发送,并且确实出现在他们计算机上的客户端电子邮件程序中。当应用程序在 iOS 6 下运行时,图像不会出现在应用程序的邮件编辑器中,也不会出现在收到的电子邮件中。所以至少这是一致的。

另外一个小注解。这一行:

imagePath = [imagePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",imageName]];

应该是:

imagePath = [imagePath stringByAppendingPathComponent:imageName];

除非您实际使用的是字符串格式,否则不要使用stringWithFormat:。此外,无需创建额外的NSString 对象。

另外,这是获取资源包中文件路径的更好方法:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"clas-s-room_tile" ofType:@"png"];

这一行将替换您发布的前三行。

最后一点。使用 HTML 电子邮件时,请包含 &lt;html&gt;&lt;body&gt; 标记。

【讨论】:

您好,rmaddy,感谢您的回复。图像将显示在电子邮件中,当您发送邮件时会出现相同的图像。甚至接收者也会有相同的图像。这在 IOS5 中工作正常,但在 IOS6 中没有。我也尝试过像你一样替换为单行提到过,但对我没有帮助。 我很好奇——您在 iOS 5 下实际发送此类电子邮件的体验如何?收到的邮件有没有图片? 哇——我从没想过这会奏效。我得试试看。 @IamAnil 我更新了我的答案以反映这在 iOS 5 下确实有效,但在 iOS 6 下无效。非常有趣。【参考方案2】:
This is not possible with the current MessageUI API: the MSMessageComposeViewController doesn't accept attachments like the MFMailComposeViewController does.

The only way to do this currently is to use an external service that allows you to send mms via a REST call for example.

GSMA defines a REST specification for exactly this purpose:     http://www.gsmworld.com/oneapi/reference_documentation-version_1.html (multiple pdf's on this page)

Try to find a local service provider that implements this specification and you're good to go.

Just to add the direct wiki link to the OneAPI MMS spec:     http://gsma.securespsite.com/access/Access%20API%20Wiki/MMS%20RESTful%20API.aspx and a link to the php/Java sandbox https://github.com/OneAPI/GSMA-OneAPI where MMS can be tested locally . Cheers.

【讨论】:

以上是关于将图像添加到 M MessageView 控制器在 IOS5 中可以正常工作,但在 IOS 6 中不能的主要内容,如果未能解决你的问题,请参考以下文章

使用 CodeIgniter 将上传图像字段添加到注册表单

如何在 ios 4 中以编程方式将图像数组添加到 Imageview?

将图像和标题都添加到导航 backBarButtonItem

以编程方式将图像从api添加到CustomCell变得迟钝

将图像添加到图库

如何在 MFC 中将图像添加到 CListCtrl