Я недавно отправил приложение в 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];
}
Теперь я понимаю, что на самом деле я не делаю ничего полезного, если сообщение терпит неудачу, но должно ли сообщение даже попадать в исходящие сообщения пользователя, если оно терпит неудачу на уровне составления?
Я собираюсь представить другую версию с предупреждением об ошибке, но я сомневаюсь, что она будет.