我最近向Apple提交了一个应用程序,遗憾的是它被拒绝了。给出的原因是它有一封电子邮件给朋友功能,但没有用。 (不用说,但它在我的设备上运行良好)。我正在使用MFMailComposeViewController,填充主题和正文并添加附件。然后,用户必须执行剩余的操作才能发送。当我要求详细说明时,审稿人说......
我们与您的应用一起发送的电子邮件列在Gmail和雅虎测试帐户“发件箱”中,并显示错误,指出无法联系到外发邮件服务器。
...这应该算作我的应用程序的错误吗?我实际上并没有发送邮件,我只是使用内置的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];
}
现在我明白,如果邮件失败,我实际上并没有做任何有用的事情,但如果在撰写级别失败,该邮件是否应该转到用户的发件箱?
我将提交另一个警告错误详情的版本,但我怀疑会有任何错误。
答案 0 :(得分:3)
我做了类似的事情,你能尝试不发送vcard吗?告诉我它是否有效......
答案 1 :(得分:1)
这可能只是一个模糊的拒绝原因,因为您没有处理发送错误。我有一个非常类似的反馈实现。我会考虑显示一个警告说明原因是什么,并让用户再试一次。 Apple会检查您的几乎所有可能性。
答案 2 :(得分:0)
昨晚在我的iPhone上,我收到了来自iTunesConnect的通知,我的应用程序处于审核状态&gt;等待审核&gt; “App Store处理”&gt;准备出售,一切都在快速连续。决议中心没有进一步的说明,我没有收到Apple关于此问题的其他电子邮件。我很高兴这一切都得到了解决,但仍然有一个挥之不去的疑问,一些边缘案例的错误将让我死一星。对不起,决议太无聊了。
这是我在商店中的应用:http://itunes.apple.com/us/app/cloner/id483981001?mt=8(插件)。感谢大家提出的很好的建议。