Об ошибках сообщает iPhone MFMailComposeViewController. Это безопасно? - PullRequest
2 голосов
/ 21 февраля 2010

При попытке отправить письмо с простым приложением KML (всего несколько байтов) я получаю предупреждения ниже в консоли во время отправки. Можно ли это игнорировать или я допустил ошибку? Кажется, письмо отправлено OK


- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {
    // Dismiss the e-mail controller once the user is done
    [self dismissModalViewControllerAnimated:YES];
}

- (void) emailLocation: (CLLocation*)  loc {
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"imhere" ofType:@"txt"];  
    NSString * kml=nil ;
    NSString * finalkml=nil;
    NSData * filedata=nil;

    NSString * mime= @"application/vnd.google-earth.kml+xml";

    if (filePath) kml = [NSString stringWithContentsOfFile:filePath];  
    if (kml) finalkml = [NSString stringWithFormat:kml,loc.coordinate.longitude, loc.coordinate.latitude,loc.altitude];
    if (finalkml) filedata = [finalkml dataUsingEncoding:NSUTF8StringEncoding];


    if (([MFMailComposeViewController canSendMail]) && (filedata))
    {
        MFMailComposeViewController *mcvc = [[[MFMailComposeViewController alloc] init] autorelease];
        mcvc.mailComposeDelegate = self;
        [mcvc setSubject:@"I'm here"];
        NSString *body = [NSString stringWithFormat:@"at %f %f",loc.coordinate.latitude,loc.coordinate.longitude];
        [mcvc setMessageBody:body isHTML:YES];
        [mcvc addAttachmentData:filedata mimeType:mime fileName:@"imhere.kml"];
        [self presentModalViewController:mcvc animated:YES];
    }
    else {
        UIAlertView * av = [[UIAlertView alloc] initWithTitle:@"No Email" message:@"Unable to send email." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [av show];
        [av release];
    }
}

Я удалил HTML из приведенного выше образца тела письма, поскольку он портил форматирование SO, но это было обычное письмо HTML со ссылками на карты Google.

Предупреждения в консоли:

2010-02-21 14:23:38.809 DataTap[2008:850f] DA|Could not open the lock file at /tmp/DAAccountsLoading.lock. We'll load the accounts anyway, but bad things may happen
2010-02-21 14:23:41.420 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error
[Switching to thread 13827]
2010-02-21 14:23:44.197 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error
2010-02-21 14:23:45.357 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error
2010-02-21 14:23:45.855 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error
2010-02-21 14:23:48.543 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error
2010-02-21 14:23:48.848 DataTap[2008:207] DA|Pipe to DADaemon was lost. Search query 2147483647 is returning an error

«Могут случиться плохие вещи» - бредовое свидетельство человеческих программистов в Apple!

Я видел этот вопрос электронное письмо со звуком , в котором сообщается об одной из моих ошибок. Соответственно, я попытался изменить тип MIME моего вложения на text / xml, что не имело никакого значения, и полностью удалить вложение, после чего ошибки пошли.

Итак, это может вызвать сбои или это безопасно?

Ответы [ 5 ]

1 голос
/ 21 марта 2011

Я получаю это предупреждение: «DA | Не удалось открыть файл блокировки в /tmp/DAAccountsLoading.lock. Мы все равно загрузим учетные записи, но могут произойти плохие вещи» в моем MFMailComposeViewController, поскольку у меня было

[mailViewController addAttachmentData: imageData mimeType: @ "image / png" fileName: @ ""];

Я просто установил имя и расширение. Все работает сейчас =)

[mailViewController addAttachmentData: imageData mimeType: @ "image / png" fileName: @ "myfile.png"];

1 голос
/ 21 февраля 2010

Я уже видел сообщение "Не удалось открыть файл блокировки", и оно выглядит доброкачественным. Я не знаю о сообщении "pipe to DADaemon", которое может не иметь отношения к почте.

0 голосов
/ 03 декабря 2011

Я второй ответ Карлоса Майорала. В моем случае я получал эту ошибку, потому что я устанавливал mimeType в @ "application / pdf". Оказалось, что вложения pdf mimeType должны быть @ "pdf", а не @ "application / pdf". Как только я изменил его на «pdf», ошибка исчезла.

0 голосов
/ 30 июня 2010

Попробуйте с этим

NSArray *paths = NSSearchPathForDirectoriesInDomains(                                                         NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mytrack.kml"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"text/xml" fileName:@"mytrack.kml"];
0 голосов
/ 16 марта 2010

Я только начал получать эти же сообщения. Были отладки на устройстве iPhone OS 3.1.3 без подобных проблем.

Ясно, что каждое предупреждение появляется, когда я набираю адрес электронной почты для отправителя; для полей TO: или CC: я не пытался использовать поле BCC :. Я никогда раньше не видел этого сообщения отладчика, я просто добавил классы Reachability в приложение. Все работало нормально для определения достижимости, я ничего не изменил в разделе приложения MFMailComposer, я подключил экземпляр Reachability до запуска MFMailComposer на предыдущем viewcontroller.

Я получаю одну и ту же строку DA | pipe DADaemon для каждой буквы адреса электронной почты, которую я пытаюсь ввести. Она прекращает печатать на консоль, как только я нахожу искомое письмо и нажимаю добавить его из списка. В любом случае, я не люблю получать это предупреждение, не может быть хорошей вещью. Я выключил свое приложение, но оно не удаляет предупреждения. Я экспортирую как текст HTML, не уверен, что это как-то связано с этим. У меня нет ничего лишнего в моем методе делегата didFinishWithResult MFMailComposer. У меня просто есть сообщение для каждого из случаев, которое возвращается пользователю через alertView, чтобы сообщить, что случилось с его электронной почтой.

В поисках решений !!!

...