Ho un'app che utilizza la Rubrica. Quando è in esecuzione in iOS 6, esegue questo codice quando l'utente esegue qualcosa che richiede l'accesso alla Rubrica.L'app si è bloccata in iOS 6 quando l'utente cambia i permessi di accesso ai contatti
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();
}
Questo funziona perfettamente: sono in grado di leggere le informazioni dei contatti e quando l'utente negato l'accesso, l'applicazione reagisce di conseguenza.
Tuttavia, se l'utente:
- Consente Contatti accesso in app,
- si chiude l'applicazione,
- Goes su Impostazioni-> Privacy-> Contatti e disabilita Contatti di accesso per l'applicazione,
- esegue l'applicazione,
- Mentre l'applicazione è in esecuzione in background va a impostazioni e consente l'accesso di contatto per l'applicazione,
l'app si arresta immediatamente all'interno di main()
senza alcuna eccezione o una significativa traccia di stack. Ho provato ad attivare "tutte le eccezioni" e il punto di interruzione [NSException raise]
, ma questo non mi ha dato ulteriori informazioni.
L'arresto anomalo può essere riprodotto anche se l'applicazione non esegue il codice sopra durante il lancio.
Cosa sta succedendo qui? C'è una richiamata a cui dovrei iscrivermi?
Come da risposta di rmaddy in basso, questo non è un crash, è iOS che termina l'app. –
Stesso problema anche per me, ma è per l'autorizzazione di posizione per la mia app :( –