質問: タイマー関数を使ってif文を回すなんてことをせずにもっとスマートに書く方法を知りたい。
回答: UIDeviceBatteryStateDidChangeNotificationを使えば状態が変わったときだけ通知を受け取れそうです。 参考: 【Tips】iOSデバイスのバッテリー残量を取得する(Swift対応) ※Swift4ではそのまま動かない場合があるので注意してください