Xcodeシミュレーター管理コマンド

こちらが、Xcodeがローンチしたシミュレーターを管理するために実行できるコマンドです。

これらのコマンドは、あなたの端末で実行してください。この記事は、あなたが `iPhone 11 Pro Max` と名付けられたシミュレーターを実行していると仮定しています。

## 時刻を変更する

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --time '9:41'
```

## セルラーネットワークを変更する

Wi-Fiに切り替える

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --dataNetwork 'wifi' 
```

 Wi-Fiの信号強度を制御する

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --wifiBars 0
xcrun simctl status_bar "iPhone 11 Pro Max" override --wifiBars 1
xcrun simctl status_bar "iPhone 11 Pro Max" override --wifiBars 2
xcrun simctl status_bar "iPhone 11 Pro Max" override --wifiBars 3
```

3G に切り替える

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --dataNetwork '3g'
```

4G に切り替える

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --dataNetwork '4g'
```

LTE に切り替える

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --dataNetwork 'lte'
```

セルラーネットワークの信号強度を変更する

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --cellularBars 0
xcrun simctl status_bar "iPhone 11 Pro Max" override --cellularBars 1
xcrun simctl status_bar "iPhone 11 Pro Max" override --cellularBars 2
xcrun simctl status_bar "iPhone 11 Pro Max" override --cellularBars 3
xcrun simctl status_bar "iPhone 11 Pro Max" override --cellularBars 4
```

## 明/暗 モードを切り替える

### シミュレーター内

- シミュレーターの設定アプリケーションを開く
- `Developer` を開く

<img width="300" alt="article_01" src="https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_01.png">

- `Dark Appearances` をオンにする

<img width="300" alt="article_02" src="https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_02.png">

現在シミュレーターはダークモードになっています

<img width="300" alt="article_03" src="https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_03.png">

### Xcodeインターフェース内

- シミュレーターでアプリケーションを起動する
- `Xcode` プログラムツールバーで `Environmental overrides` のアイコンを探す
- `Interface Style` の隣のスイッチをオンにする

<img width="500" alt="article_04" src="https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_04.png">

## バッテリーの状態を変更する

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --batteryState 'charging'
xcrun simctl status_bar "iPhone 11 Pro Max" override --batteryState 'charged'
xcrun simctl status_bar "iPhone 11 Pro Max" override --batteryState 'discharging'
```

## バッテリー残量を変更する

```bash
xcrun simctl status_bar "iPhone 11 Pro Max" override --batteryLevel 0
xcrun simctl status_bar "iPhone 11 Pro Max" override --batteryLevel 100
```

## シミュレータに画像をアップロードする

シミュレータのウィンドウに直接画像ファイルをドラッグ＆ドロップすることができます。

## プッシュイベントのシミュレーション

まずは、ユーザーの通知を許可した状態で空白のiOSプロジェクトを開始します。iOSのターゲットのバンドルIDを、`com.demo.notification` として仮定します。

### `payload.apns` ファイル

``payload.apns`` という名前の空のファイルを作成します。このファイルは、通知の送信先となるアプリのターゲットとその通知内容をシミュレーターに指示します。

この例では、`Hello, World` というシンプルなメッセージを、バンドルIDが `com.demo.notification` のアプリに送信するとします。

```swift
//payload.apns
{
    "Simulator Target Bundle": "com.demo.notification",
    "aps": {
        "alert": {
            "body": "ネコノヒー 🐱🐱🐱",
            "title": "こにちわ！"
        }
    }
}

```

### このファイルをシミュレーターにドラッグアンドドロップします

1. シミュレータ上でアプリを実行します

2. 通知の許可を承認します

3. このファイルをFinderからシミュレータにドラッグアンドドロップします

![article_05](https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_05.gif)

## キャリア名を変更

( `iPhone 8 Plus` という名前のシミュレーターを実行していると仮定)

```shell
xcrun simctl status_bar "iPhone 8 Plus" override --operatorName 'ネコ Mobile' --cellularMode active
```

<img width="500" alt="article_06" src="https://mszmagic.s3-ap-northeast-1.amazonaws.com/qiita_article_xcrun_06.png">

## スクリーンショット

キーボード上の `Command-s` キーを押すことができます。スクリーンショットはデスクトップ上に保存されます。

## 動画を録画

```shell
xcrun simctl io booted recordVideo appVideo.mov
```

このコマンドは現在実行中のシミュレーターの動画をスクリーンレコード（画面録画）し、 `control-C` を押すとファイル `appVideo.mov` を保存します

## マウスカーソルを表示

```shell
defaults write com.apple.iphonesimulator ShowSingleTouches 1
```

# GUI app

Xcodeシミュレータを操作するのに役立つGUIアプリがあります

[twostraws/ControlRoom: A macOS app to control the Xcode Simulator.](https://github.com/twostraws/ControlRoom)

##
https://stackoverflow.com/a/60853266
https://stackoverflow.com/a/57989733
https://stackoverflow.com/a/41141801
xcrun simctl status_bar "iPhone 8 Plus" override --help 

---

:relaxed: [Twitter @MszPro](https://twitter.com/MszPro)

:sunny: [私の公開されているQiita記事のリストをカテゴリー別にご覧いただけます。](http://mszpro.com/ioskiji/)
<img width="150" src="https://cdn.mszmagic.com/static-web-content/AppClipImage_small.png">