Integrieren des Cloud-Diensts in die „Dateiauswahl“-Verträge

Bislang wurden Dokumente, Fotos, Videos und Musik von den Benutzern auf dem lokalen PC verwaltet, freigegeben und organisiert. Die Cloud bietet den Benutzern jedoch mittlerweile umfassendere Möglichkeiten für das Zugreifen, Verwenden und Verwalten ihrer wichtigen Dateien. Windows 8 unterstützt diese neuen Szenarien, indem die Cloud-Dienste direkt in die Apps integriert werden können, um vollständig neue, bislang undenkbare Möglichkeiten zu eröffnen.

Viele dieser Szenarien sind in der SkyDrive-App hervorgehoben, für die „Dateiauswahl“-Verträge verwendet werden. Mit den „Dateiauswahl“-Verträgen werden die in der App gespeicherten Dokumente, Fotos, Videos und Musikdateien des Benutzers für alle anderen Windows 8-Apps verfügbar. In diesem Beitrag wird die SkyDrive-App (mit der alle drei unter Verbinden von Apps, Dateien, PCs und Geräten mit der Cloud über SkyDrive und Windows 8 eingeführten „Dateiauswahl“-Verträge implementiert werden) verwendet, um Folgendes darzustellen:

  • Worum es sich bei „Dateiauswahl“-Verträgen handelt, und wie Sie diese verwenden können, um Ihre App um eine Reihe von Möglichkeiten zu erweitern
  • Wie Sie die geeigneten „Dateiauswahl“-Verträge für Ihre App auswählen
  • Tipps und Tricks für das Implementieren der „Dateiauswahl“-Verträge

Unterstützung für „Dateiöffnungsauswahl“ in der SkyDrive-App

Unterstützung der „Dateiöffnungsauswahl“ in der SkyDrive-App

Übersicht über die „Dateiauswahl“-Verträge

Wie der Name andeutet, erweitern die „Dateiauswahl“-Verträge die Dateiauswahl, indem Windows 8-Apps Dateien, Speicherorte und sogar Dateiaktualisierungen für alle anderen Windows 8-Apps bereitstellen können. So wird im abgebildeten Screenshot deutlich, dass auf alle meine Dateien in SkyDrive über die Dateiauswahl zugegriffen werden kann.

Die „Dateiauswahl“-Verträge bestehen aus drei unabhängigen Verträgen: Auswahlvertrag zum Öffnen von Dateien, Auswahlvertrag zum Speichern von Dateien und Vertrag für die Aktualisierung von zwischengespeicherten Dateien. Sie müssen nur die für Ihre App geeigneten Verträge implementieren. Beachten Sie bei der Entscheidung, welche Verträge implementiert werden sollen, die folgenden Richtlinien:

  • Öffnen von Dateien: Sollte verwendet werden, wenn Ihre App über eine einzigartige und/oder besondere Dateiansicht verfügt, auf die anderweitig nicht problemlos zugegriffen werden kann. So implementiert die SkyDrive-App beispielsweise diesen Vertrag, sodass sie allen Windows 8-Apps Zugriff auf die in ihrem Dienst gespeicherten Dateien bereitstellen kann.
  • Speichern von Dateien: Wenn Ihre App den Auswahlvertrag zum Öffnen von Dateien unterstützt, kann dieser verwendet werden, wenn Benutzer Ihre App als möglichen Speicherort verwenden möchten. So implementiert die SkyDrive-App beispielsweise diesen Vertrag, damit problemlos von allen Windows 8-Apps in diesem Dienst gespeichert werden kann. Bei einigen Apps muss entschieden werden, ob Sie den Auswahlvertrag zum Speichern von Dateien oder den Vertrag für „Ziel freigeben“ (oder beide) implementieren, um Daten an Ihre App übergeben zu können. Hilfe zu dieser Entscheidung finden Sie unter dem Thema Freigeben und Austauschen von Daten.
  • Aktualisierung zwischengespeicherter Dateien: Verwenden Sie diesen Vertrag, wenn Ihre App auch automatisch Dateien nachverfolgt und aktualisiert, um diese mit dem zentralen Repository Ihrer App zu synchronisieren. Die SkyDrive-App implementiert diesen Vertrag, damit alle in der SkyDrive-App ausgewählten/gespeicherten Dateien ohne die Dateiauswahl einfach aktualisiert werden können. Wenn ich beispielsweise in meiner bevorzugten Foto-App ein Bild auf SkyDrive öffne, werden alle Änderungen an diesem Bild automatisch an SkyDrive zurückgesendet (ohne die Dateiauswahl öffnen zu müssen).

Man kann diese Verträge als Sequenz betrachten. So empfehlen wir beispielsweise, in Windows 8-Apps zunächst den Auswahlvertrag zum Öffnen von Dateien zu implementieren und anschließend zu ermitteln, ob der Auswahlvertrag zum Speichern von Dateien ebenfalls implementiert werden sollte usw.

 

Die Sequenz der „Dateiauswahl“-Verträge

Die Sequenz der „Dateiauswahl“-Verträge

Nachdem wir einen Überblick über die Verträge gewonnen haben, betrachten wir jetzt die Implementierung im Einzelnen. Um diese Konzepte zu veranschaulichen, bleiben wir bei SkyDrive als Beispiel-App.

Szenario 1: Auswahlvertrag zum Öffnen von Dateien

Mithilfe dieses Vertrags können die in Ihrer App gespeicherten, erstellten und verwalteten Dateien in beliebigen anderen Windows 8-Apps verwendet werden. Wenn dieser Vertrag beispielsweise in SkyDrive implementiert wird, können Sie in allen anderen Windows 8-Apps auf Ihre Dateien auf SkyDrive zugreifen. Vom Einrichten eines Profilbilds bis hin zum Öffnen eines Dokuments auf SkyDrive: Ich kann unabhängig davon, was ich vorhabe oder welche Windows 8-App ich verwende, auf alle meine SkyDrive-Inhalte zugreifen!

Wenn Ihre App diesen Vertrag implementiert, kann dieser im Modus „Öffnen“ der Dateiauswahl gestartet und angezeigt werden. Im Dateiauswahlmenü wird immer dann ein Einstiegspunkt für Ihre App angezeigt, wenn ein von Ihrer App bereitgestellter Dateityp ausgewählt wird:

Dateiöffnungsauswahl

SkyDrive im Dateiauswahlmenü

Beim Starten wird Ihre App im Anzeigebereich der Dateiauswahl platziert. Dabei übernimmt der Rahmen der Dateiauswahl das in Ihrem Manifest angegebene Farbschema:

skydrive_thailand

Die in der Dateiauswahl für den Auswahlvertrag zum Öffnen von Dateien gehostete SkyDrive-App

Implementieren des Vertrags

Sie können den Auswahlvertrag zum Öffnen von Dateien in die App einbinden, indem Sie den Schnellstart befolgen. Wenn der Vertrag in die App eingebunden wurde, muss die App im nächsten Schritt so eingerichtet werden, dass die vom Benutzer auswählbaren Dateien angezeigt werden. Mit der integrierten Visual Studio-Vorlage können Sie eine Auswahlansicht erstellen, nachdem der Auswahlvertrag zum Öffnen von Dateien Ihrem Manifest hinzugefügt wurde. Wenn Sie bereits eine Ansicht in Ihrer Haupt-App erstellt haben, können Sie diese auch als Grundlage für die Auswahlansicht verwenden. Wie im Folgenden gezeigt wird, wurde für SkyDrive die vorhandene Ansicht der Haupt-App erneut verwendet. Auf diese Weise wurde Zeit gespart und die Konsistenz mit der Ansicht der Haupt-App gewährleistet.

skydrive_view1Die SkyDrive-App verfügt über ähnliche Ansichten und Navigationsmodelle

Die SkyDrive-App verfügt über ähnliche Ansichten und Navigationsmodelle
in der Haupt-App und den gehosteten Versionen der App

Zudem ist es für das Auswählen von Dateien in der App wichtig, dass diese über einen Auswahlmechanismus verfügt. Wenn Sie bereits die integrierten Steuerelemente HTML ListView oder XAML GridView verwenden, sind die Auswahlmechanismen und Ansichten bereits in die Steuerelemente integriert.

Auswahlansicht der SkyDrive-App

Auswahlansicht der SkyDrive-App

Nachdem eine Datei ausgewählt wurde, müssen Sie einen StorageFile an die Dateiauswahl übergeben, damit diese im Korb der Dateiauswahl angezeigt werden. In unserem Szenario können Sie einen lokal oder URI- oder Stream-unterstützten StorageFile verwenden. URI- und Stream-unterstützte StorageFiles eignen sich am besten für Dateien, die sich nicht auf dem lokalen Computer befinden, da der Dateidownload verschoben werden kann, bis die App, die die Datei verwendet, auf diese zugreift. Die Auswahl des zu verwendenden StorageFile ist abhängig von der Implementierung Ihrer App – URI ist ein automatischer Ansatz, während Sie bei einer Stream-Unterstützung konfigurieren können, wie die Datei beim Zugriff heruntergeladen wird. Wenn auf die Datei beispielsweise nicht öffentlich über eine URI zugegriffen werden kann und eine Authentifizierung erforderlich ist, können bei der Lösung mit Stream-Unterstützung die erforderlichen Anmeldeinformationen übergeben werden. Im Folgenden finden Sie ein kurzes Beispiel für das Hinzufügen eines URI-unterstützten StorageFile zum Korb der Dateiauswahl:

JavaScript

 // Create thumbnail for the file
var thumbnailSource = Windows.Storage.Streams.RandomAccessStreamReference.createFromUri(new Windows.Foundation.Uri
(selectedItem.fileThumbnailUri));

// Add a file to the FileOpenPickerUI that is downloaded using BackgroundTransfer

Windows.Storage.StorageFile.createStreamedFileAsync(selectedItem.name, onDataRequested, thumbnailSource).done
(function (streamedFile) {   pickerUI.addFile(selectedItem.id, streamedFile);
});


function onDataRequested(outputStream) {
   var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
   var download = downloader.createDownload(new Windows.Foundation.Uri(selectedItem.fileUri), null);
   download.startAsync().done();
   var inputStream = download.getResultStreamAt(0);
   Windows.Storage.Streams.RandomAccessStream.copyAndCloseAsync(inputStream, outputStream).done(function () {
      inputStream.close();
   });
}

C#

 // Create thumbnail for the file
var thumbnailSource = RandomAccessStreamReference.CreateFromUri(new Uri(selectedItem.FileThumbnailUri));
// Add a file to the FileOpenPickerUI that is downloaded using BackgroundTransfer
StorageFile file = await StorageFile.CreateStreamedFileAsync(selectedItem.Name, OnDataRequested, thumbnailSource);
_openUI.AddFile(selectedItem.Id, file);

protected async void OnDataRequested(StreamedFileDataRequest outputStream)
{
   var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();
   var download = downloader.CreateDownload(new Uri(_selectedItem.FileUri), null);
   var downloadTask = download.StartAsync();
   using (var inputStream = download.GetResultStreamAt(0))
   {
      await RandomAccessStream.CopyAndCloseAsync(inputStream, outputStream);
   }
   await downloadTask;
}

Erstellen einer Benutzeroberfläche für die Auswahl

Ein wichtiger Bestandteil des Abonnements eines Auswahlvertrags zum Öffnen von Dateien ist das Bereitstellen einer Benutzeroberfläche für die Auswahl, die maßgeschneidert, auf die Auswahl konzentriert und am Design und Erscheinungsbild Ihrer Haupt-App ausgerichtet ist. Unter Richtlinien und Prüfliste für Verträge für „Dateiauswahl“ werden die wichtigsten Aspekte für das Entwerfen dieser Benutzeroberfläche aufgeführt.

Im Folgenden finden Sie einige schnelle Methoden zum Befolgen der Richtlinien zur Implementierung:

  • Befehle: Da die App-Leiste in der Dateiauswahl nicht unterstützt wird, sollte die in die Visual Studio-Vorlage integrierte Befehlszeile verwendet werden. Dies wird in Punkt 1 des folgenden Diagramms verdeutlicht.
  • Navigation: Richten Sie das Navigationsmodell und die Möglichkeiten an den bereits verwendeten Komponenten der Haupt-App aus. Stellen Sie zudem sicher, dass die Inhalte der Eigenschaft Title so eingerichtet werden, dass diese mit der Anzeige des aktuellen Speicherorts in der App übereinstimmt. Dies wird in Punkt 2 des folgenden Diagramms verdeutlicht.
  • Auswahl: Da die Dateiauswahl sowohl die Einzel- als auch die Mehrfachauswahl unterstützt, sollte die Eigenschaft SelectionMode verwendet werden, um zu ermitteln, ob für Ihre App die Auswahl mehrerer Dateien zugelassen werden soll. Dies wird in Punkt 3 des folgenden Diagramms verdeutlicht.
  • Filterungsanzeige: Mit der Eigenschaft AllowedFileTypes können Sie die Anzeige filtern und nur die Dateitypen anzeigen, die vom Benutzer ausgewählt werden können.
  • Starten: Mit der Eigenschaft SettingsIdentifier können Sie die App an dem Speicherort starten, zu dem navigiert wurde, als die letzte Auswahl in der App erfolgte.
  • Authentifizierung: Gegebenenfalls kann dem Benutzer gestattet werden, sich an der App mit einer Methode anzumelden, die der der Haupt-App entspricht.
  • Organisation: Die Dateien können so organisiert und verwaltet werden, dass diese für das Durchsuchen von Inhalten optimiert werden. Verwenden Sie soweit möglich den semantischen Zoom und ressourcensparende Filter anstelle von anspruchsvolleren Möglichkeiten (z. B. Suche).

Übersicht über die Benutzeroberfläche der SkyDrive-App, wenn der Auswahlvertrag zum Öffnen von Dateien implementiert wird

Übersicht über die Benutzeroberfläche der SkyDrive-App, wenn der Auswahlvertrag zum Öffnen von Dateien implementiert wird

End-to-End-Verfahren

Hier finden Sie eine zusammenfassende Übersicht über das End-to-End-Dateiöffnungsauswahlverfahren. In diesem Diagramm wird die App, für die der Auswahlvertrag zum Öffnen von Dateien implementiert wird (z. B. SkyDrive) als „bereitstellende App“ bezeichnet.

End-to-End-Dateiöffnungsauswahlverfahren

Szenario 2: Auswahlvertrag zum Speichern von Dateien

Mit diesem Vertrag dient Ihre App als sicherer Speicherort für Windows 8-Apps. Wenn dieser Vertrag beispielsweise in SkyDrive implementiert wird, können Sie von allen anderen Windows 8-Apps Dateien in SkyDrive speichern. Auf diese Weise können Sie in der aktuell verwendeten App SkyDrive Dateien hinzufügen und zudem Dateien in SkyDrive platzieren, auf die von der SkyDrive-App selbst möglicherweise nicht zugegriffen werden kann (da SkyDrive z. B. nicht auf den Speicherort zugreifen kann, an dem eine bestimmte App Dateien speichert).

Wie bereits erwähnt muss bei der Entscheidung über das Implementieren des Auswahlvertrags zum Speichern von Dateien der Auswahlvertrag zum Öffnen von Dateien bereits implementiert sein, um sicherzustellen, dass von den selben Speicherorten ausgewählt werden kann, an denen auch gespeichert wird.

Nach dem Einbinden des Auswahlvertrags zum Speichern von Dateien in Ihre App kann diese im Modus „Speichern“ der Dateiauswahl gestartet und angezeigt werden. Im Dateiauswahlmenü wird immer dann ein Einstiegspunkt für Ihre App angezeigt, wenn ein von Ihrer App unterstützter Dateityp gespeichert wird: Wie beim Auswahlvertrag zum Öffnen von Dateien wird Ihre App beim Starten im Anzeigebereich der Dateiauswahl platziert:

Die in der Dateiauswahl für den Auswahlvertrag zum Speichern von Dateien gehostete SkyDrive-App

Die in der Dateiauswahl für den Auswahlvertrag zum Speichern von Dateien gehostete SkyDrive-App

Implementieren des Vertrags

Da der Auswahlvertrag zum Öffnen von Dateien bereits implementiert wurde, dürfte der Auswahlvertrag zum Speichern von Dateien recht vertraut wirken (beide haben denselben Schnellstart). Im ersten Schritt muss die App so eingerichtet werden, dass die für den Benutzer verfügbaren Speicherorte angezeigt werden. Sie sparen Zeit, wenn Sie die für den Auswahlvertrag zum Öffnen von Dateien erstellte Anzeige erneut verwenden. Zudem wird die Konsistenz mit den anderen App-Anzeigen gewährleistet. Dies lässt sich am einfachsten umsetzen, indem Sie die Dateiöffnungsauswahlansicht erneut verwenden und den Korbcode entfernen.

skydrive_documents

Die SkyDrive-App mit derselben Ansicht wie die Haupt-App für die Dateiöffnungsauswahl

Wenn der Benutzer die Datei speichert (Sie erhalten das Ereignis TargetFileRequested), müssen Dateiname und -erweiterung (mit der Eigenschaft FileName) geprüft werden, um sicherzustellen, dass diese für die App zulässig sind. Wenn dies nicht der Fall ist, kann dem Benutzer eine den Benutzeroberflächenrichtlinien entsprechende Fehlermeldung angezeigt werden. Wenn diese zulässig sind, erstellen Sie einen neuen StorageFile, und geben diesen an die Dateiauswahl zurück, die diese anschließend an die App übergibt, die die Inhalte schreibt (d. h. die App, die die Dateiauswahl aufgerufen hat). Mit dem folgenden Codeausschnitt wird das Konzept veranschaulicht:

JavaScript

 function onTargetFileRequested (e) {
   var request = e.request;
   var deferral = e.request.getDeferral();
   if (doesfileExist(saveUI.fileName)) {
      var dialog = new Windows.UI.Popups.MessageDialog("The location already has a file named " + saveUI.fileName + ".", "Replace the existing file?");
      dialog.commands.append(new Windows.UI.Popups.UICommand("Replace", function () {
         createFileAndFinishRequest(request, deferral)
      }));
      dialog.commands.append(new Windows.UI.Popups.UICommand("Cancel", function () {
         // Cancel save by setting targetFile to null
         request.targetFile = null;
         deferral.complete();
      }));
      dialog.showAsync().done();
   } else {
      createFileAndFinishRequest(request, deferral);
   }
}
function createFileAndFinishRequest(request, deferral) {
   _currentLocalFolder.createFileAsync(saveUI.fileName, Windows.Storage.CreationCollisionOption.replaceExisting).done
(function (newFile) {
      // Return the empty placeholder file so the calling app can add the file contents
      request.targetFile = newFile;
      deferral.complete();
   });
}

C#

 async void OnTargetFileRequested(FileSavePickerUI sender, TargetFileRequestedEventArgs args)
{
   var request = args.Request;
   var deferral = request.GetDeferral();
   if (DoesFileExist(_saveUI.FileName))
   {
      var dialog = new MessageDialog("The location already has a file named " + _saveUI.FileName + ".", "Replace 
 the existing file?");     dialog.Commands.Add(new UICommand("Replace", (command) =>
      {
         CreateFileAndFinishRequest(request, deferral);
      }));
      dialog.Commands.Add(new UICommand("Cancel", (command) =>
      {
         request.TargetFile = null;
         deferral.Complete();
      }));
      await dialog.ShowAsync();
   }
   else
   {
      CreateFileAndFinishRequest(request, deferral);
   }
}
async void CreateFileAndFinishRequest(TargetFileRequest request, TargetFileRequestDeferral deferral)
{
   request.TargetFile = await _currentFolder.CreateFileAsync(_fileSavePickerUI.FileName, CreationCollisionOption.
ReplaceExisting);   deferral.Complete();
}

Erstellen einer Benutzeroberfläche für das Speichern

Ein wichtiger Bestandteil des Abonnements eines Auswahlvertrags zum Speichern von Dateien ist (wie beim Auswahlvertrag zum Öffnen von Dateien) das Bereitstellen einer Benutzeroberfläche für die Auswahl, die maßgeschneidert, auf die Auswahl konzentriert und am Design und Erscheinungsbild Ihrer Haupt-App ausgerichtet ist. Im Folgenden finden Sie einige schnelle Wege zum Abgleichen der Implementierungen des Auswahlvertrags zum Speichern von Dateien mit den Richtlinien:

  • Filteransicht: Wenn der Dateityp in der Dateitypenliste der Dateiauswahl geändert wird (Sie erhalten ein Ereignis FileNameChanged), aktualisieren Sie Ihre Ansicht, sodass nur dem ausgewählten Dateityp entsprechende Dateien angezeigt werden. Dies wird in Punkt 1 des folgenden Diagramms verdeutlicht.
  • Fehlerbehandlung: Stellen Sie sicher, dass der zu speichernde Dateiname, der Dateityp und Speicherort zulässig sind. Zeigen Sie andernfalls einen Fehler an, damit der Benutzer das Problem beheben kann. Die Fehler sollten im selben Stil und mit dem Erscheinungsbild der Haupt-App angezeigt werden (die bereits den Fehlerrichtlinien entsprechen sollte). Dies wird in Punkt 2 des folgenden Diagramms verdeutlicht.
  • Dateiname: Beim Auswählen einer Datei auf der Seite „Speichern“ sollte der Dateiname automatisch vorgegeben werden (über die Methode TrySetFileName). Dies wird in Punkt 3 des folgenden Diagramms verdeutlicht.

Übersicht über die Benutzeroberfläche der SkyDrive-App, wenn der Auswahlvertrag zum Speichern von Dateien implementiert wird

Übersicht über die Benutzeroberfläche der SkyDrive-App, wenn der Auswahlvertrag zum Speichern von Dateien implementiert wird

End-to-End-Verfahren

Hier finden Sie eine zusammenfassende Übersicht über das End-to-End-Dateispeicherungsauswahlverfahren. In diesem Diagramm wird (wie im Diagramm für die Dateiöffnungsauswahl) die App, für die der Dateiauswahl-Vertrag implementiert wird (z. B. SkyDrive) als „bereitstellende App“ bezeichnet.

Übersicht über das End-to-End-Dateispeicherungsauswahlverfahren

Szenario 3: Vertrag für die „Aktualisierung zwischengespeicherter Dateien“

Mit dem Vertrag für die Aktualisierung zwischengespeicherter Dateien kann Ihre App die verwalteten Dateien aktuell halten, wenn diese von anderen Windows 8-Apps aktualisiert werden. Was bedeutet dies? Betrachten wir einmal mehr die SkyDrive-App. Wenn für SkyDrive der Vertrag für die Aktualisierung zwischengespeicherter Dateien implementiert wird, wird sichergestellt, dass verwendete Dateien (die in SkyDrive vorhanden sind) aktuell gehalten werden, und dass alle vorgenommenen Änderungen zu SkyDrive hochgeladen werden. So kann ich beispielsweise mit meiner bevorzugten Fotobearbeitungs-App den Rote-Augen-Effekt eines in SkyDrive gespeicherten Bilds entfernen. Ich öffne in der Fotobearbeitungs-App die Dateiauswahl und wähle ein Foto von der SkyDrive-App aus. Ich entferne den Rote-Augen-Effekt, und die Änderungen werden in der Fotobearbeitungs-App gespeichert. Mithilfe des Vertrags für die Aktualisierung zwischengespeicherter Dateien werden diese Änderungen automatisch an SkyDrive zurückgesendet. Auch alle weiteren an der Datei vorgenommen Aktualisierungen werden für die Lebenszeit der Datei an SkyDrive gesendet. Ich muss meine Änderungen nicht mehr manuell in SkyDrive exportieren oder hochladen. Mit dem Vertrag für die Aktualisierung zwischengespeicherter Dateien entsprechen Dateien in SkyDrive den Dateien auf meinem lokalen PC, bei denen ich stets über die aktuelle Version verfüge, und die ich jederzeit aktualisieren kann.

Dieser Vertrag eignet sich insbesondere für Apps, die als primärer Speicherort dienen, an dem regelmäßig Dateien gespeichert werden, auf die häufig zugegriffen wird. Für die meisten Apps ist der Vertrag für die Aktualisierung zwischengespeicherter Dateien nicht erforderlich. Dieser Vertrag erfordert für eine sinnvolle Implementierung einen erheblichen Zustandsverwaltungsaufwand, den Umgang mit komplexem Datenverkehr, Konfliktlösungen und Arbeiten an der Benutzeroberfläche. Wenn man die Verträge kategorisieren wollte, so wäre dieser „anspruchsvoll“.

Nach dem Einbinden des Vertrags wird Ihre App immer dann aktiviert (nicht jedoch immer angezeigt), wenn eine verwaltete Datei aktualisiert werden muss. Die App kann zu diesem Zweck jederzeit aktiviert werden. Die Aktivierung wird jedoch vom System und nicht direkt vom Benutzer ausgelöst. Wenn der Benutzer beispielsweise Daten in einer Datei speichert, die von Ihrer App verwaltet wird, aktiviert das System die App, damit diese entsprechend behandelt werden kann (z. B. Hochladen der Änderungen in Ihren Cloud-Service).

Implementieren des Vertrags

Sie können die Implementierung des Vertrags für die Aktualisierung zwischengespeicherter Dateien mithilfe des Schnellstarts beginnen. Nach der Implementierung des Vertrags wird die App automatisch aktiviert, um Änderungen an den verwalteten Dateien zu behandeln.

Sie müssen dem System angeben, welche StorageFiles Sie verwenden. Mit der Methode setUpdateInformation können Sie Lese-/Schreibberechtigungen einrichten und steuern, wie und wann die App zum Verwalten der Datei aktiviert wird. In der Regel sollten diese Informationen für alle Dateien eingerichtet werden, die mit dem Auswahlvertrag zum Öffnen von Dateien ausgewählt oder mit dem Auswahlvertrag zum Speichern von Dateien in der App gespeichert werden. Den C#-, C++- und JavaScript-Code für die Unterstützung des Vertrags für die Aktualisierung zwischengespeicherter Dateien finden Sie im File Picker Contracts SDK-Beispiel.

Wenn der Vertrag für die Aktualisierung zwischengespeicherter Dateien implementiert wird, müssen die Benutzer möglicherweise aufgefordert werden, Anmeldeinformationen anzugeben oder einen Versionskonflikt zu beheben, bevor Sie die Datei verarbeiten können. In solchen Fällen muss dem System bekannt sein, dass eine Benutzeroberfläche erforderlich ist, und dass die App in der Dateiauswahl gestartet wird.

skydrive_creds

Die SkyDrive-App fordert bei der Aktualisierung zwischengespeicherter Dateien zur Eingabe von Anmeldeinformationen auf

Zusätzlich zu den über Ihre App eingerichteten Optionen kann auch die App, die das Aktualisieren oder Speichern der Datei anfordert, einen Teil des Ablaufs für den Vertrag für die Aktualisierung zwischengespeicherter Dateien steuern. So kann in einigen Fällen insbesondere die aufrufende App Ihre App daran hindern, eine Benutzeroberfläche anzuzeigen. Dieser Aufruf kann von Ihrer App nicht behandelt werden, er schlägt einfach fehl, wenn die aufrufende App eine Datei aktualisieren oder speichern möchte, und Ihre App zum Durchführen der Anforderung eine Benutzeroberfläche anzeigen muss.

Im gesamten Verfahren können Sie die Nummerierung UIStatus verwenden, um stets zu wissen, welcher Schritt verarbeitet wird.

Erstellen einer Benutzeroberfläche für das Aktualisieren und Speichern

Obwohl der Vertrag für die Aktualisierung zwischengespeicherter Dateien nur eine begrenzte Benutzeroberfläche erfordert, muss sichergestellt werden, dass die App den Richtlinien entspricht:

  • Anzeigen der Benutzeroberfläche: Die Benutzeroberfläche sollte nur angefordert werden, wenn ein Benutzereingriff (Anmeldeinformationen, Dateikonflikte usw.) unumgänglich ist. Fehlgeschlagene Anforderungen müssen an die aufrufende App zurückgegeben werden, damit der Benutzer erfährt, dass das Aktualisieren oder Speichern nicht erfolgreich war. Zudem sollten Infomeldungen (z. B. „Datei wurde erfolgreich gespeichert“) nur beim nächsten Start der Haupt-App angezeigt werden (sofern erforderlich), nicht jedoch in der Benutzeroberfläche der Dateiauswahl oder anderen Benutzeroberflächen (z. B. Popups).
  • Status: Wenn die App eine große Zahl von Aktualisierungs- und Speichervorgängen verarbeitet, sollte möglicherweise der Fortschritt der einzelnen Aufgaben in der Benutzeroberfläche der Haupt-App angezeigt werden. Auf diese Weise können Benutzer den Fortschritt nachverfolgen und Probleme beheben.

End-to-End-Verfahren

Hier finden Sie eine zusammenfassende Übersicht über das Verfahren für die Aktualisierung zwischengespeicherter Dateien. In diesem Diagramm wird (wie in den vorherigen) die App, für die der Vertrag für „Dateiauswahl“ implementiert wird (z. B. SkyDrive) als „bereitstellende App“ bezeichnet.

End-to-End Aktualisierung zwischengespeicherter Dateien

Zusammenfassung

In diesem Beitrag wurden die „Dateiauswahl“-Verträge vorgestellt und gezeigt, wie Sie mit diesen neue Möglichkeiten unter Windows 8 eröffnen können. Der Auswahlvertrag zum Öffnen von Dateien ist ein hervorragender Ausgangspunkt, von dem aus die Benutzer die in Ihrer App gespeicherten, erstellten und verwalteten Dateien in anderen Windows 8-Apps verwenden können. Da Ihre App weitere anspruchsvolle Funktionen bietet, ermöglichen der Auswahlvertrag zum Speichern von Dateien und der Vertrag für die Aktualisierung zwischengespeicherter Dateien eine Sequenz, mit der Sie Ihre App in weitere Windows 8-Szenarien einbinden können.

Im Folgenden finden Sie einige der wichtigsten Aspekte:

  • Bei den „Dateiauswahl“-Verträgen handelt es sich um eine Sequenz. Beginnen Sie mit dem Auswahlvertrag zum Öffnen von Dateien, und fahren Sie dann gegebenenfalls mit dem Auswahlvertrag zum Speichern von Dateien und dem Vertrag für die Aktualisierung zwischengespeicherter Dateien fort.
  • Lassen Sie den Charakter Ihrer App durchscheinen! Die Benutzer sind vertraut mit der normalen Version Ihrer App. Stellen Sie daher sicher, dass Sie deren Charakter, Erscheinungsbild und Navigationsmöglichkeiten für die in der Dateiauswahl gehostete Version beibehalten.
  • Befolgen Sie die Benutzeroberflächenrichtlinien, damit die App ihren Charakter erhalten und gleichzeitig die Möglichkeiten der Dateiauswahl nutzen kann. Auf diese Weise verfügen Benutzer über eine konsistente und erstklassige Möglichkeit, Ihre App in der Dateiauswahl zu verwenden.

Weitere Informationen zu den „Dateiauswahl“-Verträgen unter Windows 8 finden Sie unter den folgenden Links. Sie können Ihre Fragen auch in unseren Foren stellen.

Link

Typ

Highlights

Richtlinien und Prüfliste für Verträge für „Dateiauswahl“

Benutzeroberflächenrichtlinien

Richtlinien für das Implementieren der „Dateiauswahl“-Verträge

Schnellstart: Integration mit Verträgen für die Dateiauswahl

Schnellstart

Erläutert, wie die „Dateiauswahl“-Verträge in Ihre App eingebunden werden

Windows.Storage.Pickers.Provider

API-Referenz

Referenzdokumentation für die Auswahlverträge zum Öffnen und zum Speichern von Dateien

Windows.Storage.Provider-Namespace

API-Referenz

Referenzdokumentation für den Vertrag für die Aktualisierung zwischengespeicherter Dateien

„Dateiauswahl“-Verträge

Codebeispiel

Verdeutlicht die Verwendung der Auswahlverträge zum Öffnen und Speichern von Dateien und dem Vertrag für die Aktualisierung zwischengespeicherter Dateien

Vielen Dank!

--Scott Hoogerwerf, Senior Program Manager, Windows User Experience

Unter Mitarbeit von: Derek Gebhard