2014-09-18 7 views
19

In iOS 6 oder 7 wird die Anwendung zum Startbildschirm beendet, wenn ich UIApplication openUrl mit einer URL von itms-services://XXXX aufruft, um eine neue Version meiner App zu installieren (mit Enterprise Deployment mit ipa-Dateien).ios 8 openUrl itms-services beendet die aktuelle App nicht

In iOS 8 ist dies nicht mehr der Fall. Jetzt läuft die App weiter, so wie nichts passiert ist, aber wenn ich auf den Startbildschirm gehe, kann ich mein App-Icon ausgegraut sehen, mit einem Download-Tortendiagramm über 66% und dem Text "Downloading..." unten. Wenn ich jetzt eine Weile warte (weniger als eine Minute), ist die Anwendung korrekt installiert und ich kann meine App erneut starten.

Hat jemand anderes dieses Verhalten erlebt? Hat jemand Unterlagen diesbezüglich gesehen? Ich kann Verhaltensänderungen akzeptieren, solange sie dokumentiert sind, aber ich habe diesbezüglich keine Dokumentation gesehen.

+0

Ich erlebe die gleichen "Schwierigkeiten". Wir haben eine App für die Bereitstellung von hausinternen verteilten Apps (eine Art hauseigener AppStore) entwickelt. In iOS7 haben Sie Benachrichtigungen für den Systemdialog erhalten, in denen Sie gefragt werden, ob Sie eine App installieren möchten. In iOS8 werden diese Benachrichtigungen nicht mehr gesendet. Früher konnten wir einen Timer starten und nach dem erwarteten URL-Schema der zu installierenden App fragen, um dem Benutzer einen Aktivitätsindikator bereitzustellen. Mit iOS8 kann ich nicht einmal unterscheiden, ob der Benutzer die Installation abgebrochen hat. :(Konnte keine Dokumentation dazu finden. – Christian

Antwort

0

Ja, Sie erhalten auch das gleiche Verhalten, wenn Sie jetzt auf iOS8 auf einen Download-Link in Safari klicken.

Ich bin mir nicht sicher, warum sie diese Änderung eingeführt, aber es ist nicht wirklich eine Möglichkeit, um es (es sei denn, Sie Ihre Anwendung zwingen, etwas zum Absturz wie exit(0);)

Auch das itms-services URL-Schema ist nicht dokumentiert und ist technisch eine private API. Erfahrungsgemäß dürfen Sie keine Apps an den App Store senden, der sie verwendet.

+0

Ist itms-services undokumentiert? Es gab frühere Dokumentation unter http://developer.apple.com/library/ios/#featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html aber Dieser Link ist jetzt tot. Habe Apple die gesamte Dokumentation von itms-services entfernt? Ich kann es nirgendwo finden! Vernachlässigendes Zeug ist eine Sache, aber es einfach zu verstecken ist einfach SCHLECHT –

+0

Ja, es ist nicht gut ... Ich dachte, ich erinnere mich daran vor Ewigkeiten, aber ich konnte es nie wieder finden, also angenommen, dass das, was ich gesehen habe, keine offiziellen Apple Docs war ... Es ist wirklich komisch was die Dokumentation angeht, als iOS7 eingeführt wurde, wurde es zur Voraussetzung, dass die Manifeste https Links sind. t machen es auch klar. – liamnichols

+0

Ich bin mir ziemlich sicher, dass es offizielle Dokumentation darüber gab, sogar Xamarin (das ich verwende) hat einen Link zu derselben Seite, die jetzt tot ist: http://developer.xamarin.com/guides/ios/deployment,_testing , _and_metrics/app_distribution_overview /. –

0

Ich habe eine ähnliche Sache erlebt. Ich habe eine Webseite für unseren internen App Store und wenn ich auf den Link klicke, werde ich gefragt, ob ich installieren möchte und wenn ich sage, ja, Safari sitzt einfach da. Die App wird auf dem Home-Bildschirm heruntergeladen, aber unter iOS 7 Safari würde in den Hintergrund geschoben werden und Sie könnten sehen, wo Ihre App heruntergeladen wird und deren Fortschritt. Jetzt scheint es, als würde nichts passieren. Ich würde gerne das korrigieren. Möglicherweise hat sich in den vom Protokoll "itms-services" verwendeten .plist-Dateien etwas geändert. Dieses Protokoll ist nicht privat, es ist nur für Unternehmensbereitstellungen reserviert.

6

Während das Erzwingen der App zum Absturz technisch funktioniert, wäre es eine viel bessere Lösung (den Benutzer den Status der Anwendung zu behalten), einfach die App zu starten, die den Link "itms-services" startet, indem man Folgendes ausführt.

[[UIApplication sharedApplication] performSelector:@selector(suspend)]; 

Wir verwenden diese in einer App zur Verteilung von Test verwendet baut auf unsere Tester und es funktioniert sehr gut, und beseitigt die Verwirrung eines Testers versuchen, eine App zu installieren und vor dem App Aufenthalt willkommen. Es ermöglicht ihnen auch, zu unserer Vertriebs-App zurückzukehren und sie dort abholen zu lassen, wo sie waren.

+0

Ehrfürchtig ... Ich nehme an, das ist eine private API? Offensichtlich kein Problem, aber ich wollte nur bestätigen ... Rufen Sie dies sofort nach dem Aufruf von 'openURL:'? Nur weil ich nicht sicher war, ob das Installations-Popup immer noch angezeigt wird, wenn das der Fall war? – liamnichols

+1

Ja, direkt nach openURL - das Popup wird immer noch angezeigt, normalerweise nachdem die App gesperrt wurde. Wir machen das nur für iOS 8 und höher, da die App in den älteren Versionen nicht angehalten werden muss. Ich würde den Anruf nicht in einer App verwenden, die zum Store führt, aber wenn Ihre App andere Apps installiert, würde ich nicht empfehlen, sie trotzdem im App Store zu speichern. – wottle

+0

Was passiert, wenn ich das gleiche Problem habe, aber Safari Browser verwende? – Mike