2014-04-19 3 views
0

다음 작업을 수행하고 있지만 로깅 할 때 항상 이미지를 첨부 할 수 없다고 반환합니다. 여기 뭐가 잘못 됐니?MFMessageComposeViewController에 이미지를 첨부 할 수 없음

- (void)showInvitation { 

if (![MFMessageComposeViewController canSendText]) { 

    UIAlertView *warningAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Your device doesn't support SMS!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [warningAlert show]; 
    return; 
} 

NSString *message = [NSString stringWithFormat:@"Download this game!"]; 
MFMessageComposeViewController *messageController = [[MFMessageComposeViewController alloc] init]; 
messageController.messageComposeDelegate = self; 
[messageController setBody:message]; 

if ([MFMessageComposeViewController canSendAttachments]) { 
    NSLog(@"Attachments Can Be Sent."); 
    NSData *imgData = [NSData dataWithContentsOfFile:@"water"]; 
    BOOL didAttachImage = [messageController addAttachmentData:imgData typeIdentifier:(NSString *)kUTTypePNG filename:@"image.png"]; 

    if (didAttachImage) { 
     NSLog(@"Image Attached."); 

    } else { 
     NSLog(@"Image Could Not Be Attached."); 
    } 
} 

[self presentViewController:messageController animated:YES completion:nil]; 
} 
+0

어떤 계정입니까? 아마도 ISP가 MMS를 차단합니까? iMessage를 사용해보십시오. –

+0

첨부 파일을 콘솔에 기록 할 때 첨부 파일을 보낼 수 있다고 말합니다. imessage로 어떻게 시도 할 수 있습니까? – KingPolygon

+0

실제로 iMessage를 사용하고 있습니다. – KingPolygon

답변

2

의견에서 설명한대로 addAttachmentURL:withAlternateFilename:을 사용하십시오. 내 생각 엔, 당신이 제공하는 NSData 객체가 kUTTypePNG 유형에 맞지 않아 첨부를 추가 할 수 없다는 것입니다.

0

이 코드를 사용해보십시오. 그것은 나를 위해 잘 작동합니다.

if (MFMessageComposeViewController.canSendText()) { 


      let controller = MFMessageComposeViewController() 

controller.body = "Solution of broken image in composer while sending through MFMessageComposserViewController " 


      controller.messageComposeDelegate = self 

      if image.imageAsset != nil { 

       let imageData = UIImageJPEGRepresentation(self.fixOrientation(img: image), 1) //! as NSData 
       controller.addAttachmentData(imageData! , typeIdentifier: "image/.jpeg", filename: "image.jpeg") 

      } 

      self.present(controller, animated: true, completion: { 
       completion(true) 
      }) 


     } 
     } 
+0

질문은 이미 답변되어 해결되었습니다. 문제가 3 살이기 때문에 OP가 이것을 사용할 것 같지 않습니다. 서식을 지정할 때주의하십시오. – Nico