So after a lot of analysis, I finally solved this problem last weekend. The key to understanding this, in fact, had nothing to do with changing the privacy of MFMailComposeViewController in iOS 10, this log message was:
[MC] Result: YES
If you get NO, then you have a privacy problem, but YES indicates that privacy is not a problem. Finally, I found in my case that the problem was that the problem was in my code that was discovered in iOS 10.
In the same device model being tested, with iOS 10 and iOS 9.3.5, the problem was that the UIAlertController call request was called when another warning was already presented. On iOS 9.x and earlier, it was just “luck” that the expected one won and received the first time each time. But on iOS 10, he did not do this every time, and then blocked the MFMailComposeViewController in my situation.
The following code was problematic:
[self presentViewController:crashMailAlertController animated:YES completion:nil];
Replacing it with this code resolved the problem:
[self dismissViewControllerAnimated:YES completion:^{ [self presentViewController:crashMailAlertController animated:YES completion:nil]; }];
In my case, all I wanted was to ensure that this error path of the UIAlertController was always presented first, as it was a rare event (only when the failure occurred), so rejecting any previous warning was first a ticket to receive it that MFMailComposeViewController will follow as it was built into the action of the alert button.
source share