10

RSSフィードを解析し、その内容をテーブルビューで表示するかなり簡単なアプリがあります。それはApp Storeで利用可能です。私はCrashlyticsクラッシュ報告を統合しました。私は最近、2つのレポートを受け取りました。これらは解読するのが少し困難です。クラッシュ:com.apple.root.default-qos

これは、iOS 10.2.1を実行しているiPhone 6で発生しています。

enter image description here

これは、iOS 10.2.1を実行しているiPhone 5からです。

enter image description here

それが原因プライバシーの侵害にクラッシュだと言うにもかかわらず、私は私のアプリでの許可を必要とするすべてのサービスにアクセスしていませんよ。

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() } 
    } 
} 

私は、iOS 9.3.5およびiOSの10.2を実行しているシミュレータを実行している私のiPhone 5にこのコードをテストしたが、何のクラッシュが発生していません。

この問題を追跡する他の方法はありますか?

+1

これはアクセス許可の問題のようです。アクセス許可が必要なものを使用していないことを確認してください。 [this](http://stackoverflow.com/a/39416858/1305067)と[this](http://stackoverflow.com/questions/41011660/app-crashes-when-running-on-iphone-with-違反として - 例外として)。 また、Appleの[許可の一覧](https://developer.apple.com/library/content/qa/qa1937/_index.html)もあります。 – paulvs

+0

私はすべてをダブルチェックしました。私のデバイスでは、通常のセルラーデータが設定で有効になっています。それだけです。私のデバイスはまだiOS 9になっているので、iOS 10.2を実行しているアプリケーションを再インストールしたシミュレータをリセットしてもう一度テストしました。まだクラッシュはありません。もう一つのことは、本当にパーミッション関連のクラッシュだった場合、私はこのケースではなかったクラッシュレポートで、パーミッションにエラーメッセージが表示されない全体を取得します。 – Isuru

+0

また、私は、これらのエラーの2つの発生(それぞれ1つ)だけが報告されていることに注意する必要があります。他のユーザーには100%クラッシュフリーセッションがあります。 – Isuru

答えて

3

すべてのアクセス許可を2回確認します。私の場合は、iOS10からユーザのカメラロールに物を保存する権限が必要です。私のアプリでは、デフォルトの共有シートを表示していましたが、ユーザーが「写真を保存」を選択したときに、アプリケーションはこれらの非常に役立つエラーメッセージの1つでクラッシュしました。私は私のinfo.plistclean & run

<key>NSPhotoLibraryAddUsageDescription</key> 
    <string>Allow you to save charts and graphs from the app to your phone.</string> 

を追加しました。そして問題はすべて解決されました。