ios - tienes - quitar permisos facebook android
¿Cómo abrir Configuración mediante programación en la aplicación de Facebook? (15)
Necesito abrir Configuración programáticamente desde mi aplicación. Busqué en SO, pero en todas partes la gente dice que es imposible. Pero hoy vi que está implementado en la aplicación de Facebook. Hay un botón en un UIAlertView
y cuando hace clic en él, abre la Configuración. Entonces, de hecho, esto es posible para abrir Configuración, he sido testigo de esto yo mismo. Pero, ¿cómo hacer eso? ¿Alguien sabe cómo Facebook hace eso?
¡En iOS 8 puedes abrir Configuración programáticamente!
Aquí está el código:
- (void)openSettings
{
BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
if (canOpenSettings) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
}
Si su aplicación tiene su propio paquete de configuraciones, la configuración se abrirá mostrando la configuración de su aplicación. Si su aplicación no tiene un paquete de configuración, se mostrará la página de configuración principal.
¡En iOS 8 puedes abrir Configuración programáticamente!
Aquí está la lista de URL conocidas actualmente en la aplicación Configuración:
- (void) openSettings
{
if (&UIApplicationOpenSettingsURLString != nil)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
else
NSLog(@"UIApplicationOpenSettingsURLString is not available in current iOS version");
}
- prefs: root = General & path = Acerca de
- prefs: root = General & path = ACCESIBILIDAD
- prefs: root = AIRPLANE_MODE
- prefs: root = General & path = AUTOLOCK
- prefs: root = General & path = USO / USO CELULAR
- prefs: root = Brillo
- prefs: root = General & path = Bluetooth
- prefs: root = General & path = DATE_AND_TIME
- prefs: root = FACETIME
- prefs: root = General
- prefs: root = General & path = Teclado
- prefs: root = CASTILLO
- Preferencias: root = CASTLE & path = STORAGE_AND_BACKUP
- prefs: root = General & path = INTERNACIONAL
- prefs: root = LOCATION_SERVICES
- prefs: root = ACCOUNT_SETTINGS
- prefs: root = MÚSICA
- prefs: root = MUSIC & path = EQ
- prefs: root = MUSIC & path = VolumeLimit
- prefs: root = General & path = Network
- prefs: root = NIKE_PLUS_IPOD
- prefs: root = NOTES
- prefs: root = NOTIFICATIONS_ID
- prefs: root = Teléfono
- prefs: root = Fotos
- prefs: root = General & path = ManagedConfigurationList
- prefs: root = General & path = Restablecer
- prefs: root = Sonidos y ruta = Tono de llamada
- prefs: root = Safari
- prefs: root = General & path = Asistente
- prefs: root = Sonidos
- prefs: root = General & path = SOFTWARE_UPDATE_LINK
- prefs: root = TIENDA
- prefs: root = TWITTER
- prefs: root = General & path = USO
- prefs: root = VIDEO
- prefs: root = General & path = Red / VPN
- prefs: root = Fondo de escritorio
- Preferencias: root = WIFI
- prefs: root = INTERNET_TETHERING
En lugar de usar prefs:
, solo usa App-Prefs:
if ([[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString: @"App-Prefs:root=WIFI"]]) {
[[UIApplication sharedApplication] openURL: [NSURL URLWithString:@"App-Prefs:root=WIFI"]];
}
.
Todo está aquí: https://medium.com/@thanhvtrn/how-to-open-settings-wifi-in-swift-on-ios-10-1d94cf2c2e60
La alerta en la aplicación de Facebook a la que se refiere esta pregunta es una alerta estándar que iOS muestra cuando configura UIRequiresPersistentWiFi en SÍ en sus archivos Info.plist y el usuario inicia su aplicación sin una conexión de red.
Para resumir la discusión aquí:
- No hay una URL que pueda usar para llegar al nivel raíz de la aplicación de Configuración.
- Puede enviar al usuario a la sección de su aplicación de Configuración usando UIApplicationOpenSettingsURLString en iOS 8.
- Su aplicación puede mostrar la misma alerta que Facebook , que abre el nivel raíz de la aplicación Configuración, configurando UIRequiresPersistentWiFi en SÍ.
La respuesta de Vito Ziv en Swift.
func openSettings() {
UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!, completionHandler: nil)
}
No puedes, no hay una llamada API para hacer esto.
Solo los diálogos del sistema, los cuadros de diálogo de Apple Frameworks, pueden abrir la aplicación de configuración. En iOS 5, había un esquema de aplicación de URL para abrir el diálogo del sistema, pero Apple lo eliminó más tarde.
Con la llegada de iOS 8 puede abrir el cuadro de diálogo de configuración en su página de aplicaciones.
if (&UIApplicationOpenSettingsURLString != NULL) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
else {
// Present some dialog telling the user to open the settings app.
}
Para abrir la configuración de nuestra propia aplicación en iOS 8 and later
, use el siguiente código.
- (void) openSettings
{
if(&UIApplicationOpenSettingsURLString != nil)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
else
NSLog(@"UIApplicationOpenSettingsURLString is not available in current iOS version");
}
Para referencia y descripción detallada, por favor siga
Abrir la aplicación de configuración mediante programación en iOS 8
Si desea abrir la configuración de la aplicación, necesita el método de escritura con UIApplicationOpenSettingsURLString.
fileprivate func openSettings() {
UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!)
}
Si necesita abrirá una de muchas configuraciones, necesita usar esta función
fileprivate func openSettings() {
UIApplication.shared.open(URL(string:"App-Prefs:root=General")!)
}
Si está usando Swift 3 esta es la sintaxis
UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!, options: [:]) { (success) in
if success {
print("settings opened");
}
}
Un memo sobre prefs:root=
y Prefs:root
.
Sí, nuestra aplicación fue RECHAZADA por Apple debido a las prefs:root=
y App-Prefs:root
esquema de URL App-Prefs:root
hoy. Ellos son API privados.
Para Swift 4,
Solo UIApplication.openSettingsURLString es una API pública para abrir Configuración.
Aquí hay un ejemplo de Swift 3 con UIAlertController y UIAlertAction.
func showSettingsPopup() {
let alertVC = UIAlertController(title: "Notifications disabled", message: "Please, turn on notifications if you want to receive a reminder messages.", preferredStyle: .alert)
let close = UIAlertAction(title: "Close", style: .destructive, handler: { (action) in
print("close action handler")
})
let openSettings = UIAlertAction(title: "Open settings", style: .default, handler: { (action) in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings are opened: /(success)")
})
}
})
alertVC.addAction(openSettings)
alertVC.addAction(close)
present(alertVC, animated: true, completion: nil)
}
SWIFT 3
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
if (&UIApplicationOpenSettingsURLString != NULL)
en iOS 8+ siempre es VERDADERO. Entonces puedes editar así
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
}
(con el nuevo openURL para iOS 10)
if (&UIApplicationOpenSettingsURLString != NULL) {
UIAlertView_Blocks *alertView = [[UIAlertView_Blocks alloc] initWithTitle:NSLocalizedString(@"Camera Access Denied", nil)
message:NSLocalizedString(@"You must allow camera access in Settings", nil)
delegate:nil
cancelButtonTitle:NSLocalizedString(@"Cancel", nil)
otherButtonTitles:NSLocalizedString(@"Open Settings", nil), nil];
[alertView showWithDissmissBlock:^(NSInteger buttonIndex) {
if (alertView.cancelButtonIndex != buttonIndex) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}
}];
}
else {
UIAlertView_Blocks *alertView = [[UIAlertView_Blocks alloc] initWithTitle:NSLocalizedString(@"Camera Access Denied", nil)
message:NSLocalizedString(@"You must allow camera access in Settings > Privacy > Camera", nil)
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", nil)
otherButtonTitles:nil, nil];
[alertView showWithDissmissBlock:^(NSInteger buttonIndex) {
}];
}
if #available(iOS 10.0, *) {
if let url = URL(string: "App-Prefs:root=Privacy") {
UIApplication.shared.open(url, completionHandler: .none)
}
} else {
// Fallback on earlier versions
}
Abrir la configuración de privacidad en la aplicación