SDK 和 API

HDX SDK

适用于 Chrome OS 的 Citrix Workspace 应用程序引入了 API(实验性 API),此 API 允许第三方 Chrome 应用程序从以下会话中锁定、解锁和断开连接:

  • Citrix Virtual Apps and Desktops
  • Citrix DaaS(以前称为 Citrix Virtual Apps and Desktops 服务)会话

使用此 API,可以同时在嵌入模式和网亭模式下启动适用于 Chrome OS 的 Citrix Workspace 应用程序。在嵌入模式下启动的会话的运行方式与在网亭模式下启动的会话的运行方式相似。

有关 SDK 文档,请参阅 HDX SDK for Citrix Workspace app for Chrome(适用于 Chrome 的 Citrix Workspace 应用程序的 HDX SDK)。

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

Citrix 虚拟通道 SDK

Citrix 虚拟通道软件开发工具包 (SDK) 支持您为使用 ICA 协议的其他虚拟通道编写服务器端应用程序和客户端驱动程序。

服务器端虚拟通道应用程序位于 Citrix Virtual Apps 或 Citrix Virtual Apps and Desktops 服务器上。此版本的 SDK 支持您为适用于 Chrome OS 的 Citrix Workspace 应用程序编写新的虚拟通道。如果要为其他客户端平台编写虚拟驱动程序,请联系 Citrix。

虚拟通道 SDK 提供:

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

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

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

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

有关 VC SDK 示例,请参阅 VC SDK 示例

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

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

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

    注意:

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

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

    var workspaceappID = " haiffjcadagjlijoggckpgfnoeiflnem ";

    注意:

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

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

    注意:

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

     //Helper function to convert ica in INI format to JSON
     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];
     }
     // This is required as LaunchReference contains '=' as well. The above split('=',2) will not provide
     // the complete LaunchReference. Ideally, something like the following should be used generically as well
     // because there can be other variables that use the '=' character as part of the value.
     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;
     }
    
     <!--NeedCopy-->
    
  • 将 ICA 消息从第三方 Chrome 应用程序发送到适用于 Chrome OS 的 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);
     }
     });
    
     <!--NeedCopy-->
    

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

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

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

SDK 和 API