状況
既にリリース済みのアプリ中に、画像を保存する処理(以下のコード)があります。
基本的には問題なく動くのですが、一部のユーザーから「画像が急に保存できなくなった」と連絡を受けています。
何度試しても私の環境では問題が再現できないのですが、同様の連絡は毎月あるので、どこかに問題があると考えています。
コード
swift
1class Log: NSObject, NSCoding { 2 // store(image: UIImage) が呼ばれる時は、値が必ず入っている。 3 var title: String = "" 4 5 ...... 6 // 画像保存時に呼ばれる。 7 func store(image: UIImage) { 8 // ① jpegData 変換 9 guard let data = image.jpegData(compressionQuality: 1.0) else { return } 10 guard let filePath = self.filePath else { return } 11 12 do { 13 try data.write(to: filePath, options: .atomic) 14 } catch { 15 // ② Firebase Analytics でエラーをトラック(Track.log は自分で書いた関数です) 16 Track.log(.imageError, ["type": "saveImage", "desc": error.localizedDescription]) 17 } 18 } 19 20 private var filePath: URL? { 21 guard let documentURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { 22 // これはトラックされていませんでした 23 Track.log(.imageError, ["type": "imageFilePath"]) 24 return nil 25 } 26 27 return documentURL.appendingPathComponent(title + ".jpg") 28 } 29 30 ...... 31
調査したこと
コード① jpegData 変換にて nil になっていないか
guard let で return される可能性もゼロではないと思うのですが、
カメラで撮った写真、ブラウザから保存した写真など、いくつかのパターンを試しても
問題は確認できませんでした。
** コード② Firebase Analytics でトラックしたエラーの中身は何か**
エラーはトラックされていて、error.localizedDescription の中身は
"The folder “○○○.jpg” doesn’t exist."
- ○○○は、title の値がそれぞれ入っています。
** 特定のOSやデバイスにエラーが集中していないか **
していませんでした。
エラーの発生したユーザーに環境を確認したり、Firebase で上記エラーが
発生したユーザーのOSやデバイスを調査したりしましたが、
特に偏りは見られませんでした。
お願いしたいこと
まだ考慮できていない原因があれば、ご教示いただきたいです。
情報が不十分でしたら追記しますので、コメントをいただけますと幸いです。
なかなか問題が解決せず途方に暮れており、ご助言いただけますと大変助かります。
何卒、よろしくお願いいたします。
あなたの回答
tips
プレビュー