Pregunta

Cuando intente acceder por primera vez a la alassetslibrary de un usuario, el sistema operativo les presentará un diálogo pidiendo permiso. Si no lo permiten, se llamará a un bloqueo de fallas y siempre se llamará en el futuro. ¿Hay alguna forma de forzar una solicitud de esta solicitud de autorización nuevamente?

Noto en la aplicación Maps, que informan al usuario que vaya a la aplicación Configuración para activar los servicios de ubicación con un botón. Sin embargo, no hay forma de que sepa para abrir programáticamente la aplicación Configuración. ¿Debo mostrar instrucciones sobre cómo encender los servicios de ubicación?

¿Fue útil?

Solución

No puede abrir la aplicación Configuración de manera aprobada por Apple. Lo mejor que puede esperar es atrapar el error y luego mostrar una vista UialertView u otra vista con instrucciones sobre cómo hacer esto. Eche un vistazo al último v. De la aplicación Dropbox para obtener una idea sobre cómo instruyen al usuario.

Otros consejos

Cuando intenta acceder a la biblioteca desde su código, puede usar el controlador de errores para detectar el error y mostrar una alerta especificando al usuario qué hacer.

Ejemplo

failureBlock:^(NSError *error) {
    // error handling
    if (error.code == ALAssetsLibraryAccessGloballyDeniedError) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" 
            message:@"Error loading image... \nEnable Location Services in 'Settings -> Location Services'." 
            delegate:self cancelButtonTitle:@"OK" 
            otherButtonTitles:nil, nil];
        [alert show];
    } else if (error.code == ALAssetsLibraryAccessUserDeniedError) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" 
            message:[NSString stringWithFormat:@"Error loading image... \nEnable Location Services in 'Settings -> Location Services' for %@.", [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"]] 
            delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"Error loading image..." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top