Хотя это старые вопросы, я просто хотел добавить это, чтобы помочь парням, которые нашли это в Google:
Для работы приведенного ниже кода необходимо импортировать:
#import <MessageUI/MessageUI.h>
А в настройках сборки есть ссылка MessageUI.framework
(Project Name > Build Phases > Link Binary with Libraries
)
Мой код ниже работает для видео и изображений, поэтому вы должны установить его на один из них:
NSString *attachmentType = @"image";
или NSString *attachmentType = @"video";
также вы должны установить attachment
NSData:
NSData *attachment = UIImageJPEGRepresentation(YOUR_IMAGE,.5)
Это был пример настройки изображения. .5
- это качество изображения, и я обнаружил, что это хороший компромисс между качеством и размером. 1.0
- лучшее качество (и самый большой размер!)
MFMessageComposeViewController* messageComposer = [MFMessageComposeViewController new];
messageComposer.messageComposeDelegate = self;
[messageComposer setBody:message];
[messageComposer setRecipients:recipients];colorForUsage:SC_THEME_MAIN];
if (attachment && attachmentType) {
if ([attachmentType isEqual:@"image"]) {
[messageComposer addAttachmentData:attachment typeIdentifier:@"image/jpeg" filename:@"shotnote.jpg"];
}
if ([attachmentType isEqual:@"video"]) {
[messageComposer addAttachmentData:attachment typeIdentifier:@"video/mp4" filename:@"shotnote.mp4"];
}
}
[YOUR_CURRENT_VIEW_CONTROLLER
presentViewController:messageComposer
animated:YES
completion:nil];
Также убедитесь, что реализован протокол MFMessageComposeViewControllerDelegate
, чтобы иметь возможность фактически закрыть контроллер представления сообщения, когда пользователь нажимает отправить или отменить!
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
Ура!