阅读本文,您可以获取 Go SDK 云手机操控的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Go SDK 的安装及初始化操作。
本节为您介绍云手机操控相关接口的功能和调用示例。
您可以调用 ScreenShot 接口截图 ScreenShot。详细的参数说明可参见 ScreenShot 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func BoolPtr(v bool) *bool { return &v } func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.ScreenShotBody{ // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7299381659819xxxxxx`, // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 截图请求的唯一标识,防止由于网络等原因造成重复请求,同一 RoundId 在 5 分钟内只可使用一次。 RoundID: `01`, // 是否保存截图文件在云手机实例: // <li> true:上传截图文件到火山引擎对象存储,并保存截图文件在云手机实例中。 </li> // <li> false:默认值,上传截图文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> // // 截图文件保存和清理逻辑如下: // <li> 当保存截图文件在云手机实例时,截图超过 1000 张时会清理之前保存的截图文件; </li> // <li> 当上传截图文件到火山引擎对象存储时,截图上传到对象存储成功后再清理云手机实例中的截图文件; </li> // <li> 当云手机存储空间小于 600MB 时: </li> // <li> 若设置该参数为 true,则不可执行截图操作; </li> // <li> 若设置该参数为 false,可执行截图操作。 </li> IsSavedOnPod: BoolPtr(true), // 截图画面横竖屏旋转: // <li> 0:默认值,截图方向不做处理; </li> // <li> 1:截图画面旋转为竖屏: </li> // <li> 手机竖屏的截图,不做处理; </li> // <li> 手机横屏的截图,截图顺时针旋转 90 度。 </li> Rotation: Int32Ptr(0), // 截图事件是否广播: // <li> true:默认值,广播; </li> // <li> false:不广播。 </li> IsBroadcasted: BoolPtr(true), // 设置截图地址回调触发的频次: // <li> 0/1/置空:当前行为/默认行为,表示每次调用本接口发起截图,都会刷新 URL,触发新的截图地址回调; </li> // <li> -1:URL 固定不刷新,直到 7 天刷新一次 URL(由于 TOS 的 URL 链接有效期为 7 天); </li> // <li> 其他数值:截图累计 xx 次后,再刷新 URL,刷新 URL 再触发回调。URL 不变,则不触发新的回调。 </li> Interval: Int32Ptr(0), } resp, err := service.ScreenShot(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 BatchScreenShot 接口批量截图 BatchScreenShot。详细的参数说明可参见 BatchScreenShot 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func BoolPtr(v bool) *bool { return &v } func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.BatchScreenShotBody{ // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 是否保存截图文件在云手机实例: // <li> true:上传截图文件到火山引擎对象存储,并保存截图文件在云手机实例中。 </li> // <li> false:默认值,上传截图文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> // // 截图文件保存和清理逻辑如下: // <li> 当保存截图文件在云手机实例时,截图超过 1000 张时会清理之前保存的截图文件; </li> // <li> 当上传截图文件到火山引擎对象存储时,截图上传到对象存储成功后再清理云手机实例中的截图文件; </li> // <li> 当云手机存储空间小于 600MB 时: </li> // <li> 若设置该参数为 true,则不可执行截图操作; </li> // <li> 若设置该参数为 false,可执行截图操作。 </li> IsSavedOnPod: BoolPtr(true), // 截图画面横竖屏旋转: // <li> 0:默认值,截图方向不做处理; </li> // <li> 1:截图画面旋转为竖屏: </li> // <li> 手机竖屏的截图,不做处理; </li> // <li> 手机横屏的截图,截图顺时针旋转 90 度。 </li> Rotation: Int32Ptr(0), // 截图事件是否广播: // <li> true:默认值,广播; </li> // <li> false:不广播。 </li> IsBroadcasted: BoolPtr(true), // 设置截图地址回调触发的频次: // <li> 0/1/置空:当前行为/默认行为,表示每次调用本接口发起截图,都会刷新 URL,触发新的截图地址回调; </li> // <li> -1:URL 固定不刷新,直到 7 天刷新一次 URL(由于 TOS 的 URL 链接有效期为 7 天); </li> // <li> 其他数值:截图累计 xx 次后,再刷新 URL,刷新 URL 再触发回调。URL 不变,则不触发新的回调。 </li> Interval: Int32Ptr(0), } // 需要发起截图请求的实例 ID 列表,批量操作的最大实例数量为 100。 PodIDList := []string{"7299381659819xxxxxx", "7299405883363xxxxxx"} body.PodIDList = PodIDList resp, err := service.BatchScreenShot(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 StartRecording 接口开始录屏 StartRecording。详细的参数说明可参见 StartRecording 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func BoolPtr(v bool) *bool { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.StartRecordingBody{ // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7299381659819xxxxxx`, // 设置最大录屏时长,单位:秒。 // 支持设置的最大值为 14400,即 4 小时。 DurationLimit: 120, // 录屏请求的唯一标识。 // 为避免由于网络等原因造成重复请求,同一 RoundId 在 5 分钟内只可使用一次。 RoundID: `01`, // 是否保存录屏文件在云手机实例: // <li> true:上传录屏文件到火山引擎对象存储,并保存录屏文件在云手机实例中; </li> // <li> false:默认值,上传录屏文件到火山引擎对象存储,上传完成后,删除保存在云手机实例中的文件。 </li> IsSavedOnPod: BoolPtr(true), } resp, err := service.StartRecording(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 StopRecording 接口停止录屏 StopRecording。详细的参数说明可参见 StopRecording 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.StopRecordingBody{ // 实例所属业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7299381659819xxxxxx`, } resp, err := service.StopRecording(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PushFile 接口上传文件 PushFile。详细的参数说明可参见 PushFile 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PushFileBody{ // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // (TosBucket 填写时,必填)存储桶下的目录或文件名称(不能以 / 开头),正确示例:cloudphone/gameApk/my_photo.jpg。 TosFilePath: StringPtr(`files/file01.pdf`), // (TosBucket 填写时,必填)对象存储服务地址,例如:tos-cn-beijing.volces.com。 Endpoint: StringPtr(`tos-cn-beijing.volces.com`), // (TosBucket 填写时,必填)对象存储服务区域,例如:cn-beijing。 Region: StringPtr(`cn-beijing`), // 从对象存储推送文件到云手机实例,指定保存源文件的火山引擎对象存储中的存储桶名称,例如:test-bucket。 // > 说明:与 DownloadUrl 二选一,如果 TosBucket 填写,则会忽略 DownloadUrl 参数。 TosBucket: StringPtr(`my-bucket`), // 推送文件至云手机实例中的目标路径(不包括文件名),支持的目标路径包括以下目录: // <li> /sdcard/ </li> // <li> /data/local/ </li> TargetDirectory: `/data/local/`, // 是否自动解压推送的压缩文件: // <li> 0:推送 zip 文件后,自动解压文件(默认); </li> // <li> 1:推送 zip 文件后,不自动解压文件。 </li> AutoUnzip: Int32Ptr(1), } // 需要推送文件的实例 ID 列表,长度上限为 200。 PodIDList := []string{"7299381659819xxxxxx"} body.PodIDList = PodIDList resp, err := service.PushFile(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 PullFile 接口下载文件 PullFile。详细的参数说明可参见 PullFile 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.PullFileBody{ // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 实例 ID,可通过调用 ListPod 接口获取。 PodID: `7299381659819xxxxxx`, // 火山引擎对象存储中的存储桶名称。 TosBucket: `my-bucket`, // 存储桶下保存文件的完整路径,包括文件名,并且指定的路径必须存在(不能以 / 开头),例如:cloudphone/screen_record/record.mp4 // > 说明:当下载文件夹时,会将文件夹以 .zip 文件的格式下载,TosFilePath 也要指定为以 .zip 文件格式结尾。 TosFilePath: `files/download.zip`, // 对象存储服务地址。 Endpoint: `tos-cn-beijing.volces.com`, // 对象存储服务区域。 Region: `cn-beijing`, // 实例中待下载文件的路径或文件名,支持从以下路径下载文件: // <li> /sdcard/ </li> // <li> /data/misc/logd/ + 日志文件名/ </li> FilePath: `/data/misc/logd`, } resp, err := service.PullFile(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 RunCommand 接口异步执行命令 RunCommand。详细的参数说明可参见 RunCommand 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.RunCommandBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 待执行的命令,支持的最大长度为 1024 字节。 Command: `ls`, // 权限类型。 PermissionType: StringPtr(`root`), // 异步命令执行的超时时长,单位为 s,默认值为 300,取值范围为 [0,21600]。 TimeoutSeconds: Int32Ptr(300), } // 实例 ID 列表,对多个实例批量执行命令操作时,支持的最大实例数量为 100。 PodIDList := []string{"7299381659819xxxxxx", "7297074858797xxxxxx"} body.PodIDList = PodIDList resp, err := service.RunCommand(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 RunSyncCommand 接口同步执行命令 RunSyncCommand。详细的参数说明可参见 RunSyncCommand 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func StringPtr(v string) *string { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.RunSyncCommandBody{ // 实例所归属的业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646xxxxxx`, // 待执行的命令,支持的最大长度为 1024 字节。 Command: `ls`, // 权限类型。 PermissionType: StringPtr(`root`), } // 实例 ID 列表,对多个实例批量执行命令操作时,支持的最大实例数量为 100。 PodIDList := []string{"7299381659819xxxxxx", "7297074858797xxxxxx"} body.PodIDList = PodIDList resp, err := service.RunSyncCommand(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 BanUser 接口封禁用户 BanUser。详细的参数说明可参见 BanUser 接口文档。
接口调用示例如下所示。
package main import ( "context" "fmt" "os" "github.com/volcengine/volc-sdk-golang/base" ACEP "github.com/volcengine/volc-sdk-golang/service/acep" ) func Int32Ptr(v int32) *int32 { return &v } func main() { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY service := ACEP.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("VOLC_ACCESSKEY"), SecretAccessKey: os.Getenv("VOLC_SECRETKEY"), }) body := &ACEP.BanUserBody{ // 业务 ID,可在「云手机控制台-业务管理-业务详情」中获取。 ProductID: `1608456935646957568`, // 实例 ID。 PodID: `7299381659819563817`, // 目标封禁用户的 ID。 UserID: `user01`, // 封禁时长,单位:秒,取值范围为 [60, 259290]: // <li> 若传入值为空或 0 表示允许该用户重新连接云手机; </li> // <li> 若传入值大于 0,且小于 60,自动调整为 60; </li> // <li> 若传入值大于 259290,自动调整为 259290。 </li> ForbiddenInterval: Int32Ptr(120), } resp, err := service.BanUser(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }