5

Odtworzenie już opublikowanej aplikacji z Xcode 8.0, która korzysta ze sterowników PLCrashReporter, AWS Cognito/SNS i Google analytics.Problemy z prywatnością za pomocą MFMailComposeViewController i iOS 10 only

Widząc to tylko na urządzeniach z systemem iOS 10.x, wiadomość e-mail compose vc nie jest już wyświetlana podczas uruchamiania mojego wiadra testów. W konsoli Xcode widzę te wiadomości natychmiast po if ([MFMailComposeViewController.canSendMail]) zostanie osiągnięty:

[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 

znalazłem jedno odwołanie się do tych rodzaju komunikatów konsoli tutaj: UIActivityViewController crash on iOS 10

Ale moja aplikacja nie wykorzystywać zdjęcia, mimo to próbowałem dodać opis prywatności zdjęć zaznaczony w linku do mojego info.plist na uśmiech, ale oczywiście bez radości. Problem utrzymuje się.

Moja aplikacja używa kamery do skanowania kodów kreskowych. Opis prywatności kamery znajduje się na stronie info.plist i od zeszłego roku. Aplikacja nie wykorzystuje innych funkcji, dla których wymagane są opisy prywatności.

Ten sam dokładny kod i konfiguracja XC8 po podłączeniu urządzenia iOS 9.3.5 działają zgodnie z oczekiwaniami.

Ktoś jeszcze to widział?

+0

Otrzymuję również podobne logi, nadal próbuję scharakteryzować źródło tego, a wyszukiwanie google nie przyniosło żadnych pozytywnych rezultatów, zostańmy z nami. –

+0

Tak, nie byłem w stanie wyzerować tego, co uruchamia to na iOS 10. Tylko dla uśmiechów Dodałem każdy opis prywatności do pliku plist, nadal nie działa, ale przynajmniej wyeliminował te możliwości. – drshock

Odpowiedz

1

Po wielu analizach w końcu doszedłem do tego problemu w zeszły weekend. Kluczem do wiedząc, że faktycznie nie miał nic wspólnego z MFMailComposeViewController zmian prywatności w iOS 10 była ta wiadomość dziennika:

[MC] Result: YES 

Jeśli masz „nie” wtedy masz problem prywatności, ale TAK wskazuje, że prywatność była nie jest problemem. W końcu stwierdziłem, że w moim przypadku problem tkwił w problemie z wykryciem czasu w moim kodzie, który został wykryty w systemie iOS 10.

Na tym samym, testowanym modelu urządzenia, z systemem iOS 10 i jednym z systemem iOS 9.3. 5 problemem była ścieżka błędu UIAlertController, w którym wywołano żądanie, gdy inny alert został już przedstawiony. W przypadku iOS 9.x i wcześniejszych było to "szczęście", że oczekiwany wygrał i został zaprezentowany po raz pierwszy za każdym razem. Ale na iOS 10 nie udało się to za każdym razem, a to zablokowało MFMailComposeViewController w mojej sytuacji.

Poniższy kod był problematyczny:

[self presentViewController:crashMailAlertController animated:YES completion:nil]; 

zastępując go z tym kodem rozwiązany:

[self dismissViewControllerAnimated:YES completion:^{ 
      [self presentViewController:crashMailAlertController animated:YES completion:nil]; 
     }]; 

W moim przypadku wszystko czego chciałem mieć pewność, że ta ścieżka błąd UIAlertController zawsze przedstawiane po pierwsze, ponieważ było to rzadkie zdarzenie (tylko w przypadku awarii), dlatego odrzucenie wcześniejszego alertu było pierwszym krokiem do uzyskania go, aby podążał za sterownikiem MFMailComposeViewController, który został osadzony w akcji przycisku alertu.

0

Otrzymałem ten sam komunikat dziennika, gdy próbowałem otworzyć okno dialogowe Shared Activities (za pomocą UIActivityViewController). Kod działał dobrze w ios9, ale kończyło się niepowodzeniem w ios10 (zamiast okna, otrzymywałem 2 wyskakujące okienka z "Więcej ..." w nich). Przechodziłem na jednym obrazie w tablicy jako "activityItems: [myImage]". Wydaje się, że problem polegał na tym, że ten argument oczekuje tablicy wartości nie-opcjonalnych, więc zmiana na "[myImage!]" Rozwiązała problem.

Nie jestem pewien, czy to rozwiązanie opisanego problemu, ale może coś podobnego zadziała.

0

Jego praca dla mnie !!

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