AppStore申請時にNSLocationWhenUseUsageDescriptionに対するメールがくる件について

黒河優介 -

■内容について
2018年8月下旬頃から、「AppStoreでiOSアプリを提出した時にアプリ自体は受理されましたが、下記のような英文が来るようになりました」というお問い合わせを複数いただいております。

 

------------------------
Dear Developer,

We identified one or more issues with a recent delivery for your app, "GAME_NAME". Your delivery was successful, but you may wish to correct the following issues in your next delivery:

"Missing Purpose String in Info.plist File. Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSLocationWhenInUseUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.
If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required.
You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy)."

------------------------

■状況について

Unityのバージョンに関係なく、iOSアプリ提出時に上記のメールがApple社より届きます。

内容をかいつまんで説明しますと、「GPSを利用するなら、NSLocationWhenInUseUsageDescriptionに文字列を指定してください。2019年春よりリジェクト対象となりますので、今後はお気をつけください」という内容です。Unity側での変更ではなく、Apple社でのルール変更が行われたものと思われます。

■詳細について

Unityでは LocationServiceというC# APIを用意しています。

このために iOSのCoreLocation.frameworkを含む形でビルドしています。
これまでは CoreLocation.frameworkを含んでいても、GPSの利用がない場合は問題とされていませんでした。
今後はCoreLocation.frameworkを含むのであれば、利用の有無に限らずその用途をplist.infoのNSLocationWhenInUseUsageDescriptionを記述する必要があります。

 

■対策について

1.暫定回避対策について
PlayerSettingsの"Location Usage Description"に何らかの文字列を入れてください。

ここに文字列を入れていただくことで、NSLocationWhenUseUsageDescriptionに文字列が入ることとなります。
GPSを利用するアプリを作成の方はこちらの方法で十分です。

例:「このソフトウェアはLocation APIを使用しません」「This software doesn't call Location API」

 

2.根本対策について

GPSを利用されていない場合、「1.暫定回避対策」は誤魔化している状況ですので、いづれNGとなる可能性が想定されます。
ビルドしたXCodeプロジェクトで下記二つの操作を行うことが、根本対策となります

2-1. XCodeプロジェクトから CoreLocation.frameworkを除外していただく

FrameWorkDelete.png

2-2. iPhone_Sensors.mm から「#import <CoreLocation/CoreLocation.h>」を削除し、それに伴うエラーを修正していただく

 ( 2018.2.1f1にて、修正した EditSample_iPhone_Sensors.mm をサンプルとして添付しましたのでご参考にしてください)

 

■今後について

そもそもの話としては、Unity側にも機能対応を行い この問題に対応するべき内容と認識しております。
まだ対応について未定ですが、わかり次第本記事に追記してまいります。

他にご質問がございましたら、リクエストを送信してください

0 コメント

ログインしてコメントを残してください。
Powered by Zendesk