LoginSignup
0
1

More than 1 year has passed since last update.

【monaca/iOS】<input type="file" accept="image/*">でカメラがクラッシュする原因

Last updated at Posted at 2021-02-27



問題:input type="file" accept="image/*"で画像を取得するとき、カメラを起動しようとするとクラッシュする


状況:monacaでマークアップ言語とJavaScriptで開発 Cordovaバージョン10.0.0

結論:クラッシュするのは、monacaのカメラプラグインを有効にしていなかったから。


monacaでオナ禁アプリを作ったのですが、App Store Connectに申請したところ

Apple『カメラを起動した時にクラッシュするぞ。それ直してから出直してこい』

とリジェクトされてしまいました。該当箇所は

<input type="file" accept="image/*">

で画像を取得して表示、ローカルストレージに保存するという機能です。PCだとFinderが呼び出されますが、iOSだとこの画面が出て3つのオプションから選べるという仕様になっています。

IMG_6171.jpg

フォトライブラリから画像を選ぶという使い方を想定していたので実機確認でも「写真を撮る」についてはスルーしてしまっていました(アホ)

で、Appleに指摘されたのは、「写真を撮る」をタップするとクラッシュする、ということについて。

確かに、「写真をとる」を押した瞬間クラッシュします。「フォトライブラリ」と「ブラウズ」はちゃんと動くのに、なんでこれだけ?

目次

1.カメラ操作プラグインを有効にし忘れている
2.カメラ操作プラグインを使う際に気をつけること
3.まとめ

1. カメラ操作プラグインを有効にし忘れている

クラッシュの原因はおマヌケな理由で、それは「カメラ操作のプラグインを有効にしていなかったから」でした。そりゃクラッシュします。monacaの「設定」=>「Cordovaプラグインの管理」=>「camera」を有効にすることで、カメラを使えるようになります。

2. カメラ操作プラグインを使う際に気をつけること

カメラプラグインをオンにしただけでは、別の問題で審査に通らなくなります。

Guideline 4.0 - DesignとGuideline 5.1.1 - Legal - Privacy - Data Collection and Storageに引っかかるためです。

どういうことかというと、カメラプラグインをONにしただけの状態だと、

attachment.Screenshot-0223-114855.png

こんな風に、モーダルの表示が「need camera access to take pictures」と、デフォルトの文章になっています。このモーダルの文章はユーザーがアクセスの許可を判断するにあたって非常に大切な情報でして、デフォルトのままだと、大事な情報を英語で書くなというのと、ユーザーがデータがどのように使用されるか知ることができないという理由で却下されます。

つまりこのモーダルの文章を書き換える必要があります。

どうやるかというと、config.xmlファイルの <edit-config>に以下のような記述があるので、これを書き換えます。

<edit-config target="NSCameraUsageDescription" file="*-Info.plist" mode="merge">
<string>need camera access to take pictures</string>
</edit-config>

この<string></string>の部分です。

ただし、文章はなんでもいいわけではなくて、カメラを必要とする機能を明記し、ユーザーのデータ(ここでは撮影した画像)をどのように使用するかの例を含める必要があります。

わかりにくいと思うので私のアプリの例を出すと、こんな感じに書いておけばOKです。

IMG_A60A7509C0A9-1.jpeg

もっと綺麗な書き方があるだろ!と思われるかもしれませんが、とりあえずこれで審査は通ります。

3. まとめ

・カメラを使おうとするとクラッシュするのは、カメラプラグインがOFFになっているから。
・カメラを使う場合はconfig.xmlにてデータの必要性とその使用目的を明記する必要がある。
・僕のアプリを見ていってくれると喜びます。



オナ禁アプリ↓
kinyoku-100px-icon.png
禁欲エボリューション



初めて作ったアプリ↓
mem-100px-icon.png
文字数制限メモ
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1