Je développe une application iPhone qui va installer quelques applications tierces dans une entreprise. J'ai les informations sur les ID de bundle. Existe-t-il un moyen de vérifier si l'application est déjà installée, en utilisant certaines API système? Actuellement, l'application est à nouveau installée, écrasant l'installation actuelle. Je dois empêcher cela d'une certaine manière. (L'application AppStore d'Apple désactive l'option d'installation si l'application est déjà installée.)Comment vérifier par programme si une application est installée?
Répondre
Je pense que ce n'est pas possible directement, mais si les applications enregistrent des schémas d'uri, vous pouvez tester cela.
Un schéma d'URI est par exemple fb://
pour l'application facebook. Vous pouvez l'enregistrer dans info.plist de votre application. [UIApplication canOpenURL:url]
vous dira si une certaine url s'ouvrira ou ne s'ouvrira pas. Donc, le test si fb://
va ouvrir, indiquera qu'il ya une application installée qui a enregistré fb://
- ce qui est un bon indice pour l'application 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"]];
}
"mais si les applications enregistrent des schémas d'uri vous pourriez tester pour cela": vous s'il vous plaît expliquer un peu plus loin? – attisof
Voici un exemple pour tester si l'application facebook est installé
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app is installed
}
Pour tous ceux qui essaient de le faire avec iOS 9/Swift 2:
D'abord, vous aurez besoin de ' whitelist l'URL en ajoutant ce qui suit à votre fichier Info.plist
(une fonction de sécurité - voir Leo Natan's answer):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
Après cela, vous pouvez demander si l'application est disponible et dispose d'un régime enregistré:
guard UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb://")!) else {
NSLog("No Facebook? You're a better man than I am, Charlie Brown.")
return
}
Cela a fonctionné pour moi, merci –
En ce qui concerne les réseaux sociaux, il est préférable de vérifier plusieurs régimes. (Parce que 'fb' système est obsolète pour IOS9 SDK par exemple.):
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;
}
Bien sûr Info.plist devrait aussi contenir tous les systèmes nécessaires:
<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)
}
}
}
Ajouter à ces Info.plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
- 1. Détecter par programme si une application est installée sur l'iPhone
- 2. Comment puis-je vérifier par programme si une application CYGWIN est installée dans un script SH?
- 3. android savoir si une application est installée
- 4. Requête Windows pour si une application est installée par UpgradeCode
- 5. Comment détecter dans Safari si une application est installée
- 6. Comment puis-je vérifier par programme si une fonctionnalité de serveur est installée dans Windows Server 2008?
- 7. WIX: Comment détecter si une application tierce est installée?
- 8. Comment vérifier si l'interopérabilité .net pour Excel est installée
- 9. Comment puis-je vérifier si une imprimante est installée et prête en utilisant C#?
- 10. Comment vérifier si l'application iPhone a été installée auparavant?
- 11. Comment vérifier par programmation quelle version de WMI est installée
- 12. Test si une police est installée (Win32)
- 13. Comment vérifier si une fenêtre d'un autre programme est minimisée?
- 14. Comment vérifier par programme si une application a été déployée dans JBoss5?
- 15. Test si une police est installée
- 16. Comment vérifier si une application est en attente
- 17. Comment vérifier si une application est en debug ou release
- 18. Façon de savoir si mon application est installée
- 19. Comment puis-je vérifier si une application fonctionne sous Android?
- 20. Comment vérifier si une application peut être désinstallée?
- 21. Comment savoir sur quel lecteur une application Java est installée?
- 22. Python - Comment vérifier si un fichier est utilisé par une autre application?
- 23. Est-il possible de modifier par programme le nom d'une application iPhone une fois qu'elle est installée sur un périphérique?
- 24. Existe-t-il un moyen de savoir si une application iPhone/iPad est déjà installée?
- 25. Comment vérifier si un programme se termine?
- 26. Réinitialiser une application par programme?
- 27. Comment vérifier si une session est invalide
- 28. Comment fermer une application par programme?
- 29. Une application déployée clickonce est installée uniquement pour l'utilisateur spécifique?
- 30. Comment puis-je vérifier la version bundle de notre application par programme?
duplication possible de [comment vérifier l'application installée dans le périphérique iphone] (http://stackoverflow.com/questions/3243567/how-to-check-installed-application-in-iphone-device) –
peut-être que ce wiki aidera Vous aussi: http://wiki.akosma.com/IPhone_URL_Schemes Le problème avec la plupart des schémas d'url est que vous ne pouvez pas passer de données si vous n'avez pas les identifiants de l'application que vous appelez –
http://stackoverflow.com/questions/32643522/fbsdksharedialog-of-facebook-sdk-is-not-working-on-ios9/39159507#39159507 – TharakaNirmana