デバイス操作
AppForceps はコンテナの中身を編集するだけでなく、デバイスそのものへ働きかけられます。動作確認のたびに手で打っていたコマンドを、保存して 1 クリックで撃てるようにします。
ディープリンク
よく使う URL を保存して 1 クリックで開きます。カスタムスキームでも Universal Link でも同じ操作です。
- iOS シミュレータ、iOS 実機、Android のいずれにも送れます。
- URL に {ID} のようなプレースホルダを書くと、送信時に値を訊きます。1 つの URL を使い回して毎回違う値を渡せます。
- Universal Link (https) はアプリ側に associated domains と AASA が必要です。設定が無いと Safari が開くだけで、送信自体は成功します。
プッシュ通知
APNs ペイロードを保存して 1 クリックで送ります。送信先によって経路が 2 つあります。
- iOS シミュレータへ直接送れます。実機と Android へは Firebase Cloud Messaging 経由で送ります。
- ペイロードは保存時と送信時に検査します。送ってから形式の誤りに気付く、ということが起きません。
- アプリが通知を許可していないと、送信は成功しても画面には何も出ません。この状態は送信側から判定できないため、画面に注意書きを出しています。
- Firebase Cloud Messaging の資格情報と登録トークンは共有ファイルに保存しません。端末ごとの設定として持ちます。
プリセットの共有
- 保存先は設定で変えられます。リポジトリ内のパスを指定すればチームで共有できます。
- ペイロードは JSON オブジェクトとして保存するので、git の diff がそのまま読めます。
- アプリごとに絞り込めるため、1 つのファイルに複数アプリ分を入れられます。
Keychain
シミュレータ上のアプリが保存した Keychain アイテムを一覧して編集します。アプリ自身が読むのと同じ内容が見えます。
- アプリが起動している必要があります。有効にした直後は一度アプリを再起動してください。
- 編集できるのは値と accessible だけです。他のアプリの Keychain や、対象アプリの access group の外は見えません。
- 値は UTF-8 として読めればそのまま表示・編集できます。読めないものは hex 表示に倒します (バイナリを文字化けしたテキストとして書き換える事故を防ぐため)。
- 書き込み前の状態に戻せます。ただしアプリがメモリに値を保持していれば、次に読むまで変更に気付きません。

カメラ
シミュレータにはカメラが実在しないため、撮影を伴う画面をそのままでは確認できません。AppForceps は Mac 側の映像をシミュレータのカメラとして見せます。
- 映像のもとには Mac のカメラ、画像ファイル、動画ファイルを選べます。
- QR コードやバーコード、顔の検出は Mac 側で行い、結果をアプリへ配送します。
- Android エミュレータにも設定できます。反映は次回起動時です。


プライバシー権限
写真やマイクなどの権限を、アプリを操作せずに切り替えます。許可済みと未許可を行き来しながら画面を確認するときに使います。
iOS シミュレータで切り替えられる権限
calendarcontacts-limitedcontactslocationlocation-alwaysphotos-addphotosmedia-librarymicrophonemotionreminderssiri
- カメラの権限だけは切り替えられません (iOS が対応していないため)。
- Android は対象アプリが要求している権限だけを一覧します。要求していない権限は許可できません。
クラッシュレポート
選択中のアプリのクラッシュログ (.ips) を新しい順に絞り込みます。全プロセス分が混ざる DiagnosticReports から探す手間だけを引き受けるもので、中身は Finder から Xcode などへ渡してください。**iOS シミュレータ専用**です (実機は Xcode の Devices、Android は logcat や各種クラッシュ収集サービスで確認してください)。