Dear developer,
We have discovered one or more issues with your recent delivery for “xxxxx”. To process your delivery, the following issues must be corrected:
Missing Info.plist key – This app attempts to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
不合格の直接的理由
アプリがカメラ機能を使用するにもかかわらず xxx-Info.plist にカメラ機能を使用する理由の記載(NSCameraUsageDescription)がない。
不合格の間接的理由
カメラ機能を明示的には使用していないが、組み込んでいるフレームワーク(opencv2.framework)がカメラ機能(AVCaptureDeviceInput)を呼び出す(ことができる)オブジェクトをインクルードしていた。
フレームワーク(バイナリオブジェクト)の中身のチェック方法
1 2 3 4 |
$ nm opencv2.framework/opencv2 | grep AVCaptureDeviceInput U _OBJC_CLASS_$_AVCaptureDeviceInput U _OBJC_CLASS_$_AVCaptureDeviceInput |
AVCaptureDeviceInputがシンボルに含まれることが不合格の理由となっている
カメラアクセス機能を除外してopencv2.frameworkを作成する方法
1. GitHubからソースコードを取得する
1 2 3 |
$ cd ~/<my_working_directory> $ git clone https://github.com/opencv/opencv.git |
- ~/<my_working_directory>は個人の環境に応じて書き換える
- "3.2.0"は必要に応じて書き換える
- Technical Q&A QA1937 Resolving the Privacy-Sensitive Data App Rejection
- Information Property List Key Reference – iOS keys
- OpenCVを組み込んだiOSアプリが“Missing Info.plist key”を理由にAppStore審査不合格
2. ビルドするバージョンをチェックアウトする
1 2 3 |
$ cd ~/<my_working_directory>/opencv $ git checkout refs/tags/3.2.0 |
3. (OpenCVのビルドスクリプトのための)シンボリック・リンクを作成する
1 2 3 |
$ cd / $ sudo ln -s /Applications/Xcode.app/Contents/Developer Developer |
4. カメラアクセス機能(videoio)除外をオプション指定に加えてビルドスクリプトを実行する
1 2 3 |
$ cd ~/<my_working_directory> $ python opencv/platforms/ios/build_framework.py --without videoio ios |