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]; 
    }