(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

Unity製Oculus Go用アプリが「マイクの権限を削除してください」とリジェクトされた時の対処法【Unity】【Oculus Go】【リジェクト】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2017.4.7f1


はじめに

Oculus Go用のアプリをOculus Storeにアプリをリリースする際は、

3つのレビューをパスする必要があります。

テクニカルレビュー:技術的ガイドラインを満たしているか審査
コンテンツレビュー:アプリの洗練度、有用性の審査
パブリッシングレビュー:リリース日、価格の調整


今回はその最初のレビュー、

テクニカルレビューでUnity製アプリが以下のようなリジェクトをされた時の話です。

The app must request the minimum number of permissions required to function.

Google翻訳
アプリは、機能するために必要な最小限のアクセス許可数を要求する必要があります。

Your app is asking for excessive user permissions or using user permissions inappropriately. - access microphone Please remove all unnecessary permissions. If your app requires any of the permissions listed above please explain in detail why your app needs the permission in order to function.

Google翻訳
あなたのアプリは過度のユーザー権限を要求しているか、ユーザー権限を不適切に使用しています。 - アクセスマイクすべての不要な権限を削除してください。 あなたのアプリが上記の権限を必要とする場合は、機能するためにあなたのアプリがなぜパーミッションを必要としているのかを詳しく説明してください。

f:id:kan_kikuchi:20181004184646j:plain


なお、知らないと結構な確率でひっかかるので、

これから開発予定の方も一読しておく事をオススメします。

マイクのアクセス

上記の通り「マイクの権限を削除してください(使うなら説明して)」というリジェクト内容ですが、

申請したアプリでマイクは使ってませんし、権限を設定した覚えもありませんでした。


実際にプロジェクト内に一つしかないAndroidManifestを確認してみても、


f:id:kan_kikuchi:20181004185547j:plain


以下のようなマイクの権限を要求する記述はありませんでした。

<uses-permission android:name="android.permission.RECORD_AUDIO" />


しかし、アプリで実際に使われるTemp/StagingAreaのAndroidManifestには、


f:id:kan_kikuchi:20181004185739j:plain


確かにマイクの権限を要求する記述がありました。


f:id:kan_kikuchi:20181004185919j:plain


なお、Temp/StagingAreaのAndroidManifestはビルド時にプロジェクトに含まれてるAndroidManifestや

プログラムを元に自動で生成されるものです。


この「プログラムを元に」という部分が厄介で、例えば

マイクを使うプログラムがあれば、実際にそれを使っていなくとも、権限を付与しまうのです


とは言え、最初に言った通り、やはりマイクを使ったプログラムに心当たりがありませんでした。


原因

心当たりが無いということは自分以外が書いたプログラムが原因という事になります。(忘れていなければ)

そして、犯人はなんとOculus公式が出してる「楽にOculus Go周りの実装が出来るアセット」

Oculus Integrationだったのです。



肝心のマイクを使ってるコードは以下の6つ。

  • Assets/Oculus/Platform/Scripts/IMicrophone.cs
  • Assets/Oculus/Platform/Scripts/LivestreamingMicrophoneStatus.cs
  • Assets/Oculus/Platform/Scripts/MicrophoneInput.cs
  • Assets/Oculus/Platform/Scripts/MicrophoneInputNative.cs
  • Assets/Oculus/LipSync/Scripts/OVRLipSyncMicInput.cs
  • Assets/Oculus/VoiceMod/Scripts/Helpers/OVRMicInput.cs


f:id:kan_kikuchi:20181004190526j:plain
f:id:kan_kikuchi:20181004190538j:plain
f:id:kan_kikuchi:20181004190544j:plain


なお、これらを消すとCAPI.csでエラーが出るので、コメントアウトや削除をして対応しましょう。


f:id:kan_kikuchi:20181004190628j:plain


実際にこれらを消してビルドした後に

Temp/StaginAreaのAndroidManifestを確認したら、マイクの権限がなくなっていました。


おわりに

Oculusにリジェクトされた理由がOculus製のアセットというオチでした。


なお、この後に「理由は教えられないけど、リジェクト」という鬼のような対応をされるのですが、

それはまた別のお話↓





参考