ImagePicker を操作すると「Lost connection to device.」とだけ言い残して強制終了するの?|iOS|Flutter
Flutter で写真を取ってくるライブラリに ImagePicker 0.8.7+4 を使っているけど、Android で好調だったから iOS でも使ってみたら、カメラ撮影とギャラリーからの選択のときに「Lost connection to device.」とだけ言い残してアプリが強制終了した…何のログも無しに…どゆこと?
#権限を付与しようね?
ちゃんと公式の Installation に、しかも冒頭に書いてあった。強制終了はこれが原因。我ながら恥ずかしいな…。
Add the following keys to your Info.plist file, located in <project root>/ios/Runner/Info.plist
- NSPhotoLibraryUsageDescription - describe why your app needs permission for the photo library.
- NSCameraUsageDescription - describe why your app needs access to the camera.
カメラ撮影やギャラリーへのアクセスには、ちゃんと権限を付与しないといけなくて、それはスマホ上でユーザに許可を求める仕様になっているよ。
#目的は何て説明する?
で、そのときにユーザへ表示される文言(権限付与の目的)が、開発者の自由記述だから、これは悩んじゃうね。例えば、公式の実装サンプルだと、以下になっているけど。
- <key>NSCameraUsageDescription</key>
- <string>Used to demonstrate image picker plugin</string>
- <key>NSPhotoLibraryUsageDescription</key>
- <string>Used to demonstrate image picker plugin</string>
ちぇっ、これらは真似できない。だって「demonstrate(デモンストレーション)」って言っちゃっているし。
…他に調べた感じだと、英語圏では、
- <key>NSCameraUsageDescription</key>
- <string>Access to take a photo by camera</string>
- <key>NSPhotoLibraryUsageDescription</key>
- <string>Access to pick a photo</string>
「~する為のアクセス」とか。で、日本語圏でやたらに多かったのが、これ、
- <key>NSCameraUsageDescription</key>
- <string>This app requires to add file to your camera</string>
- <key>NSPhotoLibraryUsageDescription</key>
- <string>This app requires to access your photo library</string>
「~必要がある」なんだけど、皆、絶対に誰かのコピペして使っているよね…これさ、カメラの文言、変だよ英語。皆で間違えたのコピペしまくりじゃん。
あとは、こんなのもあった、
- <key>NSCameraUsageDescription</key>
- <string>Camera Library Access Warning</string>
- <key>NSPhotoLibraryUsageDescription</key>
- <string>Photo Library Access Warning</string>
「~へのアクセスに関する警告」って、権限付与の目的を説明できてなくないかな。
#ChatGPT の出番じゃない?
こういう提案こそ ChatGPT の出番だと思うの。
- <key>NSCameraUsageDescription</key>
- <string>Access is required to take a photo by camera</string>
- <key>NSPhotoLibraryUsageDescription</key>
- <string>Access is required to pick a photo</string>
ほうほう、「~するにはアクセス権限が必要です」だってさ。これ採用!
#関連する記事
- カメラで撮影した写真を”アプリのローカル領域”に保存したいの?|File|PathProvider|ImagePicker|Flutter
- ギャラリー(アルバム)の写真を”アプリのローカル領域”に保存したいの?|File|PathProvider|ImagePicker|Flutter
#参照した記事
- Flutter の image_picker が iOS Simulator でクラッシュする時にやったこと
- android - In flutter when camera is opened from image picker the app "Lost connection to device." - Stack Overflow
- flutter - iOS app crashes when opening image gallery using image_picker - Stack Overflow
- [Flutter] 初心者でもプラグインで簡単!カメラと写真を読み込むimage_pickerの使い方 | masa tech blog
- 【5分でわかる】カメラを実装する方法 | Flutter入門
- 【Flutter】2021年11月最新版:ImagePickerの使い方(カメラロールやカメラで撮影したデータを取得)|Flutterラボ|note
- 【Flutter】【Dart】Image Pickerで画像を選択する|Flutterラボ|note
- Flutterで画像の選択方法 - Qiita
- image_pickerについて勉強してみる
#直近に読んでいて面白かった漫画
コメント
コメントを投稿