Web SDK

无影Web SDK是用于连接云电脑、云应用、云手机的无影Web Client开放接口。通过集成Web Client SDK,您可以根据业务需求快速定制和搭建Web客户端。

1. 快速开始

1.1 获取SDKDEMO

获取方式

说明

下载和使用即表示您认可《无影云电脑SDK隐私权政策》

本平台所有文档、SDK、客户端程序仅限于本人或本企业使用,未经阿里云同意不会转发给第三方个人或企业。

目录结构说明

├── WuyingWebDemo.html  //SDK示例。
├── WuyingWebSDK.js     //SDK的接口文件,需要在前端页面中引用该文件。
└── sdk                 //iframe内嵌资源文件
     └── ASP
          └── container.html
  • Web.SDK.Demo是一个Vue工程,启动步骤为:

    1. 在命令行工具中执行以下命令,检查本地环境是否已安装Node.js。

      node
      • 若返回Welcome to Node.js信息,则说明已安装。

      • 若没有返回上述信息,则说明未安装,请先安装Node.js。

    2. 执行以下命令,进入Vue工程根目录。

      说明

      请将<ProjectRootPath>替换为Vue工程根目录的实际路径。

      cd <ProjectRootPath>
    3. 执行以下命令,安装Node.js项目的依赖包。

      npm i
    4. 执行以下命令启动。

      npm run dev

      命令运行成功后会输出可访问的链接地址。

  • WuyingWebDemo.html的启动步骤为:

    1. 执行以下命令,进入HTML文件所在目录。

      说明

      请将<HTMLPath>替换为HTML文件所在目录的实际路径。

      cd <HTMLPath>
    2. 执行以下命令,启动HTTP服务器。

      python3 -m http.server
    3. 在浏览器中打开http://localhost:8000/WuyingWebDemo.html

1.2 对接流程

image

1.3 最佳实践

方案详见无影云手机快速集成最佳实践。 云手机集成的总体方案如下图所示

image

有多种登录方式,获取集成SDK所需要的连接云手机Ticket凭证,流程图为:

image

具体代码可以参考生命周期接口的参考代码。

2. 生命周期接口

2.1 初始化创建Session

var userInfo = {
  sessionId: sessionId,
  authCode: authCode,
  loginToken: loginToken,
  ticket: 'xxx',
};
var appInfo = {
  osType: 'Android', // 必填
  appId: "android", 
  resourceGroupId: "aig-xxxxxxxxx", //resourceGroupId以aig-开头
  resourceld: "p-xxxxxx", //resourceld以p-开头
  appInstanceGroupId: "aig-xxxxxxxxx", //与resourceGroupId相同
  productType: "AndroidCloud",
  connectionProperties: JSON.stringify({ authMode: "Session" }) ,
};
var sessionParam = {
  openType: openType,
  iframeId: 'sessionIframe',
  resourceType: "local",
  connectType: 'app',
  userInfo: userInfo,
  appInfo: appInfo,
};
var wuyingSdk = Wuying.WebSDK;
session = wuyingSdk.createSession('appstream', sessionParam);

createSession参数说明:

参数

类型

是否必填

说明

id

string

常量值,云手机是appstream

sessionParams

SessionParam

创建会话参数,参考 4.1 SessionParam

sessionParams参数说明:

说明

用户登录有两种方式,免授权登录和便捷账号登录,便携账号登录依赖无影的用户体系,免授权登录客户可以使用自己的用户体系。免授权登录鉴权参数为authCode,便捷账号登录鉴权参数为loginTokenticket是连接实例的鉴权信息,loginTokenauthCode最终都是转换成ticket去连接实例。请在authCodeticketloginToken三者之间选一个。

2.2 建立连接

session.start();

2.3 断开连接

session.stop();

2.4 回调说明

回调接口: addHandle(name: SessionEventType, callback: Function)

回调接口参数说明:

名称

类型

描述

name

string

监听事件的类型,参考本文档5.9 SessionEventType枚举定义

callback

Function

回调函数

回调代码示例

session.addHandle('getConnectionTicketInfo', (data) => {
  console.log(data);
});

session.addHandle('onConnected', (data) => {
  console.log('connected', data);
});

session.addHandle('onDisConnected', (data) => {
  console.log('disconnect', data);
});

session.addHandle('onRuntimeMsg', (data) => {
  document.getElementById('GuestMsgContext').value = JSON.stringify(data);
});

3. 业务接口

接口

说明

WebSDK.apiVersion

获取当前WebSDK的版本号,类型为string

setInputEnabled(param: boolean)

enableInput(param: boolean)

打开和关闭输入操作。

  • 关闭输入操作后,对于本地键盘、鼠标、触摸板的输入事件,云手机都不会响应。

  • enableInputsetInputEnabled功能相同,推荐使用setInputEnabled

enableKeyBoard(param: boolean)

是否唤起移动端的键盘。

setClipboardEnabled(param: boolean)

是否开启剪贴板控制。

setMicrophoneEnabled(param: boolean)

是否开启麦克风控制。

setTouchEnabled(param: boolean)

是否开启触摸控制。

setUiParams(param: UiConfig)

session建立后主动设置UI配置(如菜单是否显示/是否强制横屏)。

说明

关于UIConfig的详细信息,请参见4.4 UiConfig

示例:

var uiConfig = {
  toolbar: {
    visible: false,
  },
  rotateDegree: 90,
};
session.setUiParams(uiConfig);

dataChannel

端云接发自定义数据通道。

//在sessionParam里配置dataChannelConfig
dataChannelConfig: [{
     dataChannelName: 'wy_vdagent_default_dc',
}
// 监听数据通道消息
/** value含义 0- 0  1- 90  2- 180  3- 270 
  * 横屏消息格式 {"action":"rotation","value":"0"}
*/
session.addDataChannelListener('wy_vdagent_default_dc', 'data', data => console.log('data from wy_vdagent_default_dc', data));
// 发送数据通道消息
// 入参: 通道名称  消息内容
session.sendDataChannelMessage('wy_vdagent_default_dc', new Uint8Array([1, 2, 3, 4]));

lyncChannel

端侧发送adb命令通道

//在sessionParam里配置lyncChannelConfig
lyncChannelConfig: [
{
    lyncChannelName: 'lync_adb_shell',
}
//发送adb命令
session.value.sendLyncMessage(
    'lync_adb_shell',
    JSON.stringify({
      id: Date.now(), // 执行命令唯一标识
       cmd: OperationMap[type],
     }),
 );
// 监听adb命令回调
session.addLyncListener('lync_adb_shell', 'onReceivedLyncData', data => console.log('data from lync_adb_shell', data));

4. 参数详细说明

4.1 SessionParam

创建会话的参数。

名称

类型

必填

描述

openType

OpenType

iframe内嵌还是新标签页打开

iframeId

string

如果iframe打开,则需要填入iframeId

sdkPath

string

配置SDK文件所在路径,不填则默认为相对路径,例如./ASP/container.html

resourceType

ResourceType

目前只支持打开本地连接页面

connectType

ConnectType

打开云手机还是云电脑

isOverseas

boolean

是否海外访问,默认false

userInfo

UserInfo

用户的登录态信息

regionId

string

打开云手机时必填为云手机所在的地域

appInfo

AppInfo

云手机相关信息

fileInfo

FileInfo

网盘相关参数

uiConfig

UiConfig

UI设置项

logDisabled

bool

是否关闭ARMS统计,默认为false不关闭

loginType

LoginType

默认无影账号登录

networkAccessType

string

默认不填,支持VPC登录

4.2 UserInfo

用户的登录态信息。请在authCodeticketloginToken三者之间,根据自身情况选择其一。authCode是免授权登录得到的;loginToken是便携账号登录得到的;ticket是通过authCodeloginToken请求得到的。

名称

类型

必填

描述

authCode

string

只能用一次的登录态凭证,优先级最高

ticket

string

1.4.7版本之后支持直接传入Ticket建立连接

loginToken

string

便携账号鉴权凭证

sessionId

string

请求loginTokenstsToken得到的SessionId

4.3 AppInfo

打开云手机的参数。

名称

类型

必填

描述

osType

string

常量值Android

appId

string

填入 PersistentAppInstanceId (示例值:p-0caoet4e18cui****)

appVersion

string

打开应用的版本

loginRegionId

string

云手机资源所在的地域

connConfig

ConnConfig

连接配置参数

appInstanceGroupId

string

交付组ID

appInstanceId

string

实例ID,若使用ticket连接为必填 (示例值:ai-0cc7s3n1iagyq****)

taskId

string

应用启动任务ID

bizRegionId

string

应用资源所在的地域

productType

string

交付组类型,云手机填默认AndroidCloud

4.4 UiConfig

连接页面UI设置。

名称

类型

必填

描述

toolbar

ToolBarConfig

连接页面工具栏显示设置

exitCheck

bool

退出当前页面浏览器二次确认,默认开启

rotateDegree

number

强制横屏(目前只支持0:正常;90:强制横屏)

vconsoleVisiable

bool

是否显示vconsole调试框

debugPanelVisiable

bool

是否显示码流、帧率等信息框

reconnectType

ReconnectType

重连提示框样式

defaultResolution

ResolutionType

首次连接的默认分辨率,默认为'A'

language

Language

设置内部弹窗提示的语言,默认为简体中文

allowErrorDialog

bool

是否弹出错误提示窗

backgroundColor

string

自定义加载过程背景

backgroundImg

string

自定义加载过程图片

4.5 ToolBarConfig

工具栏显示设置。

名称

类型

必填

描述

visible

bool

工具栏是否显示

noMenu

bool

悬浮球是否支持打开右键菜单,默认为false,1.4.20以上版本支持

4.6 ConnConfig

连接配置参数。

名称

类型

必填

描述

decodeType

ConnDecodeType(数字枚举)

编码方式配置

playSoundBackground

bool

切换后台后是否继续播放声音

5. 枚举类型

5.1 OpenType

打开云手机的方式。

名称

含义

newTab

新的Tab页面打开

inline

内嵌iframe页面打开

urlScheme

支持本地原生客户端打开,需安装V6.2以上版本的无影桌面客户端

5.2 ConnectType

打开云电脑或者云手机。

名称

含义

app

打开云手机

desktop

打开云电脑

目前云手机复用app类型,连接云手机时,connectType固定填app

5.3 ResourceType

打开本地连接页面还是无影WebClient。

名称

含义

local

打开本地连接HTML页面

无影云手机集成固定填local

5.4 ReconnectType

重连提示弹窗的UI。

名称

含义

simple

简单的加载样式

normal

倒计时弹窗

5.5 ResolutionType

初始化连接默认分辨率(连接时优先取用户设置过的分辨率)。

名称

含义

A

速度优先,当前窗口大小

B

质量优先,当前窗口大小乘以window.devicePixelRatio

5.6 ChargeType

云手机付费类型。

名称

含义

开始支持版本

PostPaid

按量付费

1.4.0

PrePaid

包年包月付费

1.4.0

5.7 Language

语言设置选项,默认为zh-CN

名称

含义

zh-CN

简体中文

en-US

英文

ja-JP

日文

5.8 LoginType

登录云手机方式。

名称

含义

aliyunLogin

阿里云账号登录

normalLogin

无影账号登录(云手机只支持normalLogin)。

5.9 SessionEventType

会话的事件类型映射(加云手机事件说明)。

名称

含义

开始支持版本

getConnectionTicketInfo

连接云手机事件

1.0.0

onConnected

云手机建立连接事件

1.0.0

onDisConnected

云手机断开连接事件

1.0.0

onRuntimeMsg

Runtime内发送给SDK的消息

1.1.0

networkData

网络性能参数

1.3.1

onError

接受连接过程中的错误

1.4.1

5.10 ConnDecodeType

流的解码类型。

名称

含义

开始支持版本

0

软解

1.2.0

1

硬解

1.2.0

2

WebRTC

1.2.0

5.11 ProtocolType

协议类型。

名称

含义

开始支持版本

ASP

阿里云自研ASP协议(云手机只支持ASP协议)

1.3.0

HDX

Citrix协议

1.3.0

6. 错误代码

6.1 onDisconnected接收断连的报错信息

名称

含义

代码

ASP_CLIENT_DISCONNECT_CONNECT_ERROR

断开连接

0

ASP_CLIENT_DISCONNECT_SOCKET_CLOSE

socket关闭

1

ASP_CLIENT_DISCONNECT_WEBRTC_CLOSE

webrtc关闭

2

ASP_CLIENT_DISCONNECT_CLOUD_APP_STOP

云应用关闭

2001

ASP_CLIENT_DISCONNECT_CLIENT_PREEMPTION

被抢占

2002

ASP_CLIENT_DISCONNECT_GUEST_SHUTDOWN_REBOOT

Guest重启

2003

ASP_CLIENT_RTT_TIMEOUT

RTT超时

2200

ASP_CLIENT_NET_ERROR_IO

网络IO错误

2201

ASP_CLIENT_UPDATE_TICKET_FAILED

更新ticket错误

2202

6.2 onError接收连接过程的错误信息

接收格式:{code: string, message: string, api: string}message包含requestIdapi为报错的请求。

错误码

错误说明

AccountNotAvailable

域账号被锁定、禁用或已过期,请联系IT管理员或系统域控管理员解决。

ClientLockedForAliasFailed

输入错误次数达到上限,请5分钟后再试。

content-monthpackageenterpostpaidphase

此台云手机在本月度周期内的时长包已使用完毕,开机或唤醒后将按需计费。

content-recordingscreen

您的云手机已被企业IT管理员启用了录屏审计功能,您在云手机内的所有操作将会被录制,如对录屏审计功能有任何疑问请您联系您的管理员。

desktop-AgentUnbinding

由于您之前连接的临时云手机尚在解绑中导致新的临时云手机连接失败。请稍候再次连接。

desktop-AssignUserFailed

云手机分配失败,请稍候重试。

desktop-ConnectTicket.Timeout

由于连接超时导致云手机连接失败。请重启云手机后再重新连接。

desktop-DesktopAgentFileLose

云手机的核心进程文件已丢失,导致连接失败。请重启云手机后再次连接。如仍旧出现连接失败,请联系IT管理员。

desktop-DesktopContainSecuritySoftware

此台云手机安装了安全软件导致云手机的网络出现异常,云环境和管控的连接已中断。请联系您的IT管理员退出安全软件后再次连接。

desktop-DesktopContainVpn

此台云手机安装了VPN软件导致云手机的网络出现异常,云环境和管控的连接已中断。您可通过重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-DesktopGuestStop

此台云手机非“运行中”状态导致连接失败。

desktop-DesktopNetworkAnomaly

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可通过重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-DesktopNetworkError

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-DesktopResourceStatusInvalid

云服务器ECS当前非运行状态,导致云手机连接失败。请重启云手机后再次连接。

desktop-DesktopResourceStop

云服务器ECS已关机,导致云手机连接失败。请重启云手机后再次连接。

desktop-DesktopsUnderMaintenance

此台云手机非“运行中”状态导致连接失败。

desktop-DesktopUnavailable

连接失败,请稍候重试。如仍旧出现连接失败,请联系IT管理员更新此台云手机的状态。

desktop-DistributeLockFailed

由于当前连接临时云手机的用户量过多导致连接失败,请稍候再次连接。

desktop-GENERAL_ERROR

出现服务异常,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-GET_TICKET_LOCK

云手机连接请求频繁,请稍候再试。

desktop-INSUFFICIENT_QUOTA

由于IT管理员账号下的云手机配额不足导致当前无可用的临时云手机,请联系IT管理员寻求运维帮助。

desktop-INTERNAL_ERROR

出现服务异常,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-InvalidBundleId.NotFound

此台云手机的镜像模板出现异常,请联系IT管理员。

desktop-InvalidClientIp.Policy

IT管理员设置了IP白名单策略导致无法在您目前的IP环境下连接此台云手机,请联系IT管理员。

desktop-InvalidClientType.AccessDenied

IT管理员设置了禁止在此客户端内运行此台云手机。如需继续使用此台云手机,请联系IT管理员。

desktop-InvalidDesktopId.NotFound

IT管理员已取消您使用此台云手机的权限。

desktop-InvalidDesktopId.Status

此台云手机非“运行中”状态导致连接失败。

desktop-InvalidDesktopStatus.NotRunning

服务端异常导致关机失败,请稍后重试或联系您的IT管理员。

desktop-InvalidDesktopStatus.NotStopped

服务端异常导致开机失败,请稍后重试或联系您的IT管理员。

desktop-InvalidDesktopStatusInvalid

此台云手机当前非运行状态导致连接失败。

desktop-InvalidLiteConnectionCheck

由于协议服务出现异常导致云手机重连失败,请尝试重新连接。

desktop-NoEnoughDesktops

由于IT管理员的设置导致当前无可分配的临时云手机,请联系IT管理员。

desktop-NotFindDesktopId

此台云手机已被IT管理员释放。

desktop-NotFoundUserDesktop

IT管理员已取消您使用此台云手机的权限。

desktop-PermissionDeny.Desktop

IT管理员已取消您的使用权限。如需继续使用云手机,请联系IT管理员重新授权。

desktop-RES_GW_ERROR

出现服务异常,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-SDK.ReadTimeout

出现服务异常,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-ServiceUnavailable

服务连接超时,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-THROTTLING_USER

出现服务异常,请重新连接云手机。如仍旧无法连接,请联系IT管理员。

desktop-UnavailableDesktop

云手机登录超时,您可通过重连或重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.2901

协议服务与云环境连接失败导致云手机连接失败。您可通过重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.2902

协议服务无响应,导致云手机连接失败。您可通过重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.2903

云环境出现异常,导致云手机连接失败,您可通过重启云手机修复此问题,如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.2904

云环境出现异常云手机连接失败。您可通过重启云手机修复此问题。如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.2905

此台云手机被分配给了多个用户,为其他用户注销会话时出现超时导致连接失败。请重新连接或重启云手机。

desktop-UnavailableDesktop.2906

由于登录系统时出现响应超时导致连接失败,请重新连接或重启云手机。 

desktop-UnavailableDesktop.2907

由于协议服务仍在启动中,导致云手机连接失败。请稍后重新连接或重启云手机,如仍旧出现连接失败,请联系IT管理员。

desktop-UnavailableDesktop.NotRegistered

IT管理员已删除此台云手机。

desktop-UnavailableDesktop.ServerNotReady

由于登录系统时出现异常导致连接失败,请联系IT管理员重新为您授权云手机的使用权限。

desktop.linux-UnavailableDesktop.AuthFailed

可能由于脱域问题导致云手机连接失败。请重启云手机后再重新连接或联系您的IT管理员。

DesktopNetworkError.AbortBySoftware

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.BadHandShake

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.BindAddressFailed

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ConnectAddressFailed

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ConnectionClosedError

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ConnectionRefusedError

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ConnectionResetError

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ConnectionTimeout

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.DnsLookupFailed

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.Forbidden

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.ReceivedUnexpectedEOF

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.SystemOutOfResource

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopNetworkError.UnKnowError

此台云手机的网络出现异常,导致云环境和管控的连接已中断。您可重启云手机修复此问题。

DesktopStatus-Desc-Updating

正在变更此台云手机的配置 ,暂时不可使用。

DesktopStatus-Repairing

修复中

DesktopStatus-Updating

变配中

DeviceNotInManage

无法登录。该办公网络或组织已开启可信设备认证,需请管理员关闭可信设备认证或手动将当前终端纳管为可信设备。

DirectoryLoginUnsupported

输入信息有误,请使用组织ID登录。

DomainFailed

由于系统加域失败导致云手机连接失败。

DomainRelationshipFailed

由于系统域关系出现异常导致云手机连接失败。

ExistedEmail

该邮箱地址已被占用。请输入其他邮箱地址。

ExistedEndUserId

该用户名已被占用。请输入其他用户名。

ExistedPhoneNumber

该手机号码已被占用。请输入其他手机号码。

ExpiredEmailVerifyCode

邮箱验证码已过期,请重新获取。

FailedToSendEmailVerifyCode

邮箱验证码获取失败,请重试。

ForbidByClientVersionForBusiness

该组织ID为商业版,须将当前客户端升级至最新版本才能登录。

ForbidByPasswordPolicy

修改失败,您的IT管理员已禁用“修改登录密码”。

FOTA_DESKTOP_IN_USE

云手机“%s”正在使用中,请断开连接后重试“更新”。

FOTA_SNAPSHOT_IN_PROGRESS

由于云手机“%s”正在创建系统快照中,当前无法执行镜像更新,请稍后重试。

GuestOperateDesktopFail

云手机关机或重启失败

GuestOperateDesktopTimeout

由于响应超时导致您在云手机内操作的关机或重启执行失败。

GuestRebootOperateFail

云手机重启失败

GuestRebootOperateTimeout

由于响应超时导致您在云手机内操作的重启执行失败。

GuestStopOperateFail

云手机关机失败

GuestStopOperateTimeout

由于响应超时导致您在云手机内操作的关机执行失败。

InvalidDirectoryType

RAM账号已下线,请联系IT管理员。

InvalidEmailVerifyCode

邮箱验证码错误,请重新输入。

InvalidMfaDeviceStatus

虚拟多因素认证设备错误。请使用与您的账号绑定的设备。

InvalidPassword

用户名或密码输入错误

LoginError.MissingConcatForVerify

由于此账号为管理员激活账号,无法完成身份安全校验,请联系IT管理员。

LoginForbidden

无法登录。该办公网络或组织已开启可信设备认证,需请管理员关闭可信设备认证或手动将当前终端纳管为可信设备。

LoginForbidden.LockedByAdmin

该便捷账号已被锁定,请联系您的IT管理员手动解锁。

LoginForbiddenByDevice

无法登录。管理员限定该终端只能被特定用户登录,当前账号不在限定范围内。

LoginForbiddenByUntrustedDevice

无法登录,管理员已开启“拦截不可信终端登录 ”,需要管理员将此终端纳管为可信设备或禁用此功能。

LoginForbiddenByUser

无法登录。管理员开启用户登录终端限制,请至指定终端进行登录。

MfaClientNotSupport

客户端版本过低,不支持该多因素认证方式,请升级客户端。

MfaNotAllowed

您的账号缺少该多因素认证方式要求的信息,请联系IT管理员补充。

MfaTypeNotAllowed

您的IT管理员尚未启用该多因素认证方式

MfaUserGoingToBeLocked

验证码错误。若连续错误达10次,您的账号将被锁定20分钟。

MfaUserNotExist

此账号已被删除。请向您的IT管理员咨询详情。

MfaVerifyCodeDiscarded

该验证码已失效,请重新获取。

PhoneIsNotRegistered

手机号输入错误或管理员未将手机号绑定到账号。

SessionForceQuit

已自动退登。 原因:已在其他终端注销或登录终端数量超出IT管理员限制。

StartApplicationGuestTimeout

网络信号不稳定,应用打开失败,请重试。

StartDesktopFail

云手机开机失败

ThrottlingSendEmailVerifyCodeLimit

一分钟只能发送一次验证码

UnavailableDesktop.2907

由于协议服务仍在启动中,导致云手机连接失败。请稍后重新连接或重启云手机,如仍旧出现连接失败,请联系IT管理员。

7. 常见问题

如何关闭悬浮球?

创建会话(createSession)阶段初始化uiConfig时,可以关闭悬浮球。

uiConfig: {
  toolbar: {
    visible: false,
  },
},

怎么通过ASP通道发送ADB命令?

创建会话(createSession)时初始化lyncChannelConfig。

lyncChannelConfig: [
  {
    lyncChannelName: "lync_adb_shell",
  },
],

需要发送命令时,可以调用session.sendLyncMessage,例如:

session.sendLyncMessage(
    "lync_adb_shell",
    JSON. stringify({
        id: crypto. randomUUID(), 
        cmd: 'input keyevent KEYCODE_VOLUME_UP',
    })
);

接收命令执行的结果,可以添加监听session.addLyncListener,例如:

session.addLyncListener('lync_adb_shell', 'onReceivedLyncData', data => console.log('data from lync_adb_shell', data));

常见命令:

功能

命令

返回键

input keyevent KEYCODE_BACK

Home

input keyevent KEYCODE_HOME

切换键

input keyevent KEYCODE_APP_SWITCH

静音

input keyevent 164

音量增大

input keyevent KEYCODE_VOLUME_UP

音量减小

input keyevent KEYCODE_VOLUME_DOWN

隐藏导航栏

setprop persist.wy.hasnavibar false; killall com.android.systemui

显示导航栏

setprop persist.wy.hasnavibar true; killall com.android.systemui

截图

screencap -p /sdcard/Download/abc.png

摄像头使用常见问题

  • 使用Demo连接云手机使用摄像头时,需注意,因为浏览器对摄像头有权限控制,所以访问Demo的链接地址必须是https开头的,才能正确使用摄像头。

  • 针对一些特殊场景,比如仅需要端侧前置摄像头或者后置摄像头时,需要做如下设置。

// 前摄
session.setLocalConfig('setCameraType', 1);
// 后摄
session.setLocalConfig('setCameraType', 2);

剪贴板使用常见问题

  • 遇到剪贴板不生效情况

    • 检测浏览器是否开启了剪贴板权限。

    • 无影云手机控制台检测实例绑定的策略,剪贴板策略是否是双向开启。