Не удалось отправить сообщение с использованием MFMailComposeViewController - PullRequest
1 голос
/ 08 декабря 2011

Я недавно отправил приложение в Apple, и, к сожалению, оно было отклонено. Причина была в том, что у него есть функция электронной почты для друга, которая не работала. (Само собой разумеется, но это прекрасно работает на моем устройстве). Я использую MFMailComposeViewController, заполняя тему и тело и добавляя вложение. Затем пользователь должен выполнить оставшуюся часть действия для отправки. Когда я попросил проработки, рецензент сказал ...

Сообщения электронной почты, которые мы отправили с вашим приложением, перечислены в Gmail, а Yahoo, тестовые учетные записи «исходящие», с ошибкой, сообщающей, что сервер исходящей почты не может быть достигнут.

... должно ли это считаться ошибкой в ​​моем приложении? Я на самом деле не отправляю почту, я просто использую встроенные вызовы SDK для подготовки сообщения. Я знаю, что аргумент «это ваше устройство» не продвинет меня к утверждению моего приложения, но я действительно думаю, что это их устройство.

Кто-нибудь может подумать о каких-либо причинах, по которым электронная почта не будет работать с таким сообщением, и об этих причинах, что я мог бы на самом деле сделать?

А теперь мой код ...

... куда я отправляю сообщение

- (void)sendMail
{
    NSData *vCards = (NSData *)ABPersonCreateVCardRepresentationWithPeople((CFArrayRef)self.selections);

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];  
    mc.mailComposeDelegate = self;  

    [mc setSubject:@"Contact"];

    [mc setMessageBody:@"<p>My message...<p>" isHTML:YES];  
    NSString *label = ([self.selections count] == 1)? (NSString *)ABRecordCopyCompositeName([self.selections objectAtIndex:0]): @"Contacts";

    [mc addAttachmentData:vCards mimeType:@"text/x-vcard" fileName:label];

    [self presentModalViewController:mc animated:YES];  
    [mc release];  
}

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {  
    switch (result) {  
        case MFMailComposeResultCancelled:  
            NSLog(@"Mail send canceled.");  
            break;  
        case MFMailComposeResultSaved:  
            NSLog(@"Mail saved.");  
            break;  
        case MFMailComposeResultSent:  
            NSLog(@"Mail sent.");  
            break;  
        case MFMailComposeResultFailed:  
            NSLog(@"Mail send error: %@.", [error localizedDescription]);  
            break;  
        default:  
            break;  
    }  
    [self dismissModalViewControllerAnimated:YES];  
}

Теперь я понимаю, что на самом деле я не делаю ничего полезного, если сообщение терпит неудачу, но должно ли сообщение даже попадать в исходящие сообщения пользователя, если оно терпит неудачу на уровне составления?

Я собираюсь представить другую версию с предупреждением об ошибке, но я сомневаюсь, что она будет.

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Я сделал похожую вещь, можете ли вы попробовать не отправлять с ней vcard?скажи мне, если это работает ...

1 голос
/ 09 декабря 2011

Это может быть просто неопределенная причина отклонения, связанная с тем, что вы не обрабатываете ошибку отправки. У меня очень похожая реализация для обратной связи. Я бы посоветовал показать предупреждение, объясняющее причину, и пользователю повторить попытку. Apple проверит вас практически на любую возможность.

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

Прошлой ночью на моем iPhone я получил уведомление от iTunesConnect о том, что мое приложение находится на рассмотрении> Ожидает проверки> Обрабатывается в App Store> Готово к продаже, все в быстрой последовательности.В Центре разрешения проблем больше нет заметок, и я не получил других писем от Apple по этому вопросу.Я рад, что все получилось, но у меня все еще есть сомнения, что какая-то ошибка в одном случае приведет меня к одной звезде до смерти.Извините, резолюция такая скучная.

Вот мое приложение в магазине: http://itunes.apple.com/us/app/cloner/id483981001?mt=8 (штекер).Спасибо всем за отличные предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...