Auswählen von Datenformaten für die Freigabe (HTML)
[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]
Ganz egal, ob Sie eine Quell-App schreiben, die Benutzer beim Freigeben von Inhalten unterstützt, oder ob Sie eine Ziel-App schreiben, die diese Inhalte empfängt: Sie sollten sich die Zeit nehmen, darüber nachzudenken, welche Datenformate und Dateitypen unterstützt werden sollen. Hier werden die vom Windows.ApplicationModel.DataTransfer-Namespace unterstützten Standardformate beschrieben. Zudem wird erläutert, wie Sie benutzerdefinierte Formate erstellen und verwenden, wenn die Standardformate nicht angewendet werden können.
Auswählen der Datenformate für eine Quell-App
Wenn Sie eine Quell-App schreiben, sind Sie nicht auf ein Datenformat oder einen Dateityp beschränkt. Während es wahrscheinlich ist, dass ein Format sinnvoller als die anderen ist, können Sie durch das Bereitstellen der gleichen Daten in anderen Formaten sicherstellen, dass Benutzer Daten mithilfe der Ziel-App ihrer Wahl freigeben können. Wenn ein Benutzer beispielsweise formatierten Text freigeben möchte, zum Beispiel von einer Webseite, können Sie auch eine Nur-Text-Version des Inhalts bereitstellen, da nicht jede Ziel-App formatierten Text unterstützt.
Hinweis Die Anzahl der zusätzlichen Formate, die Sie unterstützen, hängt vom Typ des Inhalts ab, den Ihre Benutzer freigeben. Sie sollten auf jeden Fall berücksichtigen, woraus der Inhalt besteht und was der Benutzer durch die Freigabe erwartet. Häufig macht es beispielsweise Sinn, eine Nur-Text-Version des formatierten Textes zu erstellen. Das Erstellen eines Links zu einer Webseite, die diesen Text enthält, wird vom Benutzer allerdings wahrscheinlich nicht erwartet.
Beispielszenario: Ein Benutzer möchten einen Artikel teilen, den er in Ihrer App liest. Wenn der Inhalt auch im Web verfügbar ist, sollten Sie zunächst einen Link auf den Artikel einschließen. Außerdem sollten Sie eine Zusammenfassung des Artikels mit einem Link zur Quelle im HTML-Format sowie eine Textversion einschließen.
Beispielszenario: Ein Benutzer möchten einen Ausschnitt aus einem Artikel teilen, den er in Ihrer App liest. In diesem Fall ist das HTML-Format am besten für das Vorhaben des Benutzers geeignet. Ergänzend sollten Sie auch eine Textversion für die Auswahl des Benutzers einschließen. Verwenden Sie dazu am besten MSApp.createDataPackageFromSelection.
Anhand dieser Tabelle können Sie entscheiden, welche Formate für eine Quell-App unterstützt werden sollen.
Von der App unterstützter Primärdatentyp | Empfohlenes primäres DataPackage-Format | Weitere Empfehlungen |
---|---|---|
Unformatierter Nur-Text | Text | WebLink, wenn es sich bei dem Text um einen Link zu einer Webseite handelt. |
Link | WebLink | Text |
Formatierter Inhalt/HTML | HTML | Text, wenn der Inhalt lediglich Text umfasst. WebLink, wenn es sich bei dem Inhalt um einen Link handelt. |
Datei | StorageItems | |
Einzelnes Bild | StorageItems | |
Mehrere Dateien und Bilder | StorageItems |
Benutzerdefinierte Formate werden auch in Situationen unterstützt, in denen die Standardformate ein spezifischeres Vorgehen nicht zulassen. Diese benutzerdefinierten Formate können auf Standarddatenschemas basieren (z. B. auf den unter http://www.schema.org erhältlichen), oder es kann es sich um ein von Ihnen definiertes Format handeln, das spezifisch für Ihre App ist.
Auswählen der Datenformate für eine Ziel-App
Für eine Ziel-App empfiehlt es sich, so viele verschiedene Formattypen wie möglich zu unterstützen. Damit können Sie dazu beitragen, dass Ihre App immer dann zum Einsatz kommt, wenn Benutzer ihre Daten mit anderen Personen teilen möchten. Wie bei Quell-Apps sollten Sie ein bestimmtes Format jedoch nicht unterstützen, wenn die Verwendung dieses Datentyps nicht geplant ist. So sollte beispielsweise eine App, die lediglich Textbeiträge akzeptiert, nicht auf die Unterstützung von Bitmaps ausgelegt sein.
Im Folgenden finden Sie einige Empfehlungen, welche Formate unterstützt werden sollten.
Von der App unterstützter Primärdatentyp | Empfohlenes primäres DataPackage-Format | Weitere Empfehlungen |
---|---|---|
Unformatierter Nur-Text | Text | |
Link | WebLink | Text |
Formatierter Inhalt/HTML | HTML | |
Datei | StorageItems | |
Einzelnes Bild | StorageItems | |
Mehrere Dateien und Bilder | StorageItems | |
Spezifische Dateitypen (beispielsweise .docx) | StorageItems mit spezifischen Dateinamenerweiterungen |
Wenn die App verschiedene Formate unterstützt und alle diese Formate in den freigegebenen Inhalten vorhanden sind, empfiehlt es sich, dass Sie lediglich das Format verarbeiten, das die größte Relevanz für Ihre App aufweist. Wenn Ihre App beispielsweise Links freigibt und freigegebene Inhalte empfängt, die sowohl einen Link als auch Text enthalten, sollte die App ausschließlich den Link verarbeiten.
Gelegentlich kann es sich für die App als günstig erweisen, Daten zu empfangen, die mehr Informationen enthalten, als mit den Standardformaten bereitgestellt werden können. In einer Bibliotheks-App soll beispielsweise Text empfangen werden, jedoch nur dann, wenn der Text Angaben zu einem Buch enthält. In solchen Situationen werden benutzerdefinierte Formate unterstützt. Diese benutzerdefinierten Formate können auf Standarddatenschemas basieren (z. B. auf den unter http://www.schema.org erhältlichen), oder es kann es sich um ein von Ihnen definiertes Format handeln, das spezifisch für Ihre App ist.
Verwenden von schemabasierten Formaten
Sehr häufig sind die Daten, die Sie freigeben möchten (entweder als Quell-App oder als Ziel-App) spezifischer, als es die Standardformate zulassen. In einer App mit Kinoschwerpunkt sollen beispielsweise Informationen über Filme gemeinsam genutzt werden, und gewünscht werden Details wie Titel, Altersfreigabe, Regisseur usw. In einer App mit Literaturschwerpunkt hingegen werden Informationen über Bücher geteilt, u. a. Autor, Titel und Erscheinungsdatum. Sollte Ihre App einer solchen Kategorie zuzurechnen sein, empfiehlt es sich, eines der vielen Schemas zu unterstützen, die auf der Website http://www.schema.org aufgelistet sind.
Wenn Sie Daten mithilfe eines dieser Schemas freigeben möchten, gehen Sie folgendermaßen vor:
- Identifizieren Sie das Element (Buch, Film etc.), das der Benutzer freigeben möchte.
- Sammeln Sie die Informationen zum Element, und packen Sie sie im Format JSON (JavaScript Object Notation).
- Verwenden Sie setData zum Hinzufügen von Inhalt zu einem DataPackage. Dabei müssen sie eine Format-ID einschließen. Verwenden Sie für den Augenblick
http://schema.org/<schema>
als ID. Beispiel:http://schema.org/Book
.
In diesem Beispiel ist dargestellt, wie Sie Daten in einem benutzerdefinierten Format freigeben.
var book = {
"type" : "http://schema.org/Book",
"properties" :
{
"image" : "http://sourceurl.com/catcher-in-the-rye-book-cover.jpg",
"name" : "The Catcher in the Rye",
"bookFormat" : "http://schema.org/Paperback",
"author" : "http://sourceurl.com/author/jd_salinger.html",
"numberOfPages" : 224,
"publisher" : "Little, Brown, and Company",
"datePublished" : "1991-05-01",
"inLanguage" : "English",
"isbn" : "0316769487"
}
};
book = JSON.stringify(book);
function shareCustomData() {
var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
dataTransferManager.addEventListener("datarequested", function (e) {
var request = e.request;
request.data.setData("http://schema.org/Book", book);
});
}
Beachten Sie, dass wir nur ein einziges Datenformat in DataPackage eingefügt haben. Auf diese Weise ist Ziel-Apps, die der Benutzer auswählt, bekannt, was zu erwarten ist.
Wenn Sie Daten empfangen möchten, die eines dieser Schemas verwenden, führen Sie die folgenden Schritte aus:
- Bearbeiten Sie Ihr Paketmanifest so, dass Ihre App als Freigabeziel deklariert wird. Im Schnellstart erfahren Sie, wie Sie dabei vorgehen müssen.
- Fügen Sie in Ihrem Paketmanifest ein Datenformat hinzu, das das von Ihrer App unterstützte Schema identifiziert. Verwenden Sie
http://schema.org/<schema>
als Datenformat. Beispiel:http://schema.org/Book
. - Verwenden Sie getDataAsync, um den Inhalt aus dem DataPackageView-Objekt abzurufen, das Sie während eines Freigabevorgangs erhalten.
In diesem Beispiel ist dargestellt, wie Sie in einem benutzerdefinierten Format freigegebene Daten erhalten.
if (shareOperation.data.contains("http://schema.org/Book")) {
shareOperation.data.getTextAsync(("http://schema.org/Book").done(function (customFormatString) {
var customFormatObject = JSON.parse(customFormatString);
if (customFormatObject) {
// This sample expects the custom format to be of type http://schema.org/Book
if (customFormatObject.type === "http://schema.org/Book") {
customFormatString = "Type: " + customFormatObject.type;
if (customFormatObject.properties) {
customFormatString += "\nImage: "
+ customFormatObject.properties.image
+ "\nName: " + customFormatObject.properties.name
+ "\nBook Format: " + customFormatObject.properties.bookFormat
+ "\nAuthor: " + customFormatObject.properties.author
+ "\nNumber of Pages: " + customFormatObject.properties.numberOfPages
+ "\nPublisher: " + customFormatObject.properties.publisher
+ "\nDate Published: " + customFormatObject.properties.datePublished
+ "\nIn Language: " + customFormatObject.properties.inLanguage
+ "\nISBN: " + customFormatObject.properties.isbn;
}
}
}
});
}
Verwenden benutzerdefinierter Formate
Wenn Sie auf http://schema.org/docs/full.htm kein Schema finden können, das den Anforderungen Ihrer App entspricht, können Sie auch Ihr eigenes benutzerdefiniertes Format erstellen. Wenn Sie sich dazu entscheiden, sollten Sie ein paar wichtige Dinge beachten:
- Der Name des benutzerdefinierten Formats ist wichtig. Der gleiche Name muss von der Quell-App und der Ziel-App verwendet werden.
- Sie müssen das Format veröffentlichen. Auf diese Weise wissen Entwickler, die das Format verwenden möchten, wie sie den Inhalt verpacken müssen.
Diese und andere Überlegungen werden unter Richtlinien zum Erstellen benutzerdefinierter Datenformate ausführlicher beschrieben.
Verwandte Themen
Beispiel zur Inhaltsfreigabe Quell-App
Beispiel zur Inhaltsfreigabe Ziel-App