У меня возникли проблемы с прикреплением изображений из фотогалереи к электронному письму.MFMailComposeViewController: Присоединение изображений из фотогалереи
В принципе, одна из возможностей моего приложения позволяет пользователю делать фотографии. Когда они снимают снимок, я записываю ссылку URL в изображение в Core Data. Я понимаю, что вам нужно пройти через ALAssetRepresentation
, чтобы добраться до изображения. У меня это работает и работает в моем приложении, когда пользователь хочет просмотреть изображение, которое они сделали.
Теперь я пытаюсь разрешить пользователю прикреплять все фотографии, сделанные для мероприятия, к электронному письму. Выполняя это, я перебираю объект Core Data, который хранит ссылки на ссылки, вызывает метод, который возвращает UIImage
из ALAssetsLibrary
, а затем присоединяет его, используя методы /UIImageJPEGRepresentation
и MFMailComposeViewController
/addAttachmentData
.
Проблема: когда электронное письмо представлено пользователю, есть маленькие синие квадраты, представляющие изображения, и изображение не прилагается.
Вот код:
- (void)sendReportReport
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
[mailer setSubject:@"Log: Report"];
NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", nil];
[mailer setToRecipients:toRecipients];
NSError *error;
NSFetchRequest *fetchPhotos = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Photo" inManagedObjectContext:__managedObjectContext];
[fetchPhotos setEntity:entity];
NSArray *fetchedPhotos = [__managedObjectContext executeFetchRequest:fetchPhotos error:&error];
int counter;
for (NSManagedObject *managedObject in fetchedPhotos) {
Photo *photo = (Photo *)managedObject;
// UIImage *myImage = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", counter++]];
NSData *imageData = UIImageJPEGRepresentation([self getImage:photo.referenceURL], 0.5);
// NSData *imageData = UIImagePNGRepresentation([self getImage:photo.referenceURL]);
// [mailer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:[NSString stringWithFormat:@"%i", counter]];
[mailer addAttachmentData:imageData mimeType:@"image/jpeg" fileName:[NSString stringWithFormat:@"a.jpg"]];
counter++;
}
NSString *emailBody = [self getEmailBody];
[mailer setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:mailer animated:YES];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure"
message:@"Your device doesn't support the composer sheet"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
и метод, который возвращает UIImage
:
ПРИМЕЧАНИЕ: Это выше код мчит, он просто не прикрепить изображение. Кроме того, обратите внимание, что я могу успешно прикреплять изображения из галереи в своем приложении, так как долго я их установил в UIImageView
. Я уже (в основном, я беру указатель на изображение из UIImageView
и передавая его в addAttachmentData
.) Это просто, когда я пытаюсь выполнить итерацию через Core Data и прикрепить без предварительной установки изображения в UIImageView
, что у меня есть проблема.
Любые советы были бы высоко оценены!
Спасибо! Jason
Вы распечатали содержимое изображения, прежде чем добавлять его в качестве вложения? ('CFShow ([self getImage: photo.referenceURL]);) Возможно, на данный момент это нуль? – calimarkus
Привет, Джейди, я предполагаю, что ты прав. Это, вероятно, ноль. Но что мне делать? Я подхожу к этому не так, но создаю метод, который возвращает UIImage? Должен ли я делать что-то другое, чтобы перебирать список ссылок на ссылки на изображения фотоальбомов? – JasonBub
просто поднимитесь, чтобы найти ошибку. Если изображение равно нулю, ваш ссылочный URL-адрес ошибочен. Поэтому проверьте, как создается URL-адрес. – calimarkus