-
Gebiet
-
Diese Offenbarung bezieht sich allgemein auf computerimplementierte Verfahren und Systeme, und bezieht sich spezieller auf das Evaluieren einer Anwendung, die sich in der Entwicklung befindet, mittels der Verwendung einer Betrachtungsanwendung, die auf einer Rechnervorrichtung ausgeführt wird.
-
Hintergrund
-
Vor dem Hintergrund der zunehmenden Verbreitung von Mobilvorrichtungen und anderer Arten von Rechnervorrichtungen sind viele Leute ermuntert worden, Anwendungen für diese Rechnervorrichtungen zu entwickeln. Einige dieser Leute können erfahrene Anwendungsentwickler sein, während andere noch keine Erfahrungen mit den unterschiedlichen Routinen haben, die nicht nur zum Schreiben einer Anwendung, sondern auch zum Bauen und Testen dieser Anwendung erforderlich sind. Es sind Entwicklungsumgebungen verfügbar, welche den Anwendungsentwicklungsprozess vereinfachen, aber das Bauen und Testen einer Anwendung für unterschiedliche Typen von Rechnervorrichtungen und mit unterschiedlichen Betriebssystemen kann weiterhin ein komplizierter, zeitaufwendiger Prozess sein.
-
Zusammenfassung
-
Es werden verschiedene Ausführungsformen zum Evaluieren einer Anwendung, die sich in der Entwicklung befindet, mittels der Verwendung einer Betrachtungsanwendung, die auf einer Mobilvorrichtung ausgeführt wird, offenbart. Die Betrachteranwendung ruft ein Anwendungspaket ab, das Code für die Zielanwendung umfasst. In einigen Implementierungen wird das Paket von einem Inhalteverwaltungssystem (”content management system”, CMS) abgerufen. In anderen Implementierungen kann das Paket, falls es existiert, von einem lokalen Speicher in der Mobilvorrichtung abgerufen werden.
-
Die Betrachteranwendung speichert den Code für die Zielanwendung in einem Speicher der Mobilvorrichtung, auf den die Betrachteranwendung zugreifen kann. In einigen Implementierungen fügt die Betrachteranwendung den Code für die Zielanwendung dem Speicher hinzu, indem zumindest ein Teil des Codes der Betrachteranwendung in einem Speicher der Mobilvorrichtung mit dem Code für die Zielanwendung ersetzt wird. In verschiedenen Implementierungen wird der Code für die Zielanwendung modifiziert, so dass er ergänzenden Code mit einem Bezug auf Code für die Betrachteranwendung enthält. In einigen Implementierungen wird ein Aktualisierungsserver, der in dem Code für die Zielanwendung definiert ist, modifiziert, das CMS als den Aktualisierungsserver zu verwenden. In anderen Implementierungen wird der Zielanwendung ergänzender Code zum Abrufen einer aktualisierten Version der Zielanwendung und zum Starten der Ausführung der aktualisierten Version der Zielanwendung hinzugefügt. In nochmals weiteren Implementierungen wird der Zielanwendung ergänzender Code hinzugefügt zum Erfassen von einem oder von mehreren Screenshots einer Benutzerschnittstelle der Zielanwendung während dem Ausführen.
-
Die Betrachteranwendung führt den gespeicherten Code für die Zielanwendung zur Evaluierung aus. Das Ausführen des gespeicherten Codes der Zielanwendung führt die Zielanwendung innerhalb des Ausführens der Betrachteranwendung aus. In weiteren Implementierungen überwacht die Zielanwendung Eingaben nach einer Eingabe, die einer Anforderung entspricht, zur Ausführung der Betrachteranwendung zurückzukehren, welche die Benutzerschnittstelle beinhaltet, über die Referenz. In einigen Implementierungen ist die Eingabe eine Auswahl eines Eintrags von einem ergänzenden Menü. In anderen Implementierungen ist die Eingabe eine Geste, die über einen berührungsempfindlichen Bildschirm empfangen wird.
-
Kurze Beschreibung der Zeichnungen
-
Viele Aspekte der vorliegenden Offenbarung können besser verstanden werden mit Bezug auf die folgenden Zeichnungen. Die Komponenten in den Zeichnungen sind nicht notwendiger Weise Maßstabsgerecht, stattdessen wird der Schwerpunkt darauf gelegt, die Prinzipien der Offenbarung klar darzustellen. Weiter bezeichnen in den Zeichnungen gleiche Bezugszeichen entsprechende Teile über die verschiedenen Ansichten hinweg.
-
1 ist eine Zeichnung einer vernetzten Umgebung gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
2 bis 4 sind bildliche Darstellungen von beispielhaften Benutzerschnittstellen, die von einem Client in der vernetzten Umgebung von 1 gerendert werden, gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
5 ist ein Flussdiagramm, das ein Beispiel einer Funktionalität zum Ausführen einer Zielanwendung innerhalb einer Betrachteranwendung nach Erhalten der Zielanwendung von einem Inhalteverwaltungssystem und Modifizieren der Zielanwendung, um ergänzenden Code zu enthalten, zeigt, wobei die Funktionalität implementiert ist als Teile einer Betrachteranwendung, die ausgeführt wird in einem Client in der vernetzten Umgebung von 1, gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
6 ist ein Flussdiagramm, das ein Beispiel einer Funktionalität zum Ausführen einer Zielanwendung innerhalb einer Betrachteranwendung zeigt, wobei die Zielanwendung unter Verwendung von Webtechnologie gebaut wird und die Funktionalität implementiert ist als Teile einer Betrachteranwendung, die ausgeführt wird in einem Client in der vernetzten Umgebung von 1, gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
7 ist ein Flussdiagramm, das ein Beispiel einer Funktionalität zum Modifizieren von Code einer Zielanwendung zum Beinhalten von ergänzendem Code zum Zurückkehren zur Betrachteranwendung während dem Ausführen der Zielanwendung zeigt, wobei die Funktionalität implementiert ist als Teile einer Betrachteranwendung, die ausgeführt wird in einem Client in der vernetzten Umgebung von 1, gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
8 ist ein schematisches Blockdiagramm, das eine beispielhafte Darstellung eines Client zeigt, der in der vernetzten Umgebung von 1 verwendet wird, gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
-
Detaillierte Beschreibung
-
Es werden hierin Techniken beschrieben zum Vereinfachen der Operationen, die zum Testen und Evaluieren einer Anwendung, die sich in der Entwicklung befindet, verwendet werden, mittels der Verwendung einer Betrachteranwendung, die in einer Rechnervorrichtung ausgeführt wird. Herkömmlicher Weise hat das Evaluieren einer Anwendung, die sich in der Entwicklung befindet für Rechnervorrichtungen, wie Smartphone, erfordert, dass Entwickler oder andere Benutzer komplexe Prozeduren zum Kompilieren der Anwendung für die richtige Hardware und das richtige Betriebssystem ausführen, die Anwendung ausrollen und die Anwendung als eine alleinstehende Anwendung installieren. Weiter wären diese Prozeduren für jede individuelle Anwendung notwendig, die ein Benutzer evaluieren möchte, und möglicherweise für jeden Vorrichtungstyp, in dem die Anwendung evaluiert werden soll.
-
In Begriffen der Prozeduren, die involviert sind, um eine Anwendung auf einer gegebenen Rechnervorrichtung zu evaluieren, wäre es für Benutzer signifikant weniger komplex, eine allgemeine, bestehende Anwendung (das heißt, die Betrachteranwendung) zu haben, die auf der Rechnervorrichtung installiert ist, welche den Code jeder zur Evaluierung ausgewählten Anwendung (das heißt, die ”Zielanwendung”) ausführen könnte, ohne die verschiedenen Prozeduren zum Kompilieren und Installieren als eine alleinstehende Anwendung für die Zielanwendung ausführen zu müssen. Zu diesem Zweck und unter Verwendung der hierin offenbarten Techniken beschafft sich die Betrachteranwendung, die auf einer Rechnervorrichtung ausgeführt wird, Code für die Zielanwendung, platziert den Code für die Zielanwendung in dem Speicher, und initiiert die Ausführung des Codes für die Zielanwendung, der sich in dem Speicher befindet. Als ein Ergebnis ist der Benutzer in der Lage, die Zielanwendung in der partikulären Rechnervorrichtung (möglicher Weise eine Rechnervorrichtung unter vielen verschiedenen Typen, in denen die Anwendung getestet werden soll) zu evaluieren, ohne die komplexen und fehlerträchtigen Prozeduren zum Kompilieren und Installieren der Zielanwendung als eine alleinstehende Anwendung. Weiter ist die Betrachteranwendung so verallgemeinert, dass sie in der Lage ist, die Ausführung von Code für andere Anwendungen, die sich in der Entwicklung befindet, auf dieselbe Weise auszuführen wie sie für die gegenwärtige Zielanwendung ausgeführt wird, zu starten. In der folgenden Diskussion wird eine allgemeine Beschreibung des Systems und dessen Komponenten gegeben, gefolgt von einer Diskussion des Betriebs derselben.
-
Wie hierin verwendet, ist die ”Zielanwendung” eine Anwendung, die von einem Benutzer zur Evaluation auf einer Clientvorrichtung ausgewählt wurde.
-
Wie hierin verwendet, ist die ”Betrachteranwendung” eine Anwendung, die auf einer Clientvorrichtung ausgeführt wird, welche die Evaluation einer oder mehrerer Zielanwendungen auf der Clientvorrichtung durch einen Benutzer ermöglicht.
-
Wie hierin verwendet ist das ”Inhalteverwaltungssystem” (”content management system”, CMS) ein netzwerkfähiger Dienst, der es Benutzern erlaubt, das Erzeugen, Überarbeiten und Löschen von Inhalten zu verwalten, um die Entwicklung von Anwendungen (oder kurz ”Apps”) zu unterstützen, die auf einer oder auf mehreren Rechnervorrichtungen ausgeführt werden können. Zusätzlich kann das CMS Merkmale unterstützen, die es Benutzern erlauben, während des Anwendungsentwicklungsprozesses mit anderen Benutzern zusammenzuarbeiten, sowie Authentisierungs- und Autorisierungsfähigkeiten, um den Zugriff auf den Inhalt unter den verschiedenen Benutzern zu verwalten.
-
Mit Bezug auf 1 ist eine vernetzte Umgebung 100 gemäß verschiedenen Ausführungsformen gezeigt. Die vernetzte Umgebung 100 enthält eine Rechnerumgebung 103 und eine oder mehrere Clientvorrichtungen 106, die über ein Netzwerk 109 miteinander in Datenkommunikation stehen. Das Netzwerk 109 beinhaltet zum Beispiel das Internet, Itranetze, Extranetze, Weitbereichsnetzwerke (WANs), lokale Netzwerke (LANs), drahtgebundene Netzwerke, drahtlose Netzwerke, oder andere geeignete Netzwerke und so weiter, oder jede Kombination von zwei oder mehr derartiger Netzwerke. Zum Beispiel können solche Netzwerke Mobilfunknetze, Satellitennetze, Kabelnetze, Ethernet Netzwerke und/oder andere Typen von Netzwerken umfassen.
-
Die Rechnerumgebung 103 umfasst zum Beispiel einen Servercomputer oder ein anderes System, das eine Rechnerfähigkeit bereitstellt. Alternativ nutzt die Rechnerumgebung 103 eine Vielzahl von Rechnervorrichtungen, die zum Beispiel in einer oder in mehreren Serverbänken oder Computerbänken, oder in anderen Anordnungen angeordnet sind. Solche Rechnervorrichtungen können sich in einer einzelnen Installation, oder über viele unterschiedliche geographische Orte verteilt befinden. In einigen Ausführungsformen enthält die Rechnerumgebung 103 zum Beispiel eine Vielzahl von Rechnervorrichtungen, die zusammen eine gehostete Rechenressource bilden, eine Grid-Computing-Ressource und/oder eine andere verteilte Rechneranordnung. In einigen Fällen entspricht die Rechnerumgebung 103 einer elastischen Rechnerressource, wobei die zugewiesene Verarbeitungskapazität, Netzwerk-, Speicher- oder andere computerbezogene Ressourcen mit der Zeit variieren können.
-
Verschiedene Anwendungen und/oder andere Funktionalität kann auf der Rechnerumgebung 103 gemäß verschiedenen Ausführungsformen ausgeführt werden. Auch werden verschiedenen Daten in einem Datenspeicher 112 gespeichert, auf den die Rechnerumgebung 103 zugreifen kann. Wie verstanden werden wird, kann der Datenspeicher 112 eine Vielzahl von Datenspeichern 112 repräsentieren. Die in dem Datenspeicher 112 gespeicherten Daten sind zum mit dem Betrieb der verschiedenen Anwendungen und/oder funktionalen Entitäten assoziiert, die nachfolgend beschrieben sind.
-
Die auf der Rechnerumgebung 103 ausgeführten Komponenten beinhalten zum Beispiel ein Inhalteverwaltungssystem (CMS) 121 und andere Anwendungen, Dienste, Prozesse, Systeme, Verarbeitungswerke oder andere Funktionalität, die hierin nicht im Detail beschrieben sind. Das CMS 121 wird ausgeführt, um es Benutzern zu erlauben, die Erstellung, das Editieren und das Löschen von Inhalten zu verwalten, zur Unterstützung der Entwicklung von Anwendungen (oder einfach ”Apps”), die auf einer oder auf mehreren Rechnervorrichtungen ausgeführt werden können, wie auf einer Clientvorrichtung 106. Unter anderen Merkmalen kann das CMS 121 die Verwendung von Anmeldedaten unterstützen, mit denen Benutzer zu authentisieren sind, die Verwaltung von Benutzerzugriffsrechten auf verschiedene Dateien und andere Daten für Entwicklungsprojekte, Versionshistorien für die Entwicklungsdaten, Versionsveröffentlichung und Release Information für Entwicklungsprojekte und/oder andere Merkmale, wie verstanden werden wird.
-
Die in dem Datenspeicher 112 gespeicherten Daten beinhalten zum Beispiel Benutzerkontendaten 131, Anwendungsaufzeichnungen 133 und potentiell andere Daten. Die Benutzerkontendaten 131 beinhalten Anmeldedaten für Benutzerkonten, die mit dem CMS 121 assoziiert sind, Benutzerpräferenzen, eine Historie der Interaktionen der Benutzer mit dem CMS 121, Benutzerzugriffsrechte, die mit Anwendungen und Entwicklungsprojekten assoziiert sind, und/oder andere mögliche Daten. Die Aufzeichnungen der Anwendungen 133 beinhalten jeweils verschiedenen Inhalt und Metadaten, die mit der Entwicklung einer Anwendung assoziiert sind. Die Anwendungsaufzeichnungen 133 sind jeweils mit Anwendungsdaten 135, Anwendungsmetadaten 137 und möglicherweise anderen Daten assoziiert. Die Anwendungsdaten 135 beinhalten Inhalt, der mit der Entwicklung einer bestimmten Anwendung assoziiert ist, wie Quellcode und ausführbaren Code für die Anwendung, Textzeichenketten, Audio, Video, Bilder und/oder andere Arten von Inhalt, wie verstanden werden wird. Die Anwendungsmetadaten 137 beinhalten verschiedene Metadaten, die mit einer bestimmten Anwendung assoziiert sind, wie eine Beschreibung, Schlüsselwörter, Versionsgeschichte, Indikatoren für veröffentlichte oderfreigegebene Anwendungen, Bauanweisungen für verschiedene unterschiedliche Rechnervorrichtungen, die Netzwerkadresse, von der eine freigegebene Anwendung aktualisiert werden kann, Änderungslogs, Freigabenotizen, Identifikatoren für den bzw. die Besitzer/Beitragende(n) und/oder andere mögliche Metadaten.
-
Der Client 106 ist repräsentativ für eine Vielzahl von Clientvorrichtungen, die mit dem Netzwerk 109 gekoppelt werden können. Der Client 106 umfasst zum Beispiel ein prozessorbasiertes System wie ein Rechnersystem. Ein solches Rechnersystem kann verkörperst sein in Form eines Smartphones, einem Schreibtischcomputer, einem Laptopcomputer, einem persönlichen digitalen Assistenten (PDA), einem Mobiltelefon, einer Set-Top-Box, einem Musikwiedergabegerät, einem Webpad, einem Tabletcomputersystem, einer Spielekonsole, einem elektronischen Buchlesegerät oder anderen Vorrichtungen mit gleicher Fähigkeit. Der Client 106 kann eine Anzeige 161 beinhalten. Die Anzeige 161 kann zum Beispiel eine oder mehrere Vorrichtungen wie Flüssigkristall-(LCD)Anzeigen, Gasplasma-basierte Flachbildschirme, organische Leuchtdioden-(OLED)Anzeigen, elektrophoretische Tinten-(”E ink”)Anzeigen, LCD Projektoren oder andere Typen von Anzeigevorrichtungen und so weiter umfassen. In einigen Ausführungsformen ist die Anzeige 161 berührungsempfindlich und kann verschiedene gestenbasierte Formen von Eingaben unterstützen.
-
Der Client 106 kann konfiguriert sein, um verschiedene Anwendungen auszuführen, wie eine Betrachteranwendung 163 und/oder andere Anwendungen. Die Betrachteranwendung 163 wird auf einem Client 106 ausgeführt, um zum Beispiel auf Inhalt zuzugreifen, der von der Rechnerumgebung 103 und/oder anderen Servern ausgeliefert wird, um dadurch eine Benutzerschnittstelle 164 auf der Anzeige 161 zu rendern. Zu diesem Zweck können die Betrachteranwendung 163, zum Beispiel ein Browser, eine dedizierte Anwendung und so weiter, und die Benutzerschnittstelle 164 eine Netzwerkseite, einen Anwendungsbildschirm und so weiter umfassen. Enthalten unter den verschiedenen Typen von Inhalt, auf den die Betrachteranwendung 163 zugreifen kann, sind die Anwendungen, die sich in der Entwicklung befindet,, die von dem CMS 121 verwaltet werden. Ausgewählte Anwendungen (auch als ”Zielanwendungen” bezeichnet) können über eine Anwendungsanforderung 165 und Zielanwendungsdaten 167 angefordert bzw. empfangen werden. Die Zielanwendung 171 kann aus den Zielanwendungsdaten 167 extrahiert und zur Ausführung durch die Betrachteranwendung 163 vorbereitet werden. Der Prozess der Vorbereitung kann das Hinzufügen und/oder Modifizieren von ergänzendem Code 173 zu der Zielanwendung 171 beinhalten, wie in größerem Detail hierin beschrieben werden wird. Der Client 106 kann auch konfiguriert sein, um andere Anwendungen als die Betrachteranwendung 163 auszuführen, wie zum Beispiel E-Mail Anwendungen, Anwendungen für Soziale Netze, Wortverarbeitungsanwendungen, Spreadsheet Anwendungen und/oder andere Anwendungen.
-
Als nächstes wird eine allgemeine Beschreibung der Operation der verschiedenen Komponenten der vernetzten Umgebung 100 gegeben. Zu Beginn etabliert ein Anwendungsentwickler oder ein anderer Benutzer, der eine Anwendung, die entwickelt wird, testen soll, eine Kommunikationssitzung zwischen der Betrachteranwendung 163 und dem CMS 121. Die Kommunikationssitzung kann ausgeführt werden unter Verwendung verschiedener Protokolle, wie zum Beispiel HTTP, ”simple object access protocol” (SOAP), ”representational state transfer” (REST), ”user datagram protocol” (UDP), ”transmission control protocol” (TCP) und/oder andere Protokolle zum Kommunizieren von Daten über das Netzwerk 109. In einigen Implementierungen wird der Benutzer unter Verwendung von einem oder mehreren Anmeldedaten bzw. ”Credentials” mit dem CMS 121 authentisiert.
-
Danach wird dem Benutzer eine Benutzerschnittstelle 164 für die Betrachteranwendung 163 präsentiert, wie in 2 gezeigt. Unter den verschiedenen möglichen Bildschirmen der Benutzerschnittstelle 164 befindet sich der Anwendungsauswahlbildschirm 203, in dem einem Benutzer eine Liste gezeigt wird, welche von dem CMS 121 empfangen wird, die alle Anwendungen enthält, die durch die Betrachteranwendung 163 evaluiert werden können. In einigen Implementierungen beinhaltet der Anwendungsauswahlbildschirm 203 auch Anwendungen, die lokal auf dem Client 106 gespeichert sind, die durch die Betrachteranwendung 163 evaluiert werden können. Die Liste von Anwendungen, wie die drei Anwendungen, die in dem Anwendungspanel 205 gezeigt sind, kann auch Namen, Versionsinformation, Änderungsdaten und/oder andere mögliche nicht gezeigte Metadaten, wie Icons, Screenshots, Schlüsselwörter, Beschreibungen und so weiter, beinhalten. In einigen Ausführungsformen kann das Anwendungspanel 205 auch ein Menü 207 enthalten, wie ein Ausklappmenü, über welches verschiedene Information und Einstellungen, die mit den Anwendungen und der Betrachterapp assoziiert sind, gefunden werden können. Das Menü kann es zum Beispiel erlauben, dass der Benutzer das Evaluieren einer ausgewählten Anwendung initiiert, zusätzliche Information über eine Anwendung findet (zum Beispiel Anwendungsgröße, Beschreibung und so weiter), Optionen oder andere Benutzerpräferenzen für die Betrachteranwendung 163 (zum Beispiel Benutzeranmeldedaten, CMS Serveradresse und so weiter), und/oder andere Möglichkeiten.
-
Sobald der Benutzer eine Eingabe gemacht hat, welche eine zu evaluierende Anwendung (das heißt, die ”Zielanwendung”) auswählt, übermittelt die Betrachteranwendung 163 über das Netzwerk 109 eine Anwendungsanforderung 165 an das CMS 121. Die Anwendungsanforderung 165 kann einen Identifikator für die zu evaluierende Zielanwendung, Deskriptoren und Versionsinformation für die Betrachteranwendung 163 und den Client 106, in dem die Zielanwendung zur Evaluation ausgeführt werden soll, und/oder andere mögliche Information enthalten. In Antwort auf die Anwendungsanforderung 165 überträgt das CMS 121 die Zielanwendungsdaten 167 an die anfordernde Betrachteranwendung 163. Wie zuvor beschrieben, können in einigen Ausführungsformen die Zielanwendungsdaten 167 gecacht und lokal auf dem Client 106 oder einer anderen Speichervorrichtung gespeichert sein, anstatt von dem CMS 121 empfangen zu werden. Die Zielanwendungsdaten 167 umfassen Inhalt, einschließlich ausführbarem Code und statischen Inhalt, der erforderlich ist, um die Zielanwendung 171 aus der Betrachteranwendung 163 heraus auszuführen. Wie verstanden werden wird, kann die Ausführung der Zielanwendung 171 weiter Plug-Ins oder anderen Code verwenden, der bereits auf dem Client 106 existiert und/oder der separat abgerufen wird. In einigen Ausführungsformen umfassen die Zielanwendungsdaten 167 ein Anwendungspaket, wie ein APK (Android Anwendungspaket), ZIP und so weiter, welches den Inhalt für die Zielanwendung enthält, sowie ein Manifest und/oder andere Metadaten, die anweisen, wie die Anwendung aus dem Inhalt auszuführen ist, wie es verwendet werden kann, um den Unterschieden unter den verschiedenen Typen von Clients 106 und/oder Betriebssystemen jedes Clients 106 Rechnung zu tragen. Änderungen oder Modifikationen an dem Inhalt der Zielanwendung, die von der Betrachteranwendung 163 vorgenommen werden, können an der lokalen Kopie des Inhalts ausgeführt werden, die in dem Speicher und Speicherplatz der Clients 106 gehalten werden, die der Betrachteranwendung 163 zugewiesen sind.
-
In anderen Ausführungsformen stellt die Zielanwendung, wenn sie ausgeführt wird, ein Merkmal bereit, um auf Aktualisierungen zu der Zielanwendung zu prüfen und es einem Endbenutzer zu erlauben, die Anwendung zu aktualisieren, wenn so eine Aktualisierung existiert. Um dieses Merkmal auszuführen, ist die Zielanwendung mit einer Netzwerkadresse konfiguriert, wie einem ”uniform resource identifier” (URI) eines Aktualisierungsservers, bei der nach veröffentlichten Aktualisierungen für die Zielanwendung zu suchen ist, wobei der Aktualisierungsserver nicht von dem Entwickler der Zielanwendung kontrolliert sein mag. Um das ”Anwendungsaktualisierungs-” oder ”In-App Update” Merkmal der Zielanwendung vor der Freigabe der Zielanwendung oder mit einer Entwicklungsversion der Zielanwendung zu evaluieren, kann die Betrachteranwendung 163 die Netzwerkadresseninformation des Aktualisierungsservers in der lokalen Kopie des Codes der Zielanwendung modifizieren. Zum Beispiel kann die Netzwerkadresse des CMS 121 eingefügt werden als der Aktualisierungsserver. Danach wird während dem Ausführen der Zielanwendung 171 auf dem Client 106 das Anwendungsaktualisierungsmerkmal stattdessen auf dem CMS 121 nach neueren Versionen (das heißt, Entwicklungs-, Pre-Release Versionen) der Zielanwendung suchen, anstelle auf dem zuvor definierten Aktualisierungsserver.
-
Um die Zielanwendung 171 auf der Clientvorrichtung 106 auszuführen, speichert die Betrachteranwendung 163 den Inhalt, einschließlich dem ausführbaren Code, der Zielanwendung 171 in dem Speicherdes Clients 106. In einigen Ausführungsformen, wenn die Betrachteranwendung 163 den Inhalt der Zielanwendung 171 dem Speicher hinzufügt, ersetzt die Betrachteranwendung 163 einen Teil von seinem eigenen Inhalt in dem Speicher. Als ein Ergebnis kann die Zielanwendung 171 damit beginnen, auf dem Client 106 ausgeführt zu werden, als wäre die Zielanwendung kompiliert und auf dem Client installiert worden mittels einer traditionellen Anwendungsinstallationsroutine.
-
In einigen Implementierungen initiiert die Betrachteranwendung 163 Zielanwendungen 171, die gebaut sind unter Verwendung von Webtechnologie, wie HTML und JavaScript/CSS (”cascading style sheets”), wobei die Betrachteranwendung 163 eine Web View-Benutzerschnittstelle umfasst, die die volle Breite und Höhe auf der Anzeige 161 des Clients 106 einnimmt. Sobald das Anwendungspaket für die Zielanwendung 171 von dem Client 106 erhalten und ausgepackt wurde, überprüft die Betrachteranwendung 163 die Metadaten der Zielanwendung, um das Wurzel-HTML Dokument für die Zielanwendung zu finden. Die Betrachteranwendung 163 initiiert dann die Ausführung der Zielanwendung 171 durch Umleiten des Inhaltebetrachters, der die Web View-Benutzerschnittstelle der Betrachteranwendung bereitstellt, um das Wurzel-HTML Dokument für die Zielanwendung 171 zu laden. Dieses Wurzel-HTML Dokument der Zielanwendung 171 wird sich dann um das Anfordern aller möglichen anderen lokalen Assets, die benötigt werden, welche als Teil des Anwendungspakets (zum Beispiel Skripte, Fonts, Bilder, Styles und so weiter) enthalten sein können und/oder an einem anderen Ort auf der Clientvorrichtung 106 vorhanden sein können, kümmern.
-
In verschiedenen Ausführungsformen wird auch eine Kopie des Codes für die Betrachteranwendung 163 an einem Ort auf dem Client 106 gespeichert (z. B. in Flash Speicher oder anderem nichtflüchtigem Speicher, einem anderen Speicherort im Speicher und so weiter), der sich von dem Ort unterscheidet, an dem er im Speicher ausgeführt wurde. Auf diese Weise existiert der Code für die Betrachteranwendung weiterhin auf dem Client 106 und kann zur Ausführung gestartet werden, wenn Teile des Codes der Betrachteranwendung 163 im Speicher mit der Zielanwendung 171 ersetzt werden.
-
Beispielsweise ist die durch den Benutzer mittels der Betrachteranwendung 163 zur Evaluation ausgewählte Zielanwendung 171 ”App Foxtrot”, eine beispielhafte Bildeditieranwendung. Wie in 3 gezeigt wurde der Inhalt der App Foxtrot in den Speicher platziert und wird ausgeführt, so dass die Betrachteranwendung 163, oder zumindest die Benutzerschnittstelle für die Betrachteranwendung 163 nicht länger ausgeführt wird.
-
Ohne weitere Modifikationen müsste daher ein Benutzer, der die Zielanwendung 171 evaluiert, um zur Benutzerschnittstelle für die Betrachteranwendung 163 zurückzukehren, der Benutzer die Zielanwendung 171 verlassen und die Betrachteranwendung 163 erneut starten. In einigen Ausführungsformen, um die Benutzerinteraktionen, die erforderlich sind, um von der Ausführung der Zielanwendung 171 zurück zur Benutzerschnittstelle der Betrachteranwendung 163 zu gelangen, modifiziert die Betrachteranwendung 163 die lokale Kopie des Codes der Zielanwendung, um ergänzenden Code 173 einzufügen, der es dem Benutzer erlaubt, neben anderen möglichen Funktionen, aus der Zielanwendung 171 heraus zur Benutzerschnittstelle der Betrachteranwendung 163 ”zurückzukehren”. Zu diesem Zweck kann die Betrachteranwendung 163 ergänzenden Code 173 in die Zielanwendung 171 einfügen, wo der ergänzende Code 173 einen Zeiger oder eine andere Art von Referenz zurück zu dem Code für die Benutzerschnittstelle der Betrachteranwendung 163 im lokalen Speicher und/oder andernorts im Speicher auf dem Client 106 enthält. Wenn als Teil der Ausführung der Zielanwendung 171 ausgeführt, kann der ergänzende Code 173 die Referenz aktivieren, um das Ausführen von Code für die Benutzerschnittstelle der Betrachteranwendung 163 zu beginnen, der durch die Referenz spezifiziert ist, basierend auf einer Geste, die von dem Benutzer eingegeben wird, einer Auswahl eines Eintrags aus einem Menü und/oder andernorts durch die Benutzerschnittstelle der Zielanwendung 171.
-
Zum Beispiel wurde, wie in 4 gezeigt, die App Foxtrot (das heißt, die Zielanwendung), die nun auf dem Client 106 ausgeführt wird, zuvor von der Betrachteranwendung 163 modifiziert, um ergänzenden Code 173 zu enthalten, der eine Referenz zurück zu dem Code für die Benutzerschnittstelle der Betrachteranwendung enthält, der in einem Ort gespeichert ist, auf den der Client 106 zugreifen kann. In diesem Fall stellt der ergänzende Code 173 ein ergänzendes Menü 403 bereit, das von einer bestimmten Geste oder anderen Eingabe, die von einem Benutzer empfangen wird, getriggert wird. Aus diesem ergänzenden Menü 403 kann der Benutzer einen oder mehrere Einträge aus dem Menü auswählen, wie beispielsweise ”Zurückkehren zur Betrachterapp”, was die Referenz zum initiieren des Ausführens von Code für die Benutzerschnittstelle der Betrachteranwendung 163 anstelle der App Foxtrot aktiviert. In einigen Ausführungsformen wird der Zustand der Betrachteranwendung 163 im Speicher beibehalten von vor dem Start des Ausführens der Zielanwendung 171. In anderen Ausführungsformen wird der Code für die Betrachteranwendung 163 von dem getrennten Ort neu initialisiert und der Zustand von gerade vor dem Starten der Ausführung der Zielanwendung 171 wird nicht bewahrt.
-
Der ergänzende Code 173 kann Code für andere Merkmale enthalten, die der Zielanwendung 171 hinzugefügt werden können, anstelle von oder zusätzlich zu dem oben beschriebenen Merkmal, um zur Betrachteranwendung zurückzukehren. In verschiedenen Ausführungsformen fügt die Betrachteranwendung 163 ergänzenden Code 173 einer Zielanwendung 171 hinzu, um die Zielanwendung zu ”erneuern”. In dieser Ausführungsformen ruft der der Zielanwendung 171 hinzugefügte Code, wenn er aktiviert wird, eine neue Kopie der Zielanwendung von dem CMS 121 ab und beginnt die Ausführung dieser neuen Kopie der Zielanwendung 171, ohne das der Benutzer zuerst zur Betrachteranwendung zurückkehren und dann eine neue Kopie abrufen muss. Der ergänzende Code 173, der verwendet wird, um die Zielanwendung zu erneuern, kann konfiguriert sein, um die letzte Version der Zielanwendung auf dem CMS 121 zu holen, dieselbe Version der Zielanwendung wie diejenige, die gerade ausgeführt wird, nichts zu tun, bis eine neuere Version der Zielanwendung auf dem CMS 121 verfügbar ist, und/oder andere Möglichkeiten, wie verstanden werden wird. Wie zuvor diskutiert können einige Typen von Zielanwendungen In-App-Updates unter Verwendung eines Aktualisierungsservers unterstützen, jedoch tun dies nicht alle Zielanwendungen. Weiter mögen selbst für Anwendungen, die In-App Updates unterstützen, Benutzer wünschen, einfach die Zielanwendung zu aktualisieren, ohne das In-App Update Merkmal zu konfigurieren und zu testen.
-
In nochmals weiteren Ausführungsformen fügt die Betrachteranwendung 163 einer Zielanwendung 171 ergänzenden Code 173 hinzu, um einen oder mehrere Screenshots zu erfassen. In diesen Ausführungsformen erfasst der Code, der der Zielanwendung 171 hinzugefügt wurde, wenn er aktiviert wird, einen Screenshot der Benutzerschnittstelle 164 der Zielanwendung 171 während dem Ausführen. Der Screenshot kann in verschiedenen möglichen Standbild- und/oder Videoformaten erfasst werden, wie JPEG (Joint Photographic Experts Group), BMP (Bitmap), GIF (Graphics Interchange Format), MPEG 1/2/4 (Moving Picture Experts Group), und so weiter. Zusätzlich kann das Screenshot Merkmal das Übertragen der erfassten Screenshot Bildes von dem Client 106 an das CMS 121 unterstützen. Wie verstanden werden wird kann, auch wenn das ergänzende Menü 403 verwendet werden kann, um die verschiedenen Merkmale zu imitieren, die in dem ergänzenden Code 173 verfügbar sind, jedes der Merkmale direkt aus einer Benutzereingabe durch die Benutzerschnittstelle initiiert werden, anstelle oder zusätzlich zu dem ergänzenden Menü 403. Beispielsweise initiiert eine Dreifinger-Berührungsgeste ein Zurückkehren zur Betrachterapp, eine Kreis-Berührungsgeste initiiert eine Screenshot Erfassung, und eine Dreiecksgeste initiiert eine Auffrischung der Zielapp.
-
Mit Bezug als nächstes auf 5 bis 7 sind Flussdiagramme gezeigt, die jeweils ein Beispiel der Operation eines Teils der Betrachteranwendung 163 gemäß verschiedenen Ausführungsformen. Es sei verstanden, dass jedes der Flussdiagramme von 5 bis 7 lediglich ein Beispiel der vielen unterschiedlichen Typen von funktionellen Anordnungen, die verwendet werden können, um die Operation des Teils der Betrachteranwendung 163 wie hierin beschrieben zu implementieren. Als eine Alternative kann jedes der Flussdiagramme von 5 bis 7 als ein Beispiel von Elementen eines Verfahrens, das in dem Client 106 implementiert ist, gemäß einer oder mehreren Ausführungsformen.
-
5 ist ein Flussdiagramm, das eine Funktionalität zum Ausführen einer Zielanwendung innerhalb einer Betrachteranwendung nach Erhalten der Zielanwendung von einem Inhalteverwaltungssystem und Modifizieren der Zielanwendung, um ergänzenden Code zu enthalten, zeigt, wobei die Funktionalität implementiert ist als Teile einer Betrachteranwendung 163, die in einem Client 106 ausgeführt wird. Die Operation der in 5 beschriebenen Betrachteranwendung 163 kann ausgeführt werden in Antwort darauf, dass ein Benutzer die Ausführung der Betrachteranwendung 163 auf der Clientvorrichtung 106 startet. Beginnend mit Block 503 etabliert ein Anwendungsentwickler oder ein anderer Benutzer, der eine Anwendung, die sich in der Entwicklung befindet, testen soll, eine Kommunikationssitzung zwischen der Betrachteranwendung 163 und dem CMS 121. Die Kommunikationssitzung kann unter Verwendung verschiedener Protokolle ausgeführt werden, wie zum Beispiel HTTP, SOAP, REST, UDP, TCP und/oder andere Protokolle zum Kommunizieren von Daten über das Netzwerk 109. In einigen Implementierungen wird der Benutzer dem CMS 121 unter Verwendung von einem oder mehreren Benutzercredentials bzw. Benutzeranmeldedaten authentisiert.
-
Als nächstes empfängt im Block 506 die Betrachteranwendung 163 eine Liste von dem CMS 121, welche Anwendungen enthält, die von dem Benutzer durch die Betrachteranwendung 163 evaluiert werden können. Die Liste von Anwendungen kann ebenfalls Namen, Versionsinformation, Modifikationsdaten, Screenshots, Schlüsselwörter und/oder andere mögliche Metadaten, die mit den Anwendungen assoziiert sind, enthalten. Die Liste der Anwendungen wird dem Benutzer über eine Benutzerschnittstelle dargestellt, von der der Benutzer eine Zielanwendung zur Evaluation auswählen kann.
-
Dann bestimmt im Block 509 die Benutzeranwendung, ob der Benutzer eine Eingabe empfangen hat, die eine Anwendung zur Evaluation auswählt. Wenn der Benutzer keine Auswahl gemacht hat, kehrt die Ausführung der Betrachteranwendung zu 509 zurück. Alternativ, wenn im Block 512 ein Benutzer eine Zielanwendung ausgewählt hat, sendet die Betrachteranwendung 163 über das Netzwerk 109 eine Anwendungsanforderung 165 an das CMS 121. Die Anwendungsanforderung 165 kann einen Identifikator für die zu evaluierende Zielanwendung, Deskriptoren und Versionsinformation für die Betrachteranwendung 163 und den Client 106, auf dem die Zielanwendung zur Evaluation ausgeführt werden soll, und/oder andere mögliche Information enthalten.
-
Nachfolgend bestimmt, im Block 515, die Betrachteranwendung, ob in Antwort auf die Anwendungsanforderung Zielanwendungsdaten 167 empfangen wurden. Wenn die Zielanwendungsdaten 167 noch nicht empfangen wurden, kehrt die Ausführung der Betrachteranwendung 163 zum Block 515 zurück. Alternativ kann, wenn im Block 518 die Zielanwendungsdaten 167 empfangen wurden, die Betrachteranwendung 163 den Inhalt der Zielanwendung modifizieren, um einen etwaigen ergänzenden Code zu enthalten, einschließlich Änderungen am existierenden Code der Zielanwendung. Zum Beispiel kann der ergänzende Code Änderungen an der Netzwerkadresse eines Netzwerkservers beinhalten, der für In-App Updates verwendet wird, Code mit einer Referenz, um die Ausführung der Betrachteranwendung 163 wieder aufzunehmen, einschließlich der Benutzerschnittstelle, aus der Zielanwendung 171 heraus (das heißt, ”zur Betrachterapp zurückkehren”), Code, um ein Auffrischen der Zielanwendung 171 zu initiieren, Code zum Erfassen von Screenshots der Zielanwendung und/oder andere mögliche Änderungen an dem Code oder Inhalt der lokalen Kopie der Zielanwendung 171.
-
Als nächstes speichert, im Block 521, die Betrachteranwendung 163 Inhalt, einschließlich ausführbarem Code, der Zielanwendung 171 im Speicher. Dann führt im Block 524 die Betrachteranwendung 163 den gespeicherten Code der Zielanwendung 171 auf dem Client 106 aus. An diesem Punkt endet die Ausführung der Betrachteranwendung 163, oder zumindest der Benutzerschnittstelle der Betrachteranwendung 163, mit dem Beginn der Ausführung der Zielanwendung 171, einschließlich etwaigem ergänzenden Code 173.
-
Wie oben diskutiert kann in einigen Ausführungsformen die Ausführung der Betrachteranwendung, einschließlich der Benutzerschnittstelle, wiederaufgenommen werden, indem der Benutzer eine Eingabe tätigt, welche das ”Zurückkehren zur Betrachterapp” Merkmal des ergänzenden Codes 173 initiiert. In diesen Ausführungsformen existiert der Code für die Betrachteranwendung weiterhin auf dem Client 106 (zum Beispiel in Flash Speicher oder anderem nichtflüchtigen Speicher, einem anderen Ort im Speicher und so weiter) und kann zur Ausführung initiiert werden, nachdem die Ausführung der Zielanwendung 171 begonnen hat.
-
6 ist ein Flussdiagramm, das eine Funktionalität zum Ausführen einer Zielanwendung innerhalb einer Betrachteranwendung zeigt, wobei die Zielanwendung unter Verwendung von Webtechnologie gebaut ist und die Funktionalität als Teile einer Betrachteranwendung 163, die in einem Client 106 ausgeführt wird, implementiert ist. Die Operation der in 6 beschriebenen Betrachteranwendung 163 wird in Antwort darauf, dass ein Benutzer eine Zielanwendung 171 zur Evaluation in der Betrachteranwendung 163 auf der Clientvorrichtung 106 auswählt. Das Anwendungspaket für die Zielanwendung kann in einem lokalen Speicher auf dem Client 106 residieren, oder kann von einem Server, wie einem CMS, über ein Netzwerk abgerufen werden. Beginnend mit Block 603 erhält die Betrachteranwendung 163 ein Anwendungspaket für eine Zielanwendung 171, das unter Verwendung von Webinhalt, wie HTML, XML (”extensible markup language”), JavaScript/CSS und/oder anderen Webtechnologien gebaut ist. Das Anwendungspaket kann ZIP, RAR, BZIP, APK oder ein anderes Dateipackungsformat sein.
-
Als nächstes untersucht die Betrachteranwendung 163 im Block 606 die Metadaten für die Zielanwendung 171, die in dem Anwendungspaket bereitgestellt sind, um den anfänglich auszuführenden Inhalt für die Zielanwendung zu bestimmen. In einigen Implementierungen kann der anfängliche Inhalt von der Betrachteranwendung 163 bestimmt werden basierend auf einer Untersuchung des Inhalts der Zielanwendung 171. Wenn zum Beispiel die Zielanwendung unter Verwendung von HTML mit JavaScript/CSS gebaut ist, wäre der anfängliche Inhalt das Wurzel-HTML Dokument. Dann erhält die Betrachteranwendung 163 im Block 609 etwaige Plug-Ins oder zusätzlichen Code, die bzw. der von dem Client 106 benötigt wird, um die Ausführung der Zielanwendung 171 unterstützt wird, Ein Plug-In könnte zum Beispiel verwendet werden, um eine Videowiedergabe für die Zielanwendung bereitzustellen.
-
Weiter weist im Block 612 die Betrachteranwendung 163 den Inhaltebetrachter, der die Web View Benutzerschnittstelle für die Betrachteranwendung bereitstellt, an, zu dem anfänglichen Inhalt umzuleiten, der für die Zielanwendung 171 bestimmt wird. In einer Ausführungsform ist der Inhaltebetrachter ein Renderwerk für verschiedene Webinhalte, das in der Betrachteranwendung 163 und in vielen möglichen Zielanwendungen vorhanden ist. Als nächstes lädt der Inhaltebetrachter für die Betrachteranwendung 163 im Block 615 zumindest den anfänglichen Inhalt für die Zielanwendung 171 in den Speicher des Clients 106.
-
In einer Ausführungsform ersetzt der Inhalt für die Zielanwendung 171 zumindest einen Teil der Betrachteranwendung 163, wie einen Teil des Inhalts für die Benutzerschnittstelle der Betrachteranwendung. Das Ersetzen von zumindest einem Teil des Codes der Betrachteranwendung 163 durch Code der Zielanwendung 171 stellt einen Vorteil mit Blick auf eine Reduktion in der Menge der Speicherressourcen des Clients 106 dar, die eingenommen werden, um die Zielanwendung auszuführen, unter anderen möglichen Vorteilen. In einer anderen Ausführungsform wird der Inhalt für die Zielanwendung 171 dem Speicher hinzugefügt, ohne dass etwas der Betrachteranwendung 163 ersetzt wird, Dies stellt, neben anderen Möglichkeiten, den Vorteil bereit, es dem Client 106 zu erlauben, rasch zur Betrachteranwendung 163 zurückzukehren und die Ausführung derselben von dem Zustand gerade vor dem Beginnen der Ausführung der Zielanwendung 171 wiederaufzunehmen.
-
Die Zielanwendung wird innerhalb der Ausführung der Betrachteranwendung ausgeführt, so dass die Zielanwendung nicht als eine alleinstehende Anwendung auf der Vorrichtung installiert werden muss. Der Code der Zielanwendung wird innerhalb der Ausführung der Betrachteranwendung ausgeführt, wenn, im Block 618, der Inhaltebetrachter für die Betrachteranwendung 163 die Ausführung des anfänglichen Inhalts der Zielanwendung 171 initiiert. In einigen Ausführungsformen umfasst das Ausführen des anfänglichen Inhalts, dass der Inhaltebetrachter den anfänglichen Webinhalt für die Zielanwendung 171, einschließlich HTML und JavaScript/CSS, ausführt und rendert. Sobald die Ausführung der Zielanwendung 171 begonnen hat, endet die Ausführung dieses Teils der Betrachteranwendung 163 (zum Beispiel die Benutzerschnittstelle), wie gezeigt. Das Ausführen der Zielanwendung schreitet fort, als wäre diese über eine herkömmliche Installationsroutine installiert worden, was eine Vollbildschirm-Benutzerschnittstelle, Zugriff auf Sensoren und andere Eingabevorrichtungen, Zugriff, um Daten über Netzwerkschnittstellen und/oder durch lokalen Speicher zu senden/zu empfangen, sowie andere mögliche Ressourcen beinhalten. In einigen Implementierungen wird die Ausführung der Zielanwendung 171 fortfahren, bis zu einem Zeitpunkt, an dem die Ausführung von einem Benutzer unterbrochen wird (zum Beispiel, indem er oder sie über die Benutzerschnittstelle der Zielanwendung 171 anfordert, die App zu beenden), oder durch eine andere Funktion des Clients 106 (zum Beispiel wenn das Betriebssystem die Ausführung der Zielanwendung terminiert). In anderen Implementierungen wird der Zielanwendung 171 ergänzender Code 173 hinzugefügt, der auf eine Eingabe von einem Benutzer, der, neben anderen möglichen Funktionen, das Zurückkehren zum Ausführen der Betrachteranwendung 163 aus der Ausführung der Zielanwendung 171 heraus anfordert, reagiert, wie zuvor beschrieben.
-
7 ist ein Flussdiagramm, welche eine Funktionalität zum Modifizieren von Code einer Zielanwendung, um ergänzenden Code zum Zurückkehren zur Betrachteranwendung während dem Ausführen der Zielanwendung zu enthalten, wobei die Funktionalität implementiert ist als Teile einer Betrachteranwendung 163, die ausgeführt wird in einem Client 106. Die Operation der in 7 beschriebenen Betrachteranwendung 163 wird in Antwort darauf ausgeführt, dass ein Benutzer eine Zielanwendung zur Evaluation in der Betrachteranwendung 163 auf der Clientvorrichtung 106 auswählt. Insbesondere beziehen sich die beschriebenen Operationen auf das Hinzufügen von ergänzendem Code zum Zurückkehren zu der Betrachteranwendung 163 aus der Ausführung der Zielanwendung 171 heraus. Das Anwendungspaket für die Zielanwendung 171, die in dem Client 106 modifiziert wird, um ergänzenden Code zu enthalten, kann in lokalem Speicher auf dem Client 106 residieren, oder von einem Server, wie einem CMS, über ein Netzwerk abgerufen werden. Beginnend mit Block 703 erhält die Betrachteranwendung 163 ein Anwendungspaket für eine Zielanwendung 171. Das Anwendungspaket kann in einem ZIP, RAR, BZIP, APK oder anderem Dateipaketformat sein.
-
Dann bestimmt die Betrachteranwendung 163 im Block 706, ob der Zielanwendung 171 ergänzender Code 173 hinzugefügt werden soll, um ein Zurückkehren aus der laufenden Zielanwendung 171 heraus zu der Betrachteranwendung 163 zu unterstützen. Eine solche Bestimmung kann basierend auf einer Auswahl innerhalb einer Benutzerschnittstelle 164 der Betrachteranwendung 163, basierend auf einer Benutzerpräferenz und/oder anderen möglichen Quellen erfolgen. Wenn der Code zum Zurückkehren zu der Betrachterapp dem Code für die Zielanwendung 171 nicht hinzuzufügen ist, schreitet die Ausführung der Betrachteranwendung 163 zum Block 715 fort. Wenn alternativ Code zum Zurückkehren zu der Betrachterapp dem Code für die Zielanwendung 171 hinzuzufügen ist, bestimmt die Betrachteranwendung 163 im Block 709 einen Referenzpunkt in der Betrachteranwendung 163, zu dem die Ausführung von der Zielanwendung 171 zurückkehren soll.
-
In Ausführungsformen, in denen die Betrachteranwendung 163 unter Verwendung von Webinhalt gebaut ist, kann der Referenzpunkt ein Identifikator für ein Wurzel-HTML Dokument sein, das eine Benutzerschnittstelle und andere Funktionalität für die Betrachteranwendung bereitstellt. In anderen Ausführungsformen ist der Referenzpunkt eine Adresse im Speicher des Clients 106 oder ein Link auf einen Ort in einem Dateisystem für nichtflüchtigen Speicher auf dem Client 106. Als nächstes modifiziert die Betrachteranwendung 163 im Block 712 Code der Zielanwendung 171 um ergänzenden Code zum Umleiten der Ausführung zu dem Referenzpunkt der Betrachteranwendung 163 zu enthalten. In einigen Ausführungsformen reagiert der ergänzende Code auf eine besondere Geste, die von einem Benutzer auf einem berührungsempfindlichen Bildschirm gemacht wird, welche, während dem Ausführen der Zielanwendung 171, das Zurückkehren zu der Betrachteranwendung 163 initiiert. In anderen Ausführungsformen stellt der ergänzende Code ein ergänzendes Menü von Aktionen, die aus der Ausführung der Zielanwendung heraus ausgeführt werden können, bereit, wobei eine der Aktionen das Zurückkehren zu der Betrachteranwendung 163 ist.
-
Weiter speichert die Betrachteranwendung im Block 715 den Code für die Zielanwendung 171, einschließlich allem etwaig hinzugefügten ergänzenden Code, in dem Client 106. Von diesem Punkt an kann der Code für die Zielanwendung 171 von der Betrachteranwendung 163 zur Evaluation durch einen Benutzer verfügbar gemacht werden, entweder unmittelbar oder zu einem späteren Zeitpunkt. Danach endet dieser Teil der Ausführung der Betrachteranwendung 163, wie gezeigt.
-
Mit Bezug auf 8 ist ein schematisches Blockdiagramm einer Clientvorrichtung 106 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Jede Clientvorrichtung 106 beinhaltet wenigstens eine Prozessurschaltung mit zumindest einem Prozessor 803 und einem Speicher 806, die beide mit einer lokalen Schnittstelle 809 gekoppelt sind. Die lokale Schnittstelle 809 kann zum Beispiel einen Datenbus mit einem begleitenden Adress-/Steuerbus, oder eine andere Busstruktur umfassen, wie verstanden werden kann.
-
In dem Speicher 806 sind sowohl Daten als auch verschiedene Komponenten gespeichert, die von dem Prozessor 803 ausgeführt werden können. Insbesondere sind die Betrachteranwendung 163, die Zielanwendung 171, ergänzender Code 173 und potentiell andere Anwendungen in dem Speicher 806 gespeichert und können von dem Prozessor 803 ausgeführt werden. Des Weiteren kann ein Betriebssystem in dem Speicher 806 gespeichert sein und von dem Prozessor 803 ausgeführt werden.
-
Es wird verstanden werden, dass es andere Anwendungen gibt, die in dem Speicher 806 gespeichert sind und von dem Prozessor 803 ausgeführt werden kann, wie versanden werden kann. Wenn eine der hierin diskutierten Komponenten in Form von Software implementiert ist, kann eine beliebige einer Anzahl von Programmiersprachen verwendet werden, wie zum Beispiel C, C++, C#, Objective C, Java®, JavaScript®, Perl, PHP, Visual Basic®, Python®, Ruby, Flash® oder andere Programmiersprachen.
-
Eine Anzahl von Softwarekomponenten sind in dem Speicher 806 gespeichert und können von dem Prozessor 803 ausgeführt werden. In dieser Beziehung bedeutet ”ausführbar” eine Programmdatei, die in einer Form vorliegt, die schlussendlich von dem Prozessor 803 ausgeführt werden kann. Beispiele von ausführbaren Programmen können zum Beispiel ein kompiliertes Programm sein, das in Maschinencode in einem Format übersetzt werden kann, das in einen Abschnitt mit wahlfreiem Zugriff des Speichers 806 geladen und von dem Prozessor 803 ausgeführt werden kann, Quellcode, der in dem geeigneten Format ausgedrückt sein kann, wie Objektcode, der eingerichtet ist, in einen Abschnitt mit wahlfreiem Zugriff des Speichers 806 geladen und von dem Prozessor 803 ausgeführt zu werden, oder Quellcode, der von einem anderen ausführbaren Programm interpretiert werden kann, um Anweisungen in einem Abschnitt mit wahlfreiem Zugriff des Speichers 806 zu erzeugen, um von dem Prozessor 803 ausgeführt zu werden, und so weiter. Ein ausführbares Programm kann in jedem Abschnitt oder jeder Komponente des Speichers 806 gespeichert werden, einschließlich zum Beispiel Speicher mit wahlfreiem Zugriff (RAM), Nur-Lese-Speicher (ROM), Festplatte, Halbleiterspeicher, USB Flash Laufwerk, Speicherkarte, optische Platte wie CD oder DVD, Diskette, Magnetband oder andere Speicherkomponenten.
-
Der Speicher 806 ist hierin als sowohl flüchtigen als auch nichtflüchtigen Speicher und Datenspeicherkomponenten zu umfassen definiert. Flüchtige Komponenten sind diejenigen, die Datenwerte nach einem Stromausfall nicht beibehalten. Nichtflüchtige Komponenten sind diejenigen, welche Daten bei einem Stromausfall beibehalten. Der Speicher 806 kann daher zum Beispiel Speicher mit wahlfreiem Zugriff (RAM), Nur-Lese-Speicher (ROM), Festplattenlaufwerke, Halbleiterspeicherlaufwerke, USB Flash Laufwerke, Speicherkarten, auf die über einen Speicherkartenleser zugegriffen wird, Disketten, auf die über ein zugeordnetes Diskettenlaufwerk zugegriffen wird, optische Platten, auf die über ein optisches Plattenlaufwerk zugegriffen wird, Magnetbänder, auf die über ein geeignetes Bandlaufwerk zugegriffen wird, und/oder andere Speicherkomponenten, oder eine Kombination von beliebigen zwei oder mehr von diesen Speicherkomponenten. Zusätzlich kann das RAM zum Beispiel statischen Speicher mit wahlfreiem Zugriff (SRAM), dynamischen Speicher mit wahlfreiem Zugriff (DRAM), oder magnetischen Speicher mit wahlfreiem Zugriff (MRAM) und andere solche Vorrichtungen umfassen. Das ROM kann zum Beispiel einen programmierbaren Nur-Lese-Speicher (PROM), einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM), einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (EEPROM), oder eine ähnliche Speichervorrichtung umfassen.
-
Auch kann der Prozessor 803 mehrere Prozessoren 803 und/oder mehrere Prozessorkerne repräsentieren und der Speicher 806 kann mehrere Speicher 806 repräsentieren, die jeweils in Parallelverarbeitungsschaltungen arbeiten. In solch einem Fall kann die lokale Schnittstelle 809 ein geeignetes Netzwerk sein, welches die Kommunikation zwischen beliebigen zwei der mehreren Prozessoren 803, zwischen jedem Prozessor 803 und jedem der Speicher 806, oder zwischen, beliebigen zwei der Speicher 806 und so weiter ermöglicht. Die lokale Schnittstelle 809 kann zusätzliche Systeme umfassen, die entworfen sind, um diese Kommunikation zu koordinieren, einschließlich zum Beispiel dem Ausführen von Load Balancing. Der Prozessor 803 kann von einer elektrischen oder einer anderen verfügbaren Bauweise sein.
-
Die Flussdiagramme von 5 bis 7 zeigen jeweils die Funktionalität und Operation einer Implementierung von Teilen der Betrachteranwendung 163. Wenn in Software verkörpert, kann jeder Block ein Modul, Segment oder anderen Teil von Code repräsentieren, das bzw. der Programmanweisungen umfasst, um die spezifizierte(n) logische(n) Funktion(en) zu implementieren. Die Programmanweisungen können in der Form von Quellcode verkörpert sein, der von einem Menschen lesbare Ausdrücke umfasst, die in einer Programmiersprache geschrieben sind, oder Maschinencode, der numerische Anweisungen umfasst, die von einem geeigneten Ausführungssystem wie einem Prozessor 803 in einem Rechnersystem oder einem anderen System erkannt werden können. Der Maschinencode kann aus dem Quellcode konvertiert werden und so weiter.
-
Obwohl die Flussdiagramme von 5 bis 7 jeweils eine bestimmte Reihenfolge der Ausführung zeigen, sei verstanden, dass die Reihenfolge der Ausführung sich von der gezeigten unterscheiden kann. Die Reihenfolge der Ausführung von zwei oder mehr Blöcken kann zum Beispiel relativ zur gezeigten Reihenfolge verwürfelt sein. Auch können zwei oder mehr Blöcke, die in 5 bis 7 nacheinander dargestellt sind, gleichzeitig oder teilweise gleichzeitig ausgeführt werden. Weiter können in einigen Ausführungsformen ein oder mehrere der in 5 bis 7 gezeigten Blöcke übersprungen oder ausgelassen werden. Zusätzlich mag aus Gründen verbesserter Nützlichkeit, Buchführung, Leistungsmessung oder zum Geben von Fehlerbehebungshilfen und so weiter dem hierin beschriebenen logischen Fluss eine beliebige Anzahl von Zählern, Zustandsvariablen, Warnsemaphoren oder Nachrichten hinzugefügt werden. Es sei verstanden, dass alle derartige Variationen im Bereich der vorliegenden Offenbarung sind.
-
Auch kann jede hierin beschriebene Logik oder Anwendung, einschließlich der Betrachteranwendung 163, der Zielanwendung 171 und dem ergänzenden Code 173, die bzw. der Software oder Code umfasst, in einem nicht-transitorischen bzw. nicht flüchtigen computerlesbaren Medium verwirklicht werden, zur Verwendung durch oder in Verbindung mit einem Anweisungsausführungssystem, wie zum Beispiel ein Prozessor 803 in einem Rechnersystem oder einem anderen System. In diesem Sinn kann die Logik zum Beispiel Ausdrücke umfassen, die Anweisungen und Deklarationen beinhalten, die aus dem computerlesbaren Medium geholt werden und von dem Anweisungsausführungssystem ausgeführt werden können. Im Kontext der vorliegenden Offenbarung kann ein ”computerlesbares Medium” jedes Medium sein, das die hierin beschriebene Logik oder Anwendung enthalten, speichern oder beibehalten kann, zur Verwendung durch oder in Verbindung mit dem Anweisungsausführungssystem.
-
Das computerlesbare Medium kann ein beliebiges von vielen physischen Medien umfassen, wie zum Beispiel magnetische, optische oder Halbleitermedien. Spezifischer Beispiele eines geeigneten computerlesbaren Mediums würden, ohne Beschränkung, Magnetbänder, magnetische Disketten, magnetische Festplatten, Speicherkarten, Halbleiterlaufwerke, USB Flash Laufwerke oder optische Platten beinhalten. Auch kann das computerlesbare Medium ein Speicher mit wahlfreiem Zugriff (RAM) sein, einschließlich zum Beispiel statischen Speicher mit wahlfreiem Zugriff (SRAM) und dynamischen Speicher mit wahlfreiem Zugriff (DRAM), oder magnetischen Speicher mit wahlfreiem Zugriff (MRAM). Zusätzlich kann das computerlesbare Medium ein Nur-Lese-Speicher (ROM), ein programmierbarer Nur-Lese-Speicher (PROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM), ein elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROM) oder ein anderer Typ von Speichervorrichtung sein.
-
Weiter kann jede hierin beschriebene Logik oder Anwendung, einschließlich der Betrachteranwendung 163, der Zielanwendung 171 und dem ergänzenden Code 173, in einer Vielfalt von Weisen implementiert und strukturiert sein. Zum Beispiel kann eine oder können mehrere hierin beschriebene Anwendungen als Module oder Komponenten einer einzelnen Anwendung implementiert sein. Zusätzlich sei verstanden, dass Begriffe wie ”Anwendung”, ”Dienst”, ”Rechenwerk”, ”Modul” und so weiter synonym verwendet sein mögen, und nicht beschränkend gedacht sind.
-
Disjunktive Sprache, wie die Phrase ”zumindest eines von X, Y oder Z”, solange nicht ausdrücklich anderweitig angegeben, wird anderweitig verstanden mit dem verwendeten Kontext allgemein verstanden, um darzulegen, dass ein Element, Betriff und so weiter entweder X, Y oder Z sein kann, oder eine Kombination davon (zum Beispiel X, Y und/oder Z). Daher ist derartige disjunktive Sprache allgemein nicht dazu gedacht, und soll nicht implizieren, dass bestimmte Ausführungsformen erfordern, dass wenigstens ein X, wenigstens ein Y oder wenigstens ein Z jeweils vorhanden sein müssen.
-
Es soll betont werden, dass die oben beschriebenen Ausführungsformen der vorliegenden Offenbarung lediglich mögliche Implementierungsbeispiele sind, die gegeben wurden, um ein deutliches Verständnis der Offenbarung zu geben. Viele Variationen und Modifikationen können an der bzw. den oben beschriebenen Ausführungsform(en) vorgenommen werden, ohne wesentlich von dem Geist und den Prinzipien der Offenbarung abzuweisen Alle derartigen Modifikationen und Variationen sollen hierin als im Bereich dieser Offenbarung und von den folgenden Ansprüchen geschützt sein.