10

Mam dość prostą aplikację, która analizuje kanał RSS i wyświetla zawartość w widoku tabeli. Jest dostępny w App Store. Zgłoszenie awarii Crashlytics jest zintegrowane. Niedawno otrzymałem dwa raporty. Są one nieco trudne do rozszyfrowania.Rozbiło: com.apple.root.default-qos

To zdarzyło się w iPhone 6 z systemem iOS 10.2.1.

enter image description here

To z iPhone 5 z systemem iOS 10.2.1.

enter image description here

Choć mówi, że upaść z powodu naruszenia prywatności, nie mam dostępu do jakichkolwiek usług, które wymaga zezwolenia w mojej aplikacji.

Również wyszukiwanie com.apple.root.default-qos prowadzi mnie do przekonania, że ​​może to mieć coś wspólnego z wątkami tła. Jedynym miejscem, gdzie używam wątku tła, jest parsowanie danych kanału 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() } 
    } 
} 

testowałem ten kod na moim iPhone 5 z systemem iOS 9.3.5 i symulatorów systemem iOS 10,2 ale wystąpił żaden krach.

Czy istnieje inny sposób na znalezienie tego problemu?

+1

To wygląda na problem z uprawnieniami, czy na pewno nie używasz czegoś, co wymaga pozwolenia, a urządzenie, na którym testujesz, przyznaje już to uprawnienie? Zobacz [to] (http://stackoverflow.com/a/39416858/1305067) i [to] (http://stackoverflow.com/questions/41011660/app-crashes-when-running-on-iphone-with- naruszenie-jako-wyjątek). Również tutaj znajduje się [lista uprawnień] firmy Apple (https://developer.apple.com/library/content/qa/qa1937/_index.html). – paulvs

+0

Podwajałem wszystko. Na moim urządzeniu ma włączone standardowe dane komórkowe w Ustawieniach i to wszystko. Ponieważ moje urządzenie wciąż znajduje się w iOS 9, przetestowałem to ponownie, resetując symulator, który uruchamia system iOS 10.2 i ponownie instalowałem aplikację. Nadal nie ma awarii. Inną rzeczą jest to, że jeśli był to błąd związany z uprawnieniami, dostałbym całą wiadomość, której brakuje w komunikacie o błędzie z raportem o awarii, którego w tym przypadku nie miałem. – Isuru

+0

Należy również zauważyć, że zgłoszono tylko dwa wystąpienia (po jednym) tych błędów. Inni użytkownicy mają sesje bez awarii. – Isuru

Odpowiedz

3

Chciałbym dokładnie sprawdzić wszystkie twoje uprawnienia. W moim przypadku, począwszy od iOS10, potrzebujesz uprawnień do zapisywania rzeczy w rolce aparatu użytkownika. W mojej aplikacji pokazywałam domyślny arkusz udostępniania i kiedy tylko użytkownik wybrał "zapisz zdjęcie", aplikacja zawiesiła się z jednym z tych bardzo nieprzydatnych komunikatów o błędach. Dodałem

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

do mojego info.plist, clean & run. I wszystko, co problem został rozwiązany.