Pracuję nad aplikacją na iPhone'a, która zainstaluje kilka aplikacji firm trzecich w przedsiębiorstwie. Mam informacje o identyfikatorach pakietów. Czy istnieje sposób sprawdzenia, czy aplikacja jest już zainstalowana, za pomocą niektórych funkcji API systemu? Obecnie aplikacja zostaje ponownie zainstalowana, zastępując bieżącą instalację. Muszę temu temu zapobiec. (Aplikacja AppStore firmy Apple wyłącza opcję instalacji, jeśli aplikacja jest już zainstalowana.)Jak sprawdzić programowo, czy aplikacja jest zainstalowana?
Odpowiedz
Myślę, że nie jest to możliwe bezpośrednio, ale jeśli aplikacje rejestrują schematy uri, można to przetestować.
Schemat URI to na przykład fb://
w aplikacji Facebook. Możesz zarejestrować to w pliku info.plist swojej aplikacji. [UIApplication canOpenURL:url]
powie Ci, czy dany adres URL zostanie otwarty, czy nie. Testowanie, czy otworzy się fb://
, oznacza, że jest zainstalowana aplikacja, która zarejestrowała fb://
- co jest dobrą wskazówką do aplikacji na Facebooku.
// 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"]];
}
"ale jeśli aplikacje rejestrują schematy uri, możesz je przetestować": proszę wyjaśnić to nieco dalej? – attisof
Oto przykład, aby sprawdzić, czy aplikacja Facebook jest zainstalowany
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]]) {
// Facebook app is installed
}
Dla każdego, kto próbuje to zrobić z iOS 9/Swift 2:
Po pierwsze, trzeba " whitelist”URL poprzez dodanie następujących do pliku Info.plist
(funkcja bezpieczeństwa - patrz Leo Natan's answer):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
Po tym, można zapytać, czy aplikacja jest dostępna i ma zarejestrowaną schematu:
guard UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb://")!) else {
NSLog("No Facebook? You're a better man than I am, Charlie Brown.")
return
}
To zadziałało dla mnie, dzięki –
Jeśli chodzi o sieci społecznych, najlepiej jest sprawdzić kilka schematów. (Ponieważ scheme 'Fb' jest przestarzałe IOS9 SDK np.)
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;
}
oczywiście Info.plist powinny również zawierać wszystkie niezbędne schematów:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
Swift 3,1 Swift 3,2 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)
}
}
}
Dodaj nich w Info.plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fb</string>
</array>
- 1. Sprawdź, czy aplikacja jest zainstalowana w rejestrze
- 2. Jak sprawdzić, czy jest prawidłowo zainstalowana MongoDB
- 3. Wykryto, czy aplikacja jest zainstalowana, czy nie?
- 4. Jak sprawdzić, czy aplikacja iOS została niedawno zainstalowana lub zaktualizowana?
- 5. Jak mogę sprawdzić, czy inna aplikacja w systemie jest oryginalna?
- 6. WIX: Jak wykryć, czy zainstalowana jest aplikacja innej firmy?
- 7. Jak sprawdzić, która wersja mod_perl jest zainstalowana?
- 8. Szef kuchni: Jak sprawdzić, czy usługa jest zainstalowana?
- 9. Jak sprawdzić, czy zainstalowana jest wersja flashowa debugowania?
- 10. Jak sprawdzić, czy aplikacja jest uruchomiona
- 11. Jak programowo sprawdzić, czy aplikacja ma wisieć w VB.NET
- 12. Jak sprawdzić, czy iCloud jest programowo programowany?
- 13. intent android, gdy moja aplikacja jest zainstalowana
- 14. Aplikacja nie została zainstalowana
- 15. aplikacja do projektu nie jest zainstalowana
- 16. Programowo ustalić, czy biblioteka COM (.DLL) jest zainstalowana
- 17. Jak sprawdzić, czy inna aplikacja jest zminimalizowana, czy nie?
- 18. Jak sprawdzić programowo, czy punkt aktywny jest włączony czy wyłączony?
- 19. Jak sprawdzić, czy drukarka jest zainstalowana i gotowa za pomocą C#?
- 20. jak sprawdzić, która wersja pakietu nltk, scikit learn jest zainstalowana?
- 21. Jak sprawdzić, która wersja Webdeploy/msdeploy jest obecnie zainstalowana?
- 22. Jak sprawdzić, czy aplikacja ma dostęp do aparatu lub programowo nie jest w iOS8
- 23. Sprawdź, czy zainstalowana jest pełna wersja .net?
- 24. Sprawdź, czy zainstalowana drukarka sieciowa jest online
- 25. Wykrywanie, czy zainstalowana jest baza danych Oracle
- 26. Jak sprawdzić, czy jest konsola?
- 27. Jak mogę sprawdzić, czy moja aplikacja jest aktywna?
- 28. Jak sprawdzić, czy moja aplikacja jest domyślnym programem uruchamiającym?
- 29. Jak sprawdzić czy aplikacja jest na pierwszym planie z usługi?
- 30. Jak sprawdzić, czy aplikacja Asp.NET jest przygotowana do FIPS
możliwy duplikat [jak sprawdzić zainstalowaną aplikację w urządzeniu iPhone] (http://stackoverflow.com/questions/3243567/how-to-check-installed-application-in-iphone-device) –
może to wiki pomoże Ty też: http://wiki.akosma.com/IPhone_URL_Schemes Problem z większością schematów adresów URL polega na tym, że nie możesz przekazać żadnych danych, jeśli nie masz identyfikatorów użytkowników aplikacji, którą nazywasz –
http://stackoverflow.com/questions/32643522/fbsdksharedialog-of-facebook-sdk-is-not-working-on-ios9/39159507#39159507 – TharakaNirmana