跳到正文
云点iOS

应用与会话

打开、切换、结束 App,以及查询 App 的状态。打开和切换都用 client.session —— 它同时负责建立自动化会话。

client.session#

打开(或切到)这个 App,并为它建立自动化会话。一般在脚本开头调用。

typescript
client.session(bundleId: string): Client;

参数

参数名类型是否必填默认值描述
bundleIdstring是—App 的 Bundle ID,例如 com.apple.Preferences(设置)。

返回值

类型描述
Client绑定到新会话的客户端。一般不用接:之后直接用全局的 client,它会自动跟上当前会话。

注意事项

  • 设备锁屏时会先解锁(只对没有锁屏密码的设备有效)。

示例

javascript
client.session('com.apple.Preferences');
sleep(2);
clickElement('label', '通用', 5);

参见 client.appTerminate、client.appCurrent

client.appTerminate#

结束 App 的进程。想让每一轮都从 App 的初始状态开始,就先结束再 client.session 打开。

typescript
client.appTerminate(bundleId: string): object;

参数

参数名类型是否必填默认值描述
bundleIdstring是—App 的 Bundle ID,例如 com.apple.Preferences(设置)。

返回值

类型描述
objectWDA 的原始响应,一般用不到。

示例

javascript
client.appTerminate('com.zhiliaoapp.musically');
sleep(randomFloat(1, 2));
client.session('com.zhiliaoapp.musically');

参见 client.session

client.appState#

查询 App 的运行状态。

typescript
client.appState(bundleId: string): { value: number };

参数

参数名类型是否必填默认值描述
bundleIdstring是—App 的 Bundle ID,例如 com.apple.Preferences(设置)。

返回值

类型描述
{ value: number }value 是状态:1 未运行,2 在后台挂起,3 在后台运行,4 在前台。

示例

javascript
var state = client.appState('com.zhiliaoapp.musically');
if (state.value !== 4) {
  client.session('com.zhiliaoapp.musically');
}

参见 client.appCurrent

client.appCurrent#

当前在前台的 App 的信息。

typescript
client.appCurrent(): { bundleId: string; name: string; pid: number };

返回值

类型描述
{ bundleId, name, pid }前台 App 的 Bundle ID、名字和进程号。

示例

javascript
var app = client.appCurrent();
logi(app.bundleId);

参见 client.appState

isAppInstalled#

这台设备上装没装某个 App。

typescript
isAppInstalled(bundleId: string): boolean;

参数

参数名类型是否必填默认值描述
bundleIdstring是—App 的 Bundle ID,例如 com.apple.Preferences(设置)。

返回值

类型描述
boolean装了返回 true(不管开没开),没装返回 false。

异常

异常类型触发条件
WDAErrorINVALID_ARGUMENTbundleId 没写或不是文字。

注意事项

  • 查不了(比如设备上的自动化服务没响应)会报错,不会当成「没装」返回 false,免得脚本走错分支。

示例

javascript
if (!isAppInstalled('com.zhiliaoapp.musically')) {
  loge('TikTok is not installed');
  return false;
}
client.session('com.zhiliaoapp.musically');

参见 appList、client.appState

appList#

现在正在运行的 App(前台和后台)。不是「装了哪些 App」,问装没装用 isAppInstalled。

typescript
appList(): { pid: number; bundleId: string }[];

返回值

类型描述
{ pid, bundleId }[]每个运行中的 App 的进程号和 Bundle ID。

示例

javascript
var apps = appList();
for (var i = 0; i < apps.length; i++) {
  logi(apps[i].bundleId);
}

参见 isAppInstalled、client.appCurrent