ハイライト
Xcode 12 のシミュレータは、iPad のポインタ入力を直接テストし、ドラッグ アンド ドロップしてファイル イベントをトリガーし、パスを渡すことができます。
simctlプライバシー権限、プッシュ通知、画面録画、ステータスバー、ルート証明書をバッチ制御します。
主要内容
多くの iOS 開発者は、シミュレータを Xcode の実行ウィンドウとみなしています。[実行] をクリックしてインターフェイスを確認し、アクセス許可、プッシュ、画面記録、または証明書に関する問題が発生した場合は、実際のマシンを探します。この習慣はコストがかかります。許可ポップアップに注意し、サーバーに接続してプッシュし、QuickTime を開いてビデオを表示し、スクリーンショットのステータス バーを後処理する必要があります。
このセッションでは、シミュレーターが完全なテスト ツールに変わります。 Xcode 12 では、Xcode と並行して全画面表示され、新しいシミュレートされたデバイスを直接作成する機能が提供されます。また、画像、APNS ファイル、または証明書をドラッグして対応するイベントをトリガーすることもできるため、テスト アクションをさまざまなツールに散在するのではなく、毎日の開発ウィンドウに近づけることができます。
より大きな変更はコマンドラインにあります。simctl当初は手動でクリックする必要があったデバイスのステータスを反復可能なスクリプトに変えることができます。プライバシー アクセス許可の付与と取り消し、ローカル プッシュの送信、画面ビデオの録画、ステータス バーの書き換え、シミュレートされたデバイスへの CA ルート証明書の追加などです。こうすることで、スクリーンショット、バグの再現、UI テストの準備、ネットワーク デバッグをすべて同じ自動化リンクから開始できます。
詳細
(02:50) シミュレーターを使用して iPad ポインターとキーボード入力をテストする
iPadOS がマウスとトラックパッドをサポートすると、アプリはポインタの動き、スクロール、キーボード ショートカット、システム ジェスチャを検証する必要があります。シミュレータ ツールバーはポインタ キャプチャ モードに入ることができ、Mac マウスまたはトラックパッドを iPad シミュレータで処理できるようになります。デモでは、ズーム、スクロール、Command + H、および Command + Tab はすべて iPadOS のルールに従って実行されます。
デバッグ中、シミュレータはウィンドウのフォーカスが外れるか、Xcode ブレークポイントにヒットするとキャプチャを解放し、シミュレータに戻った後に再開します。この詳細により、非常に実用的な問題が解決されます。マウス コントロールを手動で切り替えることなく、ブレークポイントで停止してコードを検査できます。キャプチャを終了するには、デフォルトで Escape を使用しますが、環境設定でコマンドまたは Control-Option を 2 回使用するように変更することもできます。
キーポイント:
- ポインタ キャプチャにより、デスクトップ入力デバイスが iPadOS ルールに従ってアプリケーションに入ることができます。これは、iPad ポインタ適応が実際に利用可能かどうかを確認するのに適しています。
- キーボード キャプチャは個別にオンにできるため、Mac のマウスを使用したままハードウェア キーボード ショートカットをデバッグするのに適しています。
- ブレークポイントがトリガーされると自動的にキャプチャを解放し、シミュレーターと Xcode の間でフォーカスを行き来するコストを削減します。
(10:20) を使用しますsimctl privacy許可ステータスを修正
権限ポップアップは、最初の起動、機能エントリ、および UI テストに影響します。セッションでは、開発者が権限が許可されるか拒否されるかをテストすることが明示的に要求されます。simctl privacyカレンダー、写真、連絡先、場所などの保護されたリソースのアクセス ステータスをコマンド ラインで設定できます。
xcrun simctl privacy booted grant calendar com.example.MyApp
xcrun simctl privacy booted grant photos com.example.MyApp
xcrun simctl privacy booted grant contacts com.example.MyApp
キーポイント:
booted現在開始されているシミュレートされたデバイスを指します。複数のデバイスを同時に起動する場合は、代わりにデバイス名または UDID を使用する必要があります。grantその後にサービス名、次にアプリケーションのバンドル ID が続きます。これは、ターゲットのアクセス許可を事前に付与するために使用されます。- これらのコマンドは、特定の権限状態からテストを開始するための UI テストの準備ステップに配置するのに適しています。
権限を取り消すためにも同じ入り口が使用されます。
xcrun simctl privacy booted revoke calendar com.example.MyApp
xcrun simctl privacy booted revoke all com.example.MyApp
xcrun simctl privacy booted reset all
キーポイント:
revoke単一のサービスをターゲットにすることも、次のサービスを使用することもできますallアプリからすべての権限を一度に取り消します。reset all権限は、最初の認証プロセスを再実行するのに適したデフォルトの状態に復元されます。- 言及されたセッション
simctlパラメーターなしでヘルプを表示できます。完全なサービス リストは、ツールのヘルプ ページに記載されています。
(12:35) プッシュ通知をローカルでトリガーする
シミュレーターは、APNS ファイルをウィンドウにドラッグしてプッシュをトリガーすることをサポートしており、また、simctl pushコマンドラインから送信されます。この機能により、サーバー環境の準備が整うまで待つことなく、プッシュ UI を検証できます。
xcrun simctl push booted com.example.MyApp payload.json
キーポイント:
push最大 2 つのパラメータ (アプリケーション バンドル ID とペイロード ファイル) を受け入れます。- コマンド ラインのバンドル ID は、ペイロード ファイルのターゲット バンドルをオーバーライドします。
- 成功時
simctlコンテンツは出力されず、結果はシミュレートされたデバイスの画面に直接表示されます。
(14:08) を使用しますsimctl io再生可能なビデオを録画する
バグレポート、App Store の映像、社内デモにはビデオが必要になることがよくあります。 Session で指定された方法は、それを直接使用することですsimctl ioシミュレートされたデバイスを記録するには、Simulator.app や追加の画面記録ソフトウェアを起動する必要はありません。
xcrun simctl io booted recordVideo --codec h264 --mask ignored video.mp4
キーポイント:
recordVideo現在実行中のデバイスの画面が指定されたファイルに記録されます。--codec h264より多くのツールで開きやすくするために、デフォルトの HEVC を H.264 に変更します。--mask ignoredデバイスのノッチや角丸マスクをビデオに書き込むことなく、完全な長方形のフレームバッファを記録します。
(16:56) を使用しますstatus_bar安定したスクリーンショットを作成する
App Store のスクリーンショットやデザインのレビューには、安定したステータス バーが必要です。時刻、携帯電話の電波、ネットワークの種類、Wi-Fi の状態が毎回異なると、後でクリーンアップするのに時間がかかります。simctl status_barこの情報は固定できます。
xcrun simctl status_bar booted override --time 12:01 --cellularBars 1 --dataNetwork 3g --wifiMode failed
キーポイント:
overrideシミュレートされたデバイスの上部にあるステータス バーの表示値を上書きします。- 例では時間を次のように設定します
12:01、セルラー信号は 1 つのバーに設定され、データ ネットワークは に設定されます。3g, Wi-Fiが失敗と表示されます。 - デフォルトの状態に戻す必要がある場合、Session から与えられる公式コマンドは次のとおりです。
xcrun simctl status_bar booted clear。
(18:32) シミュレートされたデバイスの信頼チェーンに CA 証明書を追加します
ネットワーク機能をデバッグする場合、開発者は多くの場合、シミュレートされたデバイスがローカルまたはテスト環境の CA を信頼できるようにする必要があります。simctl keychainCA 証明書をデバイスの信頼されたルート ストアに追加できます。
xcrun simctl keychain booted add-root-cert myCA.pem
キーポイント:
- このコマンドでは、有効な CA 証明書ファイル パスを渡す必要があります。
- 証明書をルート ストアに追加した後も、[設定] の [全般]、[バージョン情報]、および [証明書の信頼設定] に移動して、手動で信頼を有効にする必要があります。
- 有効にすると、この CA によって署名された TLS 証明書がシミュレートされたデバイスで適切に機能します。
重要ポイント
固定権限マトリックスの UI テスト起動スクリプト
やるべきこと: 写真、カレンダー、連絡先、位置情報の承認、拒否、リセットの 3 種類のテスト入口を用意します。
実行する価値がある理由: セッションでは、アプリケーションは保護されたリソースをユーザーが許可および拒否するパフォーマンスをテストする必要があると強調しています。simctl privacyこのステータスをコマンドに変換するだけです。
開始方法: テスト前に使用してくださいxcrun simctl privacy booted grant ...またはrevoke ...ステータスを設定して、対応する UI テスト ケースを開始します。
ローカルプッシュ形式の受け入れツール
何をすべきか: デザイン、製品、QA にペイロード フォルダーを指定し、スクリプトをダブルクリックして、シミュレーターでさまざまなプッシュ コピーライティングをプレビューします。
実行する価値がある理由:simctl pushコピーが変更されるたびにサーバーのプッシュ リンクに依存することを避けるために、通知をローカルでトリガーできます。
開始方法: 次を使用して、通知の種類ごとにペイロード JSON を保存します。xcrun simctl push booted com.example.MyApp payload.json現在のシミュレートされたデバイスに送信されます。
提出可能なビデオ複製素材を自動的に生成
対処方法: 画面録画コマンドをバグ テンプレートに接続し、問題が再現されたときに H.264 ビデオを自動的に出力します。
実行する価値がある理由: セッションの説明simctl画面録画は GPU で高速化され、UI の問題、作業の進捗状況、Web ページのプレゼンテーション資料の録画に適しています。
開始方法: を使用しますrecordVideo --codec h264 --mask ignored記録し、完了したらターミナルで Control-C を押し、出力ファイルをチケットに添付します。
スクリーンショットを撮る前にステータスバーを統一する
やるべきこと: App Store のスクリーンショット、デザインドラフトの承認、および回帰スクリーンショット用の固定ステータス バー スクリプトを準備します。
実行する価値がある理由:simctl status_bar時間、信号、ネットワーク、Wi-Fi ステータスを制御して、ラウンド全体でスクリーンショットの一貫性を保つことができます。
開始方法: スクリーンショットを撮る前に実行してくださいstatus_bar booted override, 完了後に公式のclearコマンドを実行してデフォルトの状態に戻します。
ローカル HTTPS デバッグ環境
手順: テスト サーバーの CA 証明書を生成し、それをシミュレーターのルート ストアに追加して、アプリケーションのネットワーク リクエストを確認します。
実行する価値がある理由: セッション ショーsimctl keychain booted add-root-cert、証明書のインストール プロセスを開発スクリプトに組み込むことができます。
始め方:準備myCA.pem、公式コマンドを実行して証明書を追加し、設定の証明書信頼設定で手動で有効にします。
関連セッション
- トラックパッドとマウス入力の処理 — iPad と Mac Catalyst がマウス、トラックパッド、スクロール、ポインター ロックをどのように処理するかについて引き続き詳しく説明します。
- プッシュ通知の入門書 — アラートとバックグラウンド通知を理解してから、
simctl pushローカル認証で使用されます。 - UI テストでの中断とアラートの処理 - 結合
simctl privacy権限ステータスの制御、およびシステム ポップアップを処理できる UI テストの作成。 - アプリで制限された写真ライブラリを処理する - 写真の権限に関する新しい制限を理解したら、シミュレーターを使用して認証と制限されたアクセス パスを確認します。
- Xcode での StoreKit テストの紹介 — 購入プロセスとシミュレーターの自動化を開発サイクルに統合するための、別のタイプの Xcode ローカル テスト環境を学習します。
コメント
GitHub Issues · utterances