RSSフィードを解析し、そのコンテンツをテーブルビューに表示する非常にシンプルなアプリがあります。 AppStoreで入手できます。 Crashlyticsのクラッシュレポートを統合しています。最近、2つの報告を受けました。これらは解読するのが少し難しいです。
これは、iOS10.2.1を実行しているiPhone6で発生しました。
これは、iOS10.2.1を実行しているiPhone5からのものです。
プライバシー違反が原因でクラッシュしていると表示されていますが、アプリで許可が必要なサービスにアクセスしていません。
また、com.Apple.root.default-qosを検索すると、これはバックグラウンドスレッドと関係があるのではないかと思います。バックグラウンドスレッドを使用する唯一の場所は、RSSフィードデータを解析することです。
DispatchQueue.global(qos: .background).async {
guard let data = try? Data(contentsOf: URL) else {
return
}
do {
let xmlDoc = try AEXMLDocument(xml: data)
if let items = xmlDoc.root["channel"]["item"].all {
self.posts.removeAll()
for item in items {
let title = item["title"].value ?? ""
// ...
self.posts.append(jobPost)
}
DispatchQueue.main.async {
self.saveposts(self.posts)
self.posts.sort { $0.publishDate > $1.publishDate }
self.tableView.reloadData()
UIApplication.shared.toggleNetworkActivityIndicator(show: false)
self.toggleUI(enable: true)
if self.refreshControl.isRefreshing { self.refreshControl.endRefreshing() }
}
}
} catch let error as NSError {
print("RSS parsing failed: \(error)")
self.showErrorAlert(error)
UIApplication.shared.toggleNetworkActivityIndicator(show: false)
self.toggleUI(enable: true)
if self.refreshControl.isRefreshing { self.refreshControl.endRefreshing() }
}
}
IOS9.3.5を実行しているiPhone5とiOS10.2を実行しているシミュレーターでこのコードをテストしましたが、クラッシュは発生しませんでした。
この問題を追跡する他の方法はありますか?
私はあなたのすべての許可を再確認します。私の場合、iOS10以降、ユーザーのカメラロールにデータを保存するための権限が必要です。私のアプリでは、デフォルトの共有シートを表示していましたが、ユーザーが「写真を保存」を選択すると、アプリがクラッシュし、これらの非常に役に立たないエラーメッセージのいずれかが表示されました。追加した
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Allow you to save charts and graphs from the app to your phone.</string>
わたしの info.plist
、clean
&run
。そして、すべての問題が解決されました。