5

使用PLCrashReporter,AWS Cognito/SNS和Google分析框架重建已发布的应用程序。仅MFMailComposeViewController和iOS 10的隐私问题

看到仅在iOS 10.x设备上,运行我的测试存储桶期间邮件撰写vc不再显示。在Xcode控制台我立刻看到这些消息是否到达时([MFMailComposeViewController.canSendMail]):

[MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles 
[MC] Filtering mail sheet accounts for bundle ID: [MY BUNDLE ID], source account management: 1 
[MC] Result: YES 

我发现一个参考这些类型的控制台消息的位置:UIActivityViewController crash on iOS 10

但我的应用程序不利用照片,我仍然尝试将链接中指出的照片隐私描述添加到我的info.plist中,但当然没有快乐。问题依然存在。

我的应用程序确实使用相机扫描条形码。摄像机的隐私描述在info.plist中,并且从去年开始。该应用程序不使用其他需要隐私描述的功能。

连接iOS 9.3.5设备时的相同准确代码和XC8设置按预期工作。

任何人看到这个呢?

+0

我得到类似的日志,以及,我仍然试图表征它的来源,以及搜索谷歌没有给出任何积极的结果,让我们敬请期待。 –

+0

是的,我还没有能够将iOS 10上的触发事件归结为什么。只是为了微笑,我已经向plist添加了每一个隐私描述,但仍然无法工作,但至少消除了这些可能性。 – drshock

回答

1

因此,经过多次分析,我终于在上周末找出了这个问题。要知道它实际上没有任何关系,在iOS的10 MFMailComposeViewController隐私变化的关键是该日志消息:

[MC] Result: YES 

如果你得到一个“NO”,那么你有隐私问题,而是一个有表示隐私是没什么大不了。无论如何,我终于在我的例子中发现,问题在于我的代码在iOS 10中运行的时间问题。

在同一个确切的设备型号上测试,一个使用iOS 10,一个使用iOS 9.3。 5问题是当另一个警报已经出现时,调用错误路径UIAlertController当前请求。在iOS 9.x和更早的版本中,预期的每次赢得并首次呈现的只是“幸运”。但是在iOS 10上,它每次都没有这样做,然后在我的情况下阻止了MFMailComposeViewController。

下面的代码是有问题的:

[self presentViewController:crashMailAlertController animated:YES completion:nil]; 

与此代码替换它解决了这个问题:

[self dismissViewControllerAnimated:YES completion:^{ 
      [self presentViewController:crashMailAlertController animated:YES completion:nil]; 
     }]; 

在我的情况下,所有我想要的是,以确保此错误路径UIAlertController总是呈现首先,因为这是一件罕见的事件(只有在发生崩溃时),所以先关闭任何先前的警报即为获取警报的票据,以便MFMailComposeViewController将按照警报按钮操作中嵌入的方式进行操作。

0

当试图弹出共享活动对话框(使用UIActivityViewController)时,我收到了相同的日志消息。代码在ios9中工作正常,但在ios10中失败(而不是对话框,我在其中只用'More ...'获得了2个弹出窗口)。我将一个图像作为“activityItems:[myImage]”传入数组中。看来问题是这个参数需要一个非可选值的数组,所以改为'[myImage!]'解决了这个问题。

不知道这是否是所述问题的解决方案,但可能类似的东西会起作用。

0

它的工作对我来说!

if([MFMailComposeViewController canSendMail]) { 
     MFMailComposeViewController *mailCont = [[MFMailComposeViewController alloc] init]; 
     mailCont.mailComposeDelegate = self;  // Required to invoke mailComposeController when send 

     [mailCont setSubject:@"Mail Subject"]; 
     [mailCont setToRecipients:[NSArray arrayWithObject:@"[email protected]"]]; 
     [mailCont setMessageBody:@"" isHTML:NO]; 

     [self presentViewController:mailCont animated:YES completion:nil]; 
    }