SwiftでSimulatorStatusMagicを使ってみた

FastlaneのSnapshotでScreenshotを撮影していく際にバッテリー残量だったりキャリアが表示されてしまっていたりする場合、それをAppStoreに載せるのはよろしくありません。
そこでSimulatorStatusMagicと言うライブラリがあるので使ってみることにしました。

cocoapodで入れる

公式ドキュメントを読むとcocoapodで入れてdebugにすることが推奨されているようです。

pod 'SimulatorStatusMagic', :configurations => ['Debug']

使い方

キャリア名

SDStatusBarManager.sharedInstance().carrierName = ""

時間

SDStatusBarManager.sharedInstance().timeString = "18:07"

bluetoothの表示

SDStatusBarManager.sharedInstance().bluetoothState = .hidden

バッテリー詳細表示

SDStatusBarManager.sharedInstance().batteryDetailEnabled = false

SimulatorStatusMagicの設定を有効にする

SDStatusBarManager.sharedInstance().enableOverrides()

SimulatorStatusMagicの設定を無効にする

SDStatusBarManager.sharedInstance().disableOverrides()

UITestでの使用例

以下のメソッドをテスト前に呼び出す。

private func cleanStatusBar() {
        SDStatusBarManager.sharedInstance().carrierName = ""
        SDStatusBarManager.sharedInstance().timeString = "10:09"
        SDStatusBarManager.sharedInstance().bluetoothState = .hidden
        SDStatusBarManager.sharedInstance().batteryDetailEnabled = false
        SDStatusBarManager.sharedInstance().enableOverrides()
    }

そのままだとステータスバーの設定が残ってしまう可能性がある為tearDownで解除しておく

    override func tearDown() {
        SDStatusBarManager.sharedInstance().disableOverrides()
        super.tearDown()
    }

参考文献

SimulatorStatusMagic

Automate iOS screenshot with clean status bar and upload result to firebase hosting 🤖