Estoy desarrollando una aplicación de iPhone que instalará pocas aplicaciones de terceros en una empresa. Tengo la información sobre los ID del paquete. ¿Hay alguna manera de verificar si la aplicación ya está instalada, utilizando algunas API del sistema? Actualmente, la aplicación se instala de nuevo, sobrescribiendo la instalación actual. Necesito evitar esto de alguna forma. (La aplicación AppStore de Apple deshabilita la opción de instalación si la aplicación ya está instalada.)¿Cómo verificar programáticamente si hay una aplicación instalada?
Respuesta
Creo que esto no es posible directamente, pero si las aplicaciones registran los esquemas de uri, puede probarlo.
Un esquema de URI es por ejemplo fb://
para la aplicación de Facebook. Puede registrar eso en la info.plist de su aplicación. [UIApplication canOpenURL:url]
le dirá si una determinada URL se abrirá o no. Por lo tanto, si se abre fb://
, se indicará que hay una aplicación instalada que registró fb://
, que es una buena pista para la aplicación de Facebook.
// check whether facebook is (likely to be) installed or not
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Safe to launch the facebook app
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"fb://profile/200538917420"]];
}
"pero si las aplicaciones registran esquemas de uri, podría probar eso": podría ¿por favor explica esto un poco más? – attisof
He aquí un ejemplo para comprobar si la aplicación de Facebook se instala
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app is installed
}
para cualquiera que trate de hacer esto con iOS 9/Swift 2:
En primer lugar, usted tendrá que ' lista blanca' de la URL añadiendo lo siguiente a su archivo Info.plist
(una característica de seguridad - véase Leo Natan's answer):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
Después de eso, se puede preguntar si la aplicación está disponible y tiene un sistema registrado:
guard UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb://")!) else {
NSLog("No Facebook? You're a better man than I am, Charlie Brown.")
return
}
funcionó para mí, gracias –
Cuando se trata de redes sociales, lo mejor es comprobar múltiples esquemas. (Debido esquema 'FB' es obsoleto para IOS9 SDK, por ejemplo.):
NSArray* fbSchemes = @[
@"fbapi://", @"fb-messenger-api://", @"fbauth2://", @"fbshareextension://"];
BOOL isInstalled = false;
for (NSString* fbScheme in fbSchemes) {
isInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:fbScheme]];
if(isInstalled) break;
}
if (!isInstalled) {
// code
return;
}
De Info.plist supuesto, también debe contener todos los esquemas necesarios:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Swift 3.1, 3.2 Swift, Swift 4
if let urlFromStr = URL(string: "fb://") {
if UIApplication.shared.canOpenURL(urlFromStr) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(urlFromStr, options: [:], completionHandler: nil)
} else {
UIApplication.shared.openURL(urlFromStr)
}
}
}
Añadir estos en Info.plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
- 1. Detectando programáticamente si hay una aplicación instalada en el iPhone
- 2. ¿Cómo puedo verificar mediante programación si hay una característica del servidor instalada en Windows Server 2008?
- 3. Pruebe si hay una fuente instalada
- 4. ¿cómo puedo verificar si una impresora está instalada y lista usando C#?
- 5. Cómo verificar la aplicación instalada en el dispositivo iPhone
- 6. Cómo verificar si iCloud está configurado programáticamente
- 7. WIX: ¿Cómo detectar si está instalada una aplicación de terceros?
- 8. ¿Cómo puedo verificar si una aplicación se ejecuta en Android?
- 9. Detectar desde el navegador si está instalada una aplicación específica
- 10. ¿Cómo verificar programáticamente si el hotspot está habilitado o deshabilitado?
- 11. Detectar desde el navegador si hay una aplicación específica instalada en Android
- 12. ¿Cómo puedo verificar si Windows Installer 3.1 o una versión superior está instalada?
- 13. ¿Detecta una aplicación instalada o no?
- 14. Encuentre programáticamente la versión instalada de pywin32
- 15. ¿Cómo verificar si existe una clave appSettings?
- 16. Detectando si está instalada una base de datos Oracle
- 17. Verificar si Solidworks está instalado?
- 18. ¿Cómo puedo verificar si todavía hay un socket abierto?
- 19. Cómo verificar si una NSWindow está visible
- 20. ¿Cómo saber si una aplicación está instalada desde google play o de carga lateral?
- 21. ¿Cómo puedo determinar si un usuario tiene una aplicación de iOS instalada?
- 22. Comprueba si hay una aplicación Mac OS X
- 23. ¿Hay alguna manera de verificar si la firma de una aplicación se depura o publica?
- 24. ¿Cómo verificar si hay miembros no utilizados en struct?
- 25. ¿Cómo salgo de una aplicación mac programáticamente?
- 26. ¿Cómo salir de una aplicación WPF programáticamente?
- 27. ¿Cómo comienzo una aplicación JNLP programáticamente?
- 28. Una aplicación instalada, muestra dos entradas en el iniciador
- 29. ¿Cómo verificar si existe una propiedad?
- 30. desactivó programáticamente una aplicación predeterminada
posible duplicado de [cómo comprobar la aplicación instalada en el dispositivo iphone] (http://stackoverflow.com/questions/3243567/how-to-check-installed-application-in-iphone-device) –
tal vez este wiki ayude usted también: http://wiki.akosma.com/IPhone_URL_Schemes El problema con la mayoría de los esquemas de url es que no puede pasar datos si no tiene los id de la aplicación a la que llama –
http://stackoverflow.com/questions/32643522/fbsdksharedialog-of-facebook-sdk-is-not-working-on-ios9/39159507#39159507 – TharakaNirmana