録画機能が追加されます!
先日公開された iOS 11 には、画面の録画機能「 Screen Recording (スクリーンレコーディング)」が標準で搭載されます!
今までは、画面の動画を収録する場合、 mac に lightnig ケーブルで接続して「 QuickTime Player 」を使って録画する方法がありましたが、これからは iPhone / iPad 単体で録画できるようになります!
また、録画状態をプログラムから検知する方法も取り上げます。とても便利な機能なので、しっかり覚えて使っていきましょう!
まずは準備しよう
Screen Recording 行下準備として、まずは録画ボタンを表示させる必要があります。
「設定」>「コントロールセンター」>「コントロールをカスタマイズ」を選択し、「画面収録」の「+」ボタンをタップしてください。「画面収録」が「含める」側に移動しますね!これだけで準備完了です!
それでは、コントロールセンターを表示してみましょう。画面録画ボタンが追加されています。
録画してみよう
では、このボタンを押して、画面を録画してみましょう。録画ボタンがカウントダウンを始めて、録画がスタートします。録画中は、ステータスバーが赤く光ります。
録画を停止する場合は、ステータスバーをタップするか、再度コントロールセンターで録画ボタンをタップします。
収録が終わると、動画ファイルが「写真」アプリに保存されていますので、確認してみましょう。
プログラムで録画状態を確認しよう
さてさて、こんなに簡単に、しかも誰にでも録画ができてしまうとなると「録画機能を使われたら困る!」、「録画中かどうかを判定して処理を分けたい」という開発者さんもいるかもしれないですね。
ですので、録画機能の使い方を覚えたら、次はアプリから「録画中かどうか?」を検知してみましょう。
任意のタイミングで録画をチェック
まずは、ボタンを押したタイミングで「録画中かどうか?」を確認する方法です。
@IBAction func tapButton(_ sender: Any) { // 録画中かどうかのステータス. if UIScreen.main.isCaptured { print("録画中です") } else { print("録画中ではないです") } }
このように UIScreen#isCaptured
を利用することで、現在の録画ステータスを確認することができます。
録画の開始・終了をチェック
任意のタイミングではなく、録画が始まったことを検知、もしくは終了したことを検知するには、 NSNotification を利用します。
override func viewDidLoad() { super.viewDidLoad() // 録画状態の変更を監視. NotificationCenter.default.addObserver( self, selector: #selector(captured(_:)), name: NSNotification.Name.UIScreenCapturedDidChange, object: nil ) } @objc func captured(_ notification: NSNotification) { if UIScreen.main.isCaptured { print("録画が始まりました") } else { print("録画が終わりました") } }
このように NSNotification.Name.UIScreenCapturedDidChange
を監視することで、録画の開始と終了を検知することができます。
まとめ
iOS 11 から利用可能になった Screen Recording 機能ですが、デバッグや操作記録にとても便利そうですね!積極的に使っていきたいところです。
また、新たに追加された API を利用することで、録画状態の確認も行うことができます。アプリの要件によっては、録画状態を確認する必要があると思いますので、このあたりを参考に実装してみてください。