2015-09-18 5 views
10

Mamy kilka własnych aplikacji, a przed iOS 9 aplikacje otworzą link taki jak "itms-services: //" po porównaniu wersji , nowe wersje aplikacji zostaną pobrane i zainstalowane.iOS 9 LaunchServices: BŁĄD: Nie ma zarejestrowanego programu obsługi dla schematu URL itms-services

Po przetestowaniu na iOS 9 okazało się, że aplikacje nie mogą otworzyć linku "itms-services: //" link, ale wystąpił błąd "LaunchServices: BŁĄD: Nie ma zarejestrowanego programu obsługi dla schematu URL itms-services"

Kod użyliśmy zaktualizować aplikację:

let downloadUrl = NSURL(string: url) 
UIApplication.sharedApplication().openURL(downloadUrl!) 

Przetestowaliśmy put "ITMS-usług", "ITMS-services: //", a pełny adres URL w "LSApplicationQueriesSchemes" w pliku plist. Ale nadal nie działa.

+0

mam metodę obejścia tego problemu. Skonfiguruj nazwę subdomeny w domenie i ustaw nowy adres URL, aby przekierowywał się do itms-service: // URL automatycznie (Twój dostawca usług DNS zawsze to obsługuje), w aplikacji otwórz nowy adres URL zamiast "itms-service" URL, dostałem to z forum aplikacji, jeszcze nie testowane. – Daniel

Odpowiedz

0

W iOS9 (w moim przypadku jest mój schemat url: hash :)

Zmień Info.plist: add the custom url schemes here

następnie zarejestrować obsługi zdarzeń w appdelegate:

func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool { 
    // do what you want to do 
    print(url); 

    // return true if url matches scheme 
    return true; 
} 
+0

Dziękuję za odpowiedź, ale nie definiuję schematu będącego właścicielem aplikacji, chcę tylko użyć wewnętrznego schematu dystrybucji dla przedsiębiorstwa (użytkownik może otworzyć adres URL w safari, aby zainstalować wewnętrzną dystrybucję zamiast AppStore). – Daniel

0

Czy nie wiesz, że to twoja sprawa, ale potrzebujesz URL-a https, by pobrać aplikacje. Nie mamy SSL na naszej stronie, więc to, co robimy, to wgrywanie .plist do dropboxa i używanie udostępnionego linku w linku itms-services. .plist przekierowuje na serwer i nie mamy problemów

+0

Właściwie to działa w systemie iOS wcześniej niż w wersji 9.0, ale po aktualizacji na iOS 9 nie może to działać. Wygląda na to, że nowy iOS nie może znaleźć aplikacji, która otwiera URL, zaczynając od "itms-services", powinno to działać, ponieważ URL może być otwarty bezpośrednio przez Safari. Ale nie można otworzyć z aplikacji. – Daniel

+0

@Daniel Sprawdź tutaj moją odpowiedź, może to pomoże, w naszych urządzeniach iOs 9 działa dobrze http://stackoverflow.com/a/32769917/1339326 – magorich

+1

Dziękuję za odpowiedź, ale tak naprawdę naszym problemem nie jest "instalacja" "ale" upgrade ", możemy zainstalować naszą aplikację na iOS 9 z Safari, ale użyliśmy aplikacji do aktualizacji, otwierając URL jako" itms-services: // ", który działa na iOS 8, ale nie działa na iOS 9 – Daniel

0

W iOS 9 należy whitelist żadnych schematów URL Twój Aplikacja chce kwerendy w Info.plist pod klucz LSApplicationQueriesSchemes (tablicę łańcuchów):

enter image description here

Ze schematami zawartymi w Info.plist wszystko działa tak jak poprzednio. Kiedy łączysz się z iOS 9, nie jesteś ograniczony do 50 różnych schematów, wystarczy zadeklarować to, czego potrzebujesz w Info.plist. Wydaje się, że nie ma ograniczeń co do liczby programów, które można uwzględnić, ale oczekiwałbym pytań od zespołu ds. Oceny App Store, jeśli uważają, że nadużywa się tego mechanizmu.

Note that this mechanism only applies to canOpenURL and not openURL. You do not need to have a scheme listed in Info.plist to be able to open it with openURL.

Więcej informacji na: http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html

1

doszedłem do tego samego problemu z tobą. I rozwiązać ten problem za pomocą metody, która aplikacja otworzyć link HTML z pierwszego safari,

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// xx.xx.xx.xx/xx.html"]]; 

url html przekierować do url --- ITMS-services: // action = download-manifest & url = https://xx.xx.xx.xx/xx/xx.plist adres. Chociaż ta metoda może aktualizować moją aplikację, ale proces aktualizacji musi najpierw otworzyć Safari, a następnie ostrzec otworzyć App Store, jeśli wybierzesz przycisk Otwórz, to ostrzeże, czy zainstalujesz aplikację, w końcu potwierdzisz przycisk instalacji. aplikacja zostanie zainstalowana automatycznie.

moja treść html następująco:

<html> 
<head> 
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" /> 
    <script type="text/javascript"> 
       function load() 
       { 
         window.location ="itms-services://?action=download-manifest&url=https://xxx/xx/xx.plist"; 
       } 
    </script> 
</head> 
<body onload = "load()"> 
+0

Ponadto proces instalacji aktualizacji jest taki sam, jak otwarcie adresu url tms-services: //? Action = download-manifest & url = https: //xx.xx.xx.xx/xx/xx.plist w safari – dullgrass