【问题标题】:Privacy Problems with MFMailComposeViewController and iOS 10 only仅限 MFMailComposeViewController 和 iOS 10 的隐私问题
【发布时间】:2016-10-02 18:57:19
【问题描述】:

使用 Xcode 8.0 重建已发布的应用程序,该应用程序使用 PLCrashReporter、AWS Cognito/SNS 和 Google 分析框架。

仅在 iOS 10.x 设备上看到,在运行我的测试存储桶期间不再显示邮件撰写 vc。在 Xcode 控制台中,当达到 if([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 设置按预期工作。

有人看过这个吗?

【问题讨论】:

  • 我也得到了类似的日志,我还在努力描述它的来源,搜索谷歌并没有给出任何积极的结果,让我们继续关注。
  • 是的,我无法将触发 iOS 10 的原因归零。只是为了笑,我已将每一个隐私描述添加到 plist 中,但仍然不起作用,但在至少消除了这些可能性。

标签: objective-c ios10 xcode8 mfmailcomposeviewcontroller plcrashreporter


【解决方案1】:

所以经过大量分析,我终于在上周末解决了这个问题。知道它实际上与 iOS 10 中的 MFMailComposeViewController 隐私更改无关的关键是以下日志消息:

[MC] Result: YES

如果您得到“否”,那么您有隐私问题,但“是”表示隐私不是问题。无论如何,我终于发现,问题是我在 iOS 10 中运行的代码中存在时间问题。

在相同的设备型号上进行测试,一个带有 iOS 10 和一个带有 iOS 9.3.5,问题是当另一个警报已经出现时,一个错误路径 UIAlertController present request 被调用。在 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 将跟随它嵌入到警报按钮操作中。

【讨论】:

    【解决方案2】:

    尝试弹出共享活动对话框(使用 UIActivityViewController)时,我收到了相同的日志消息。该代码在 ios9 中运行良好,但在 ios10 中失败(而不是对话框,我得到 2 个弹出窗口,其中只有“更多...”)。我在一个数组中传递了一个图像,作为“activityItems:[myImage]”。问题似乎在于该参数需要一个非可选值数组,因此更改为 '[myImage!]' 解决了问题。

    不确定这是否是所描述问题的解决方案,但也许类似的方法会起作用。

    【讨论】:

      【解决方案3】:

      对我有用!!

      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:@"demo@gmail.com"]];
              [mailCont setMessageBody:@"" isHTML:NO];
      
              [self presentViewController:mailCont animated:YES completion:nil];
          }
      

      【讨论】:

        猜你喜欢
        • 2011-03-15
        • 2018-03-06
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多