iOS 17+ で Custom URL Scheme の確認ダイアログを開発フローで自動承諾する
Swift
iOS
simctl
iOS 17 以降、外部から custom scheme で起動するたびに「"AppName" で開きますか? [キャンセル / 開く]」の OS 確認ダイアログが必ず出る。xcrun simctl openurl でも例外なく出るため、CLI/AI が連続で deep link テストする時にブロッキングする。
回避策:
- 完全回避: Universal Links (apple-app-site-association ホスティング + Associated Domains) に切り替えれば確認なしで開ける。ただし開発環境で実装するのは over-engineering
- 実用的対処: Swift CGEvent で「開く」ボタンを自動クリックするヘルパースクリプト化
「開く」のスクリーン絶対座標は Simulator window 位置から計算可能。ダイアログは画面中央付近に出るので window 中心 ±α で狙える。AppleScript click at でも反応するため、Swift CGEvent でなくても OK。
参考: 同種の確認ダイアログは Safari からの起動でも出るが、こちらは「常に許可」のチェック有り。simctl 経由は記憶されない。