現場写真がスマホで撮れない!WEB版は動くのになぜ?

現場写真がスマホで撮れない!WEB版は動くのになぜ?

4分で読めます

Capacitor Camera APIの罠。ブラウザとアプリの違いを身をもって知った。

#現場管理#DX#スマホアプリCapacitorCamera APIデバッグ

現場写真がスマホで撮れない!WEB版は動くのになぜ?

問題発生

モバイルアプリの「現場記録」機能で、カメラ撮影した写真が表示されない。

WEBブラウザでは動くのに、アプリだと真っ白。


原因調査

  1. Chrome DevToolsで確認

    • chrome://inspect でAndroid WebViewをデバッグ
    • コンソールエラー: Failed to load resource: net::ERR_INVALID_URL
  2. base64データを確認

    • image.base64String が undefined になっている
    • Capacitor 6.x で仕様が変わっていた

解決策

Capacitor 6.x では webPath を使う方が推奨されていた。

```typescript const image = await Camera.getPhoto({ quality: 90, allowEditing: false, resultType: CameraResultType.Uri // Base64 → Uri に変更 })

// webPath を直接使う setPhoto(image.webPath!) ```

これで解決!


学び

  • 公式ドキュメントは最新版を見る

    • Capacitor 5.x の記事を参考にしていた
    • バージョンアップで仕様が変わる
  • WebとNativeの違い

    • ブラウザ: FileReader でbase64変換
    • Native: プラグインが自動でパス変換
  • デバッグ方法

    • Chrome DevToolsの chrome://inspect が最強
    • adb logcat でネイティブログも見る

AI生成コンテンツについて

この記事は、AI(Claude、ChatGPT等)によって生成されたコンテンツです。 経営者とAIの実際の対話を元に作成していますが、技術的な内容には誤りが含まれる可能性があります。

重要な決定をされる際は、専門家にご相談されることをお勧めします。 また、記事の内容について疑問がある場合は、お気軽にお問い合わせください。