Mam aplikację korzystającą z książki adresowej. Podczas działania w systemie iOS 6 uruchamia ten kod, gdy użytkownik robi coś, co wymaga dostępu do książki adresowej.Aplikacja uległa awarii w systemie iOS 6 po zmianie użytkownika Uprawnienia dostępu do kontaktów
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined)
{
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error)
{
if (granted)
{
showContactChooser();
}
});
CFRelease(addressBookRef);
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized)
{
showContactChooser();
}
else
{
showAccessDeniedAlert();
}
Działa to doskonale: Jestem w stanie odczytać informacji i kontaktów, gdy użytkownik odmawia dostępu, aplikacja reaguje odpowiednio.
Jednakże, jeśli użytkownik:
- pozwala Kontakt dostępu w aplikacji,
- Zamyka aplikację,
- Przejście do Ustawienia-> polityką prywatnością> Kontakty i wyłącza Kontakt dostęp do aplikacji,
- Uruchamia aplikację
- Podczas gdy aplikacja jest uruchomiona w tle przechodzi do ustawień i umożliwia dostęp do kontaktu z aplikacji
aplikacja natychmiast zawiesza wewnątrz main()
bez informacji wyjątek lub znaczącego śladu stosu. Próbowałem włączyć punkt przerwania "wszystkie wyjątki" i [NSException raise]
, ale to nie dało mi więcej informacji.
Wypadek może być powielana nawet jeśli aplikacja nie działa powyższy kod podczas startu.
Co się tutaj dzieje? Czy istnieje połączenie zwrotne, które powinienem subskrybować?
Zgodnie z odpowiedzią udzieloną poniżej przez rmaddy, to nie jest awaria, to iOS kończy aplikację. –
sam problem dla mnie, ale to dla lokalizacji zgodę na moim app :( –