SDK 和 API

HDX SDK

适用于 Chrome 的 Citrix Workspace 应用程序引入了 API(实验性 API),此 API 允许第三方 Chrome 应用程序从 Citrix Virtual Apps and Desktops 会话中锁定、解锁和断开连接。使用此 API,可以同时在嵌入模式和 Kiosk 模式下启动适用于 Chrome 的 Citrix Workspace 应用程序。在嵌入模式下启动的会话的运行方式与在 Kiosk 模式下启动的会话的运行方式相似。

有关 SDK 文档的信息,请参阅适用于 Chrome 的 Citrix Workspace 应用程序的 HDX SDK

有关 HDX SDK 示例,请参阅 Citrix 下载页面。

Citrix 虚拟通道 SDK

Citrix 虚拟通道软件开发工具包 (SDK) 为使用 ICA 协议的其他虚拟通道提供编写服务器端应用程序和客户端驱动程序的支持。服务器端虚拟通道应用程序位于 Citrix Virtual Apps 或 Citrix Virtual Apps and Desktops 服务器上。此版本的 SDK 支持为适用于 Chrome 的 Citrix Workspace 应用程序编写新虚拟通道。如果要为其他客户端平台编写虚拟驱动程序,请联系 Citrix。

虚拟通道 SDK 提供:

  • 可与 Citrix Server API SDK (WFAPI SDK) 配合使用以创建新虚拟通道的简单接口。

  • 用来演示编程技术的多个虚拟通道示例程序的有效源代码。

  • 虚拟通道 SDK 需要 WFAPI SDK 才能编写虚拟通道的服务器端。

有关 VC SDK 文档,请参阅面向适用于 Chrome 的 Citrix Workspace 应用程序的 Citrix 虚拟通道 SDK

有关 VC SDK 示例,请参阅 Citrix 下载页面。

在第三方 Chrome 应用程序中使用 API 的步骤

  1. 安装最新版本的适用于 Chrome 的 Citrix Workspace 应用程序。有关详细信息,请参阅 Citrix 下载页面。
  2. 通过使用 Chrome 管理设置为适用于 Chrome 的 Citrix Workspace 应用程序添加策略文件将第三方 Chrome 应用程序加入白名单。 有关更多详细信息,请参阅 Google 支持站点上的按组织单位管理 Chrome 应用程序。 用于将第三方 Chrome 应用程序加入白名单中的示例 policy.txt 文件如下所示:

    {
          "settings": {
                 "Value": {
                 "settings_version": "1.0",
                 "store_settings": {
                 "externalApps": [“<3rdParty_App1_ExtnID>”,“<3rdParty_App2_ExtnID>”]
                                   }
                           }
                    }
    }
    

    注意:

    <3rdParty_App1_ExtnID> 用作 externalApps 的名称示例,可以向适用于 Chrome 的 Citrix Workspace 应用程序发送消息。从 chrome://extensions 站点获取您的 appid

  3. 通过执行下面的步骤在适用于 Chrome 的 Citrix Workspace 中启动应用程序或桌面会话:
  • 获取 workspaceappID

    var workspaceappID = “ haiffjcadagjlijoggckpgfnoeiflnem “;

    注意:

    在此示例中,workspaceappID 指示适用于 Chrome 的 Citrix Workspace 应用程序的应用商店版本。如果要使用重新封装的适用于 Chrome 的 Citrix Workspace 应用程序版本,请使用相应的 workspaceappID。

  • 将 ICA 数据从 INI 转换为 JSON 格式。

    注意:

    ICA 文件通常以 INI 文件格式从 StoreFront 中获取。使用以下 helper 函数将 ICA INI 文件转换为 JSON。

//用于将 INI 格式的 ica 转换为 JSON 的 Helper 函数 function convertICA_INI_TO_JSON(data){ var keyVals = {}; if (data) { var dataArr; if(data.indexOf(‘\r’)==-1){ dataArr = data.split(‘\n’); }else{ dataArr = data.split(‘\r\n’); } for (var i = 0; i < dataArr.length; i++) { var nameValue = dataArr[i].split(‘=’, 2); if (nameValue.length === 2) { keyVals[nameValue[0]] = nameValue[1]; } // 这是必需的,因为 LaunchReference 也将包含“=”。上面的 split(‘=’,2) 不提供 // 完整 LaunchReference。理想情况下,通常还应使用如下所示的元素 // 因为可能存在使用 ‘=’ 作为值的一部分的其他变量。 if (nameValue[0] === “LaunchReference”) { var index = dataArr[i].indexOf(‘=’); var value = dataArr[i].substr(index + 1); keyVals[nameValue[0]] = value; } } console.log(keyVals);//to remove return keyVals; } return null; }

  • 将 ICA 消息从第三方 Chrome 应用程序发送到适用于 Chrome 的 Citrix Workspace 应用程序。

     var icaFileJson = {...}; // ICA file passed as JSON key value pairs.
     var message = {
     "method" : "launchSession",
     "icaData" : icaJSON
     };
     chrome.runtime.sendMessage(workspaceappID, message,
     function(launchStatus) {
     if (launchStatus.success) {
     // handle success.
     console.log("Session launch was attempted successfully");
     } else {
     // handle errors.
     console.log("error during session launch: ", launchStatus.message);
     }
     });
    
    

有关 sendmesage API 命令的更多详细信息,请参阅以下链接:

https://developer.chrome.com/extensions/runtime#event-onMessageExternal

https://developer.chrome.com/extensions/runtime#method-sendMessage