本文へスキップ
CloudClick iOS

Apps & sessions

Open, switch to and terminate apps, and query their state. Opening and switching both go through client.session, which also sets up the automation session.

client.session#

Open (or switch to) the app and set up an automation session for it. Usually called at the top of a script.

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

パラメータ

パラメータ名型必須既定値説明
bundleIdstringはい—The app's bundle ID, for example com.apple.Preferences (Settings).

戻り値

型説明
ClientA client bound to the new session. You rarely need it: keep using the global client, which follows the current session on its own.

注意事項

  • A locked device is unlocked first (only works without a passcode).

例

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

関連項目 client.appTerminate、client.appCurrent

client.appTerminate#

Terminate the app's process. To start every round from the app's initial state, terminate it and then open it with client.session.

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

パラメータ

パラメータ名型必須既定値説明
bundleIdstringはい—The app's bundle ID, for example com.apple.Preferences (Settings).

戻り値

型説明
objectThe raw WDA response; rarely needed.

例

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

関連項目 client.session

client.appState#

Query the app's run state.

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

パラメータ

パラメータ名型必須既定値説明
bundleIdstringはい—The app's bundle ID, for example com.apple.Preferences (Settings).

戻り値

型説明
{ value: number }value is the state: 1 not running, 2 suspended in the background, 3 running in the background, 4 in the foreground.

例

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

関連項目 client.appCurrent

client.appCurrent#

Information about the app in the foreground.

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

戻り値

型説明
{ bundleId, name, pid }The foreground app's bundle ID, name and process ID.

例

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

関連項目 client.appState

isAppInstalled#

Whether an app is installed on this device.

typescript
isAppInstalled(bundleId: string): boolean;

パラメータ

パラメータ名型必須既定値説明
bundleIdstringはい—The app's bundle ID, for example com.apple.Preferences (Settings).

戻り値

型説明
booleanTrue when installed (running or not), false when not.

例外

例外発生条件
WDAErrorINVALID_ARGUMENTbundleId is missing or not a string.

注意事項

  • If the check itself fails (for example the device's automation service does not answer) it throws instead of returning false, so the script does not take the wrong branch.

例

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

関連項目 appList、client.appState

appList#

The apps running right now, in the foreground or background. This is not the list of installed apps; use isAppInstalled for that.

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

戻り値

型説明
{ pid, bundleId }[]The process ID and bundle ID of each running app.

例

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

関連項目 isAppInstalled、client.appCurrent