为什么我的应用在mmssheet上显示带问号的方框?

时间:2016-07-07 06:07:50

标签: ios objective-c

我正在创建一个使用iMessage和MMS的应用程序。

[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
    if (imageDataSampleBuffer) {

问题是,在拍完照片然后点击发送按钮后,图像会随机变成问号。

NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];

以上代码是我们使用的第一个代码:

[self sendSMSmessage:myMessage image:imageData];

接下来,在sendSMSmessage方法中,调用了以下代码:

MFMessageComposeViewController *myText = [[MFMessageComposeViewController alloc] init];
[myText setMessageComposeDelegate:self];
[myText setBody:myMessage];
[myText addAttachmentData:image typeIdentifier:@"image/jpeg" filename:@"image.jpeg"];

然后,我呈现MFMessageComposeViewController myText

[self presentViewController:myText animated:YES completion:nil];

然后,我点击发送...它已成功发送给应用程序,我可以在MFMessageComposeViewController上看到图片。但是当我试着看iMessage时,我尝试发送的一些图片很好。但有些人不是。一些显示问号。图像是否在此过程中被破坏或者是什么?我尝试使用以下方法压缩图像:

CGFloat compressionQuality = 0.3;
        NSData *imageData = [NSData dataWithData:(UIImageJPEGRepresentation
                                                  ([UIImage imageWithData:[AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer]]
                                                   , compressionQuality))];

但仍然执行相同的操作。在10次尝试中,我得到了4张失败的图像。它可能是iPhone或我的应用程序本身的问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

我不知道是否有人会遇到这种情况,但我采取的措施是:

将imageData声明为强引用:

__strong NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];

然后我将myText作曲家的typeIdentifier更改为@“public.jpeg”而不是@“image / jpeg”

[myText addAttachmentData:image typeIdentifier:@"public.jpeg" filename:@"image.jpeg"];