Scelta dei formati di dati per la condivisione (HTML)

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Sia che tu stia scrivendo un'app di origine, per consentire agli utenti di condividere contenuti, o un'app di destinazione, che riceve i contenuti, devi dedicare un po' di tempo alla scelta dei formati di dati e dei tipi di file che vuoi supportare. In questa pagina descriveremo i formati standard supportati dallo spazio dei nomi Windows.ApplicationModel.DataTransfer e scopriremo insieme come creare e usare formati personalizzati quando quelli standard non sono adatti.

Scelta dei formati di dati per un'app di origine

Se intendi scrivere un'app di origine, non devi limitarti a un unico formato di dati o tipo di file. Anche se probabilmente un formato è più adatto di altri, fornendo gli stessi dati in altri formati puoi consentire agli utenti di condividere i dati tramite l'app di destinazione preferita. Ad esempio, se un utente vuole condividere testo formattato, quale quello di una pagina Web, puoi includere anche l'opzione per salvare una versione dei contenuti in formato testo normale perché non tutte le app di destinazione supportano testo formattato.

Nota  Il numero di formati aggiuntivi supportati dipende dal tipo di contenuto che gli utenti potrebbero voler condividere. È importante considerare il tipo di contenuto e le aspettative dell'utente in relazione alla condivisione. Creare una versione del testo formattato in formato testo normale può rivelarsi utile, mentre creare un link a una pagina Web contenente il testo probabilmente non corrisponde alle aspettative dell'utente.

 

Scenario di esempio: l'utente vuole condividere un articolo che sta leggendo nella tua app. Se il contenuto è disponibile sul Web, innanzitutto aggiungi un link all'articolo. Oltre al testo, dovresti includere anche un breve sunto dell'articolo con un link che rimandi all'origine in formato HTML.

Scenario di esempio: l'utente vuole condividere una selezione dall'articolo che sta leggendo nella tua app. In questo caso il formato HTML è quello che riflette maggiormente le esigenze dell'utente. Dovresti includere anche una versione testuale della selezione dell'utente. Il metodo consigliato per conseguire questo obiettivo è MSApp.createDataPackageFromSelection.

Usa questa tabella per scegliere quali formati supportare nell'app di origine.

Tipo di dati principale supportato dall'app Formato di DataPackage principale consigliato Altri consigli
Testo normale non formattato Testo WebLink, se il testo è un link a una pagina Web.
Link WebLink Testo
Contenuto formattato/HTML HTML

Testo, se il contenuto include solo testo.

WebLink, se il contenuto è un link.

File StorageItems
Immagine singola StorageItems
Più file e immagini StorageItems

 

I formati personalizzati sono supportati anche nel caso in cui tu voglia essere più specifico di quanto consentito con i formati standard. Questi formati personalizzati possono essere basati su schemi di dati standard, ad esempio quelli disponibili all'indirizzo http://www.schema.org, oppure su un formato appositamente definito per l'app.

Scelta dei formati dati per un'app di destinazione

Per un app di destinazione ti consigliamo di supportare il maggior numero di tipi di formati possibili. In questo modo la tua app sarà sicuramente inclusa tra le opzioni disponibili per gli utenti che desiderano condividere dati. Tuttavia, come per le app di origine, ti sconsigliamo di supportare un determinato formato se non prevedi di ricevere quel tipo di dati. Ad esempio, nel caso di un'app che accetta solo testo non ha senso registrare un formato che supporta le bitmap.

Ecco alcuni consigli sui formati da supportare.

Tipo di dati principale supportato dall'app Formato di DataPackage principale consigliato Altri consigli
Testo normale non formattato Testo
Link WebLink Testo
Contenuto formattato/HTML HTML

Testo

WebLink

File StorageItems
Immagine singola StorageItems
Più file e immagini StorageItems
Tipi di file specifici (ad esempio docx) StorageItems con estensioni file specifiche

 

Se la tua app supporta più formati, tutti presenti nei contenuti da condividere, ti consigliamo di elaborare solo il formato più importante per l'app. Ad esempio, un'app che condivide link e riceve contenuti condivisi che includono sia link deve elaborare solo il link.

In alcuni casi ricevere dati che includono più informazioni di quelle fornite dai formati standard può risultare un vantaggio per l'app. Un'app per biblioteche può ad esempio ricevere testo, ma solo se include informazioni su un libro. I formati personalizzati sono supportati in tali situazioni. Questi formati personalizzati possono essere basati su schemi di dati standard, ad esempio quelli disponibili all'indirizzo http://www.schema.org, oppure su un formato appositamente definito per l'app.

Uso di formati basati su schemi

In moltissimi casi i dati da condividere, sotto forma di app di origine o di destinazione, sono più specifici di quelli previsti dai formati standard. Ad esempio, un'app per il cinema deve condividere informazioni sui film e includere dettagli quali il titolo, la valutazione, il regista e così via. Un'app per librerie deve invece condividere informazioni sui libri e includere dettagli quali autore, titolo e data di pubblicazione. Se la tua app rientra in una categoria simile, ti consigliamo di supportare uno dei numerosi schemi disponibili all'indirizzo http://www.schema.org.

Se vuoi condividere dati usando uno di questi schemi, ecco come fare:

  1. Identifica l'elemento (libro, film e così via) che l'utente vuole condividere.
  2. Raccogli le informazioni correlate all'elemento e comprimile in formato JSON (JavaScript Object Notation).
  3. Usa setData per aggiungere il contenuto a un oggetto DataPackage. Quando lo fai, ricorda di includere un ID formato. Per il momento usa l'ID http://schema.org/<schema>, Ad esempio, http://schema.org/Book.

Questo esempio illustra come condividere dati in un formato personalizzato.

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);
    });
}

Nota che in DataPackage abbiamo inserito un solo formato dati. In tal modo tutte le app di destinazione selezionate dall'utente sapranno cosa aspettarsi.

Se vuoi ricevere dati che usano uno di questi schemi, ecco come fare:

  1. Modifica il manifesto del pacchetto dichiarando che la tua app è una destinazione di condivisione. Per sapere come fare, vedi la Guida introduttiva.
  2. Nel manifesto del pacchetto aggiungi un formato dati che identifichi lo schema supportato dall'app. Usa http://schema.org/<schema> come formato dati. Ad esempio, http://schema.org/Book.
  3. Usa getDataAsync per recuperare i contenuti dall'oggetto DataPackageView ricevuto durante un'operazione di condivisione.

Questo esempio illustra come ricevere dati condivisi in un formato personalizzato.

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;
                }
            }
        }
    });
}

Uso di formati personalizzati

Se in http://schema.org/docs/full.htm non riesci a trovare uno schema rispondente alle esigenze della tua app, puoi anche scegliere di creare un formato personalizzato. In tal caso tieni presente alcuni aspetti fondamentali:

  • Il nome del formato personalizzato è importante. Devi usare lo stesso nome sia per l'app di origine che per quella di destinazione.
  • Devi pubblicare il formato. In tal modo gli sviluppatori che vogliono usarlo sapranno come comprimere i contenuti.

Queste ed altre considerazioni verranno illustrate in dettaglio in Linee guida per la creazione di formati dati personalizzati.

Argomenti correlati

Esempio di condivisione di contenuto da un'altra app

Esempio di condivisione di contenuto con un'altra app

Guida introduttiva: Condivisione di contenuto

Guida introduttiva: Ricezione di contenuto condiviso