本文介绍无影云手机集成的总体方案,以及在服务端集成环节中的相关最佳实践。
总体方案
无影云手机集成的总体方案如下图所示:
无影服务端:提供实例管理、连接管理、密钥管理、应用管理等基础能力,供您的服务端和客户端集成。
您的服务端:集成无影的OpenAPI,完成实例调度、用户鉴权等功能。
您的客户端:集成无影的SDK,例如您的Android客户端集成无影Android SDK,您的Windows客户端集成无影Windows SDK等。鉴权通过后,您的客户端使用无影ASP协议,通过无影流网关连接到云手机。
服务端集成最佳实践
服务端集成环节中,您的主要工作是完成实例调度、用户鉴权等工作,并提供对应的接口给您的客户端调用。下文介绍相关工作环节的最佳实践。
业务模型
无影云手机支持云手机实例组,一个实例组下可以创建多个云手机。一般情况下,实例组和实例的推荐比例关系是1:1,即1个实例组只创建1个云手机,以便进行后续的变更镜像等操作。
无影云手机也支持云手机矩阵,矩阵产品目前处于邀测阶段,如需下单购买请联系售前咨询。
实例调度
您需要做好阿里云账号下的云手机实例调度工作,包括但不限于:
云手机创建:在适当的时候创建云手机。可以在控制台手动创建,也可以在代码中动态调用CreateAndroidInstanceGroup - 创建实例组接口来创建。
云手机销毁:在适当的时候销毁云手机。可以在控制台手动创建,也可以在代码中动态调用DeleteAndroidInstanceGroup - 删除实例组接口来释放。
云手机池维护:
客户端发起连接时,从当前云手机池中取出空闲的云手机用于连接,并将状态设置为已使用。
客户端断连时,将当前云手机从已使用状态修改为空闲状态;必要时,可以通过
RunCommand
接口删除相关文件,避免上一位用户留下使用痕迹。
云手机池状态监控:当云手机池达到一定的阈值(比如80%)时,需要告警并动态扩容或手动扩容。
云手机调度提速:为了确保快速连接,您应当考虑业务的峰值并发问题,确保每次调度都有可用的云手机。
账号体系对接&登录连接
无影云手机支持多种登录方式:
免授权登录(获取Ticket模式):免授权登录模式,是一种无需授权登录即可分配临时用户连接云手机的方式。只有开通免授权后创建的云手机,才可以通过免授权登录。接入方服务端调用BatchGetAcpConnectionTicket接口(请参考BatchGetAcpConnectionTicket - 批量获取实例连接凭证),根据唯一的用户ID和云手机实例ID获取到Ticket,将Ticket传入客户端SDK即可连接当前云手机实例。
免授权登录(获取AuthCode模式):开通免授权登录后,任何代表用户的唯一字符串均可获取AuthCode授权码(请参考GetAuthCode - 获取授权码),将AuthCode传入客户端SDK即可连接当前阿里云账号下的任意一台云手机。AuthCode登录一次会失效,重复登录需要重复获取AuthCode。
由于免授权方式更灵活,不需要维护业务账号和无影便捷账号的映射关系,我们推荐您在集成无影云手机时采用免授权登录的方案。
如需开通免授权登录,请提交工单申请,并提供您的阿里云账号UID。
便捷账号登录:便捷账号登录模式,通过无影用户系统和云手机访问授权保障了云手机登录的用户可信。您需要先在无影用户系统创建便捷账号(请参考CreateUsers - 创建便捷账号),再为云手机分配授权便捷账号(请参考AuthorizeAndroidInstance - 实例分配用户&取消分配)。分配授权后,即可登录无影云手机客户端(下载地址:无影客户端下载页)并连接云手机。如果想通过便捷账号在客户端SDK登录并连接云手机,根据便捷账号的用户名密码和云手机所绑定的网络ID获取LoginToken和SessionId(请参考GetLoginToken - 获取登录凭证),并将LoginToken和SessionId传入客户端SDK即可连接当前已授权的云手机。
用户鉴权与连接云手机(免授权通过Ticket登录)
用户鉴权是服务端集成环节,您的服务端需要完成以下开发工作,获取用户连接云手机的Ticket。
连接云手机是客户端集成环节,您将Ticket传入客户端即可连接云手机。
查询云手机:服务端调用DescribeAndroidInstances - 查询实例详细信息接口,获取到您要连接的云手机的
AndroidInstanceId
。获取Ticket:服务端需要提前准备好EndUserId,EndUserId可以是任意的唯一字符串。服务端根据AndroidInstanceId和EndUserId调用BatchGetAcpConnectionTicket - 批量获取实例连接凭证接口,获取到
Ticket
。初始化Session:以Web端示例,客户端通过调用
wuyingSdk.createSession()
,初始化会话。建立连接:以Web端示例,客户端调用
session.start()
,与会话建立连接。断开连接:以Web端示例,客户端调用
session.stop()
,与会话断开连接。
相关文档
连接云手机是客户端完成的工作,请参见以下SDK文档: