新たな ARアプリを Google PlayApp Storeからリリースしました。Always with Merlion /Singaporeと言います。Unityの AR Foundation を使用しています。

これを App Storeへ申請する際に一度 Rejectを受けました。それは以下のような理由です。

During review, we found that your app includes TrueDepth APIs. However, we were not able to locate any features in your app that use TrueDepth APIs.

要は、TrueDepth API の機能をアプリで使ってないのに、ライブラリを含んだ形でビルドされています とのこと。
Unity_Error_97
対応策も Apple側から提示されています。
TrueDepth APIの機能を使わないのであれば、そのライブラリを削除しなさい と。


【原因】

この ARアプリは Unityの AR Foundationを使用しています。AR Foundationを使用する際、通常以下のパッケージを Package Managerからインストールして利用します。

・AR Foundation
・AR Subsystems
・ARCore XR Plugin
・ARKit Face Tracking
・ARKit XR Plugin

Unity_Error_98

ここで問題となったのが、ARKit Face Trackingパッケージです。
Unity_Error_99

Face Trackingの機能を使用する際に利用するパッケージとなります。(TrueDepth APIを用いての詳細な Trackingに必要なようで、人の体や顔、手等を認識して Occlusionさせるだけなら必要ないようです。)

Apple側は Face Trackingのような TrueDepth APIを使用する機能に対してけっこう敏感になっているようです。理由は個人情報保護のためかと思います。まあ仕方ないですね。
そして、多くの方が同じ境遇になっているようですね。日本語のものは見つけられませんでしたが、英語サイトではけっこく同じような状況の方がいるようです。


【解決法】

単純に Unity上でこのパッケージ「ARKit Face Tracking」を削除(Remove)します。
具体的には、 以下のメニューから Package Managerを立ち上げます。

Window > Package Manager

Unity_Error_100

Package Managerの左側からインストール済みの「ARKit Face Tracking」を選択して、「Remove」ボタンをクリックします。
Unity_Error_101

無事に削除されました。
Unity_Error_102

そして、ここからが重要なのですが。
ビルドする際、Android向けへのビルドは ARKitは関係ないので全く問題はありません。
しかし、iOS用にビルドする際にエラーが出てしまいます
Unity_Error_103

Assets/Scripts/ARKitBlendShapeVisualizer.cs(47,5): error CS0246: The type or namespace name 'ARKitFaceSubsystem' could not be found (are you missing a using directive or an assembly reference?)

ここまで今回最初に示した App Storeからの Rejectから入っている人もいれば、このエラーから情報を探している人もいると思うので、ここからは次回に引き継ごうと思います。




Sponsored Link