¿Cómo puedo determinar si el usuario de un dispositivo iOS tiene una aplicación específica instalada? Si sé el nombre de la aplicación ¿puedo usar canOpenURL
de alguna manera?¿Cómo puedo determinar si un usuario tiene una aplicación de iOS instalada?
10
A
Respuesta
11
Si la aplicación admite un esquema de URL personalizado, puede marcar UIApplication
-canOpenURL:
. Eso solo le dirá que una aplicación capaz de abrir ese esquema de url está disponible, no necesariamente la aplicación que es. No hay un mecanismo disponible públicamente para inspeccionar qué otras aplicaciones ha instalado un usuario en su dispositivo.
Si controla ambas aplicaciones, también puede utilizar un llavero o un cartón para compartir entre ellas con más detalle.
8
Puede comprobar de esta manera, así:
BOOL temp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourAppURL://"]];
if(!temp)
{
NSLog(@"INVALID URL"); //Or alert or anything you want to do here
}
0
para los usuarios de SWIFT
let urlPath: String = "fb://www.facebook.com"
let url: NSURL = NSURL(string: urlPath)!
let isInstalled = UIApplication.sharedApplication().canOpenURL(url)
if isInstalled {
print("Installed")
}else{
print("Not installed")
}
0
Facebook utiliza esta https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m internamente, puede hacer lo mismo
#define FBSDK_CANOPENURL_FACEBOOK @"fbauth2"
+ (BOOL)isFacebookAppInstalled
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK];
});
NSURLComponents *components = [[NSURLComponents alloc] init];
components.scheme = FBSDK_CANOPENURL_FACEBOOK;
components.path = @"/";
return [[UIApplication sharedApplication]
canOpenURL:components.URL];
}
Código de Swift 3
static func isFacebookAppInstalled() -> Bool {
let schemes = ["fbauth2", "fbapi", "fb"]
let schemeUrls = schemes.flatMap({ URL(string: "\($0)://") })
return !schemeUrls.filter({ UIApplication.shared.canOpenURL($0) }).isEmpty
}
Cuestiones relacionadas
- 1. ¿Detecta qué versión de una aplicación está instalada en iOS?
- 2. Detectar desde el navegador si está instalada una aplicación específica
- 3. cómo detectar si el usuario tiene una aplicación en Cocoa
- 4. ¿Cómo determinar si un campo tiene foco?
- 5. WIX: ¿Cómo detectar si está instalada una aplicación de terceros?
- 6. Determinar si QTableView tiene un editor abierto
- 7. ¿Cómo puedo probar si el dispositivo IOS tiene capacidades telefónicas?
- 8. ¿Cómo determinar si un dispositivo Android tiene una pantalla táctil?
- 9. ¿Cómo determinar si un flotador tiene una parte fraccionaria?
- 10. ¿Cómo puedo determinar si una aplicación .NET tiene 32 o 64 bits?
- 11. iOS: ¿cómo verificar si una cadena tiene solo dígitos?
- 12. Cómo determinar si una anotación está dentro de MKPolygonView (iOS)
- 13. ¿Cómo puedo determinar si mi aplicación de Android tiene pérdida de memoria?
- 14. ¿Cómo verificar programáticamente si hay una aplicación instalada?
- 15. ¿Cómo puedo determinar si un objeto o referencia tiene una coerción de cadena válida?
- 16. Detectando programáticamente si hay una aplicación instalada en el iPhone
- 17. ¿Cómo determinar si una matriz asociativa tiene una clave?
- 18. ¿Cómo puedo eliminar mi aplicación de empresa iOS en el iPhone de un determinado usuario?
- 19. ¿Cómo puedo determinar si una URL redirige?
- 20. ¿Cómo verificar si un usuario tiene una suscripción (facturación en la aplicación de Android)?
- 21. Cómo saber cuándo un usuario evalúa una aplicación/juego iOS
- 22. ¿Puede determinar mediante programación si un usuario tiene licencia para un paquete?
- 23. Gravatar: cómo sé si un usuario tiene una imagen real
- 24. ¿Cómo puedo determinar si se muestra un botón de retroceso?
- 25. ¿Cómo puedo determinar si un objeto ConstructorInfo tiene un parámetro no administrado?
- 26. ¿Cómo puedo verificar si mi aplicación tiene foco?
- 27. ¿Cómo puedo saber si un proceso tiene una interfaz gráfica?
- 28. Cómo determinar si la aplicación es la aplicación web
- 29. ¿Cómo determinar si una cadena tiene caracteres no alfanuméricos?
- 30. ¿Cómo puedo determinar si un usuario ha presionado en una UITableViewCell durante 2 segundos?
La primera línea no se compila para mí, pero esto hizo: 'temp BOOL = [[UIApplication sharedApplication] canOpenURL: [NSURL URLWithString: @ "yourAppURL: //"]];' – newenglander
lo siento, pero lo es la URL de la aplicación? ¿es el nombre de la aplicación o algo así? – ColdSteel