快速入門:分享內容 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

成功的應用程式可以讓使用者輕鬆地和朋友及家人分享他們的近況。能夠讓使用者輕鬆分享內容的應用程式通常都能大獲好評,同時帶動使用者更常使用這個應用程式。

若要了解如何使用這些 API,請繼續讀下去。如果您更想了解應用程式如何接收分享的內容,請參閱快速入門:接收分享的內容

目標: 讀完這個快速入門之後,您應該能夠清楚了解如何分享內容。

先決條件

  • 您應該熟悉 Visual Studio 及其範本。
  • 您應該熟悉使用 HTML 和 JavaScript 進行開發。

指示

選擇資料格式

任何分享作業的核心都是 DataPackage 物件。這個物件包含使用者想分享的資料。DataPackage 可包含的內容類型包括:

  • 純文字
  • 統一資源識別元 (URI)
  • HTML
  • 格式化文字
  • 點陣圖
  • 檔案
  • 開發人員定義的資料

DataPackage 物件可以包含其中的一或多種格式,任何組合皆可。此外,DataPackage 可以包含委派,這是接收應用程式要求資料時所呼叫的函式。當使用者要分享的資料涉及敏感資源時,建議您使用委派,因為委派可更有效的協助應用程式分享資料。

選擇屬性

當您封裝資料進行分享時,可以選擇提供各種屬性,為目前分享的內容提供更多資訊。利用這些屬性可協助目標應用程式提升使用者經驗。例如,當使用者分享多個應用程式內容時,為使用者分享的內容提供標題和相關說明,可以為使用者帶來不少的方便。分享影像或網頁連結時,如果加上縮圖,就可以提供使用者視覺上的參考。如需您可以使用之屬性的詳細資訊,請參閱 DataPackage.DataPackagePropertySet 上的文件。

設定您的分享來源

若要將您的應用程式設定為分享來源應用程式,首先必須取得已指派給目前視窗的 DataTransferManager 類別執行個體。

var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();

這個類別支援 DataRequested 事件,當使用者想要叫用分享時就會引發這個事件。在 Windows 市集應用程式中,當使用者叫用 [分享] 常用鍵時,就會自動引發這個事件。如果您開發的是 Windows Phone 應用程式,則沒有內建的分享常用鍵,所以您需要新增控制項,讓使用者可以輕觸並觸發處理常式。

dataTransferManager.addEventListener("datarequested", function (e) {
    // Code to handle event goes here.
});

上述範例會登錄一個事件處理常式,每次觸發 datarequested 事件時就會呼叫這個事件處理常式。這個處理常式會收到 DataRequest 物件,應用程式使用這個物件設定使用者要從分享來源應用程式分享的資料。

您分享的任何內容都必須包含兩個屬性:標題和內容本身。 除此之外,為了讓使用者更清楚了解內容,我們也建議您包含描述屬性。

下列程式碼是根據前面的範例所建置,它示範如何與目標應用程式分享純文字。

function registerForShare() {
    var dataTransferManager = Windows.ApplicationModel.DataTransfer.DataTransferManager.getForCurrentView();
    dataTransferManager.addEventListener("datarequested", shareTextHandler);
}

function shareTextHandler(e) {
    var request = e.request;
    request.data.properties.title = "Share Text Example";
    request.data.properties.description = "Demonstrates how to share text.";
    request.data.setText("Hello World!");
}

分享與委派

有時候,使用者叫用分享時並不適合立即準備資料。例如,如果您的應用程式支援數種不同的資料格式,立即建立這些格式是沒有效率的做法。比較好的做法是等到目標應用程式指定所需的格式後,再開始產生要求的資料。若要達到這個目標,您要設定 DataPackage 物件,在要求時透過委派呼叫只填入所需的資料。

request.data.setDataProvider(Windows.ApplicationModel.DataTransfer.StandardDataFormats.bitmap, onDeferredImageRequested);

如需這種分享類型的詳細資訊,請參閱如何分享檔案

透過程式設計方式叫用分享窗格

設定要分享的內容後,就已經準備就緒了。使用者要做的只是選取要接收內容的應用程式。在不適合使用常用鍵的一些情況下 (例如分享電腦遊戲的高分),您也可以用程式設計方式啟動分享常用鍵。

注意  

Windows Phone 8.1 上並沒有 Charms bar,因此您必須以程式設計方式包含分享選項。它可以是應用程式列的一部分,隨時可供存取,也可以是與特定頁面上的特定控制項關聯。

function showShareUI() {
    Windows.ApplicationModel.DataTransfer.DataTransferManager.showShareUI();
}

處理錯誤以及其他問題

在大部分情況下,提供內容的過程其實不複雜。不過,你的應用程式在某些情況可能無法分享。為了協助您處理這些狀況,Windows 8.1 上的 DataRequest 物件支援 FailWithDisplayText 方法。如果使用者無法從特定檢視進行分享或需要執行其他步驟才能分享時,請使用這個方法對使用者顯示一個文字訊息。例如,應用程式要求使用者選取要分享的內容,但使用者沒有選取任何內容。

摘要與後續步驟

您現在應該很清楚如何分享內容了。

如果要深入了解如何將分享新增到應用程式,或需要更多相關特定範例,請參考:

相關主題

選擇要分享的資料格式

分享內容的指導方針和檢查清單

快速入門:接收分享的內容