如何创建 QuickLink (HTML)

[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]

用户希望其与朋友和家人共享内容的能力成为其计算机体验的一种延伸。采用此概念的应用创建了一个环境,该环境使用户能够快速、轻松地共享内容。通过支持共享目标协定,你可以通过使用一种称为 QuickLink 的自定义快捷方式使共享体验甚至更为轻松。QuickLink 充当指向你的应用的链接,该链接是为一组特定用户操作自定义的。

当用户共享内容时,他们通常需要对如何共享其内容以及与谁共享内容做出选择。这种情况的一个常见示例是通过电子邮件共享。如果某个用户希望通过电子邮件共享某些内容,那么他必须提供他希望与其共享内容的人们的电子邮件地址。即使用户第一次可能不介意提供这些电子邮件地址,但在后续共享会话中再次手动添加它们会变得很单调乏味。电子邮件应用的一个更好的体验是创建一个 QuickLink,以在下次应用用户上次所做出的选择。

QuickLink 并不实际存储任何数据,而是包含一个标识符,如果选中该标识符,则会将该标识符发送至你的应用。要使 QuickLink 能够正常工作,你的应用需要将数据与其关联 ID 一起存储在某个位置 — 如在云中或用户的计算机上。完成此操作可以有多种方式 — 有关其中一种存储数据的方式,请参阅管理应用程序数据

若要了解有关支持共享目标协定的详细信息,请参阅快速入门:接收共享内容。该主题介绍当用户选择你的应用来共享内容时,你的应用需要遵循的基本步骤。

你需要了解的内容

技术

先决条件

  • 你应当熟悉 Microsoft Visual Studio 及其关联模板。
  • 你应当熟悉 JavaScript。
  • 你应当了解如何接收共享内容,如快速入门:接收共享内容中所述。

说明

QuickLink 对象是 ShareOperation 类的一部分。

var quickLink = new Windows.ApplicationModel.DataTransfer.ShareTarget.QuickLink();

在你有了 QuickLink 对象的一个实例之后,你首先需要使用一个目标 ID 字符串配置该实例,当用户选择 QuickLink 时,系统可以将该字符串返回给你的应用。下面的示例演示如何设置目标 ID。

quickLink.id = "123456789";

接下来,为 QuickLink 指定一个标题。标题题可帮助用户识别 QuickLink 及其作用。

quickLink.title = document.getElementById("quickLinkTitle").value;

// For quicklinks, the supported FileTypes and DataFormats are set 
// independently from the manifest.
var dataFormats = Windows.ApplicationModel.DataTransfer.StandardDataFormats;
quickLink.supportedFileTypes.replaceAll(["*"]);
quickLink.supportedDataFormats.replaceAll([dataFormats.text, dataFormats.uri, 
    dataFormats.bitmap, dataFormats.storageItems, dataFormats.html, customFormatName]);

Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("images\\user.png").then(function (iconFile) {
    quickLink.thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(iconFile);
});

步骤 4: 指定支持的文件类型

接下来,你需要指定 QuickLink 支持的文件类型和数据格式。仅当在共享源应用程序中共享的 DataPackage 包含这些文件类型或数据格式之一时,系统才显示 QuickLink

var dataFormats = Windows.ApplicationModel.DataTransfer.StandardDataFormats;
quickLink.supportedFileTypes.replaceAll(["*"]);
quickLink.supportedDataFormats.replaceAll([dataFormats.text, dataFormats.uri, 
    dataFormats.bitmap, dataFormats.storageItems, dataFormats.html, customFormatName]);

我们建议你使用用户在不使用 QuickLink 选择你的应用时会看到的图标。这样,用户将知道该链接与你的应用相关联。

Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("images\\user.png").then(function (iconFile) {
    quickLink.thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(iconFile);
});

完成创建 QuickLink 之后,你可以通过调用 ShareOperation.reportCompleted 方法,将其发送到系统。

shareOperation.reportCompleted(quickLink);

完整示例

以下函数创建并返回 QuickLink。请在你的应用完成某个共享操作之后调用此函数,而不是直接调用 ShareOperation.reportCompleted

function reportCompleted() {
    var quickLink = new Windows.ApplicationModel.DataTransfer.ShareTarget.QuickLink();
    quickLink.id = "123456789";
    quickLink.title = document.getElementById("quickLinkTitle").value;
    
    // For quicklinks, the supported FileTypes and DataFormats are set 
    // independently from the manifest.
    var dataFormats = Windows.ApplicationModel.DataTransfer.StandardDataFormats;
    quickLink.supportedFileTypes.replaceAll(["*"]);
    quickLink.supportedDataFormats.replaceAll([dataFormats.text, dataFormats.uri, 
        dataFormats.bitmap, dataFormats.storageItems, dataFormats.html, customFormatName]);

    Windows.ApplicationModel.Package.current.installedLocation.getFileAsync("images\\user.png").then(function (iconFile) {
        quickLink.thumbnail = Windows.Storage.Streams.RandomAccessStreamReference.createFromFile(iconFile);
        shareOperation.reportCompleted(quickLink);
    });
}

相关主题

共享内容目标应用示例

共享和交换数据

快速入门:接收共享内容

QuickLink

ShareOperation

Windows.ApplicationModel.DataTransfer

Windows.ApplicationModel.DataTransfer.Share

调试目标应用指南