【iOS 18】ロック画面から起動したカメラで撮影した写真を保存する
前回の記事では、ロック画面からカメラ機能へアクセスする方法について解説しました。
前回の記事に引き続き「Build a great Lock Screen camera capture experience」セッションで公開されている内容を解説します。
本記事では、ロック画面の状態から起動したカメラで撮影した写真を、フォトライブラリに保存する方法について解説します。前回の記事とあわせてお読みいただくことで、実際にアプリで動作確認を行いながら、「Build a great Lock Screen camera capture experience」セッションで解説されている内容を段階的に把握していただくことができます。
撮影した写真をフォトライブラリに保存する
ロック画面から起動したカメラで撮影した写真は、フォトライブラリに保存することができます。Locked Camera Capture Extension内でフォトライブラリから読み込むことができる写真やビデオは、ロック画面から起動したカメラで撮影した写真やビデオのみとなります。 ロック画面が解除されると、読み取り権限を持つ全ての写真やビデオを読み込むことができるようになります。
カメラ機能の実装
ロック画面から起動したカメラで撮影した写真やビデオをフォトライブラリに保存するには、写真やビデオを撮影する機能を実装する必要があります。
撮影機能はAVFoundationを使用して実装します。撮影機能の実装に関しては以下の記事でまとめていますので、必要に応じてご参照ください。
前回の記事で作成したXcodeプロジェクトを使用して動作確認を行いたい時は、以下の手順に従ってソースコードを修正することですぐに動作確認を行うことができます。
前回の記事で作成したXcodeプロジェクトを使用して動作確認を行う方法
-
ホストアプリ側の
Info.plist
に、Privacy - Photo Library Usage Description
を追加し、フォトライブラリを使用する理由を明記します。
-
撮影機能と撮影した写真の保存処理を行うクラスを実装
LockedCaptureフォルダ内に以下3つのソースファイルを追加してください。
- 撮影機能と撮影した写真の保存処理を定義したソースファイル
- カメラプレビューを表示するためのヘルパー関数を定義したソースファイル
- ロック画面から起動するSwiftUI Viewを実装
- カメラ画面のSwiftUI Viewを定義したソースファイル
- ロック画面から起動するViewの変更
「LockedCapture.swift」のLockedCaptureViewFinder(session: session)
をLockedCaptureView()
に置き換えて、ロック画面から起動する画面をLockedCaptureView
に変更します。
実行結果
本記事では、ロック画面の状態から起動したカメラで撮影した写真を、フォトライブラリに保存する方法について解説しました。この時点で、Locked Camera Capture Extensionで撮影から保存までの一連の処理を行うことができるようになりました。
次回の記事では、ロック画面から起動したカメラで撮影した写真、をホストアプリ側で取得する方法について解説します。
参考資料
・Build a great Lock Screen camera capture experience
Discussion