Unity から出力したプロジェクトを iOS シミュレータで動かして位置情報取得する際の設定

久々に初期設定からやる機会があり、その際に詰まったところのメモ。 動かせただけで細かい確認はしてないので他の方法もあるかも知れない。(というかありそう)

確認環境

  • Unity 2020.3.4f1
  • Xcode 12.4

Unity で行う設定

文言設定

Build Settings > Player Settings > Other Settings > Location Useage Description で位置情報取得時にアプリで表示する文言を設定する。ただし、後述の通り Xcode でも設定が必要。

ターゲットの設定

まず、Build Settings > Player Settings > Target SDKSimulator SDK を選択したうえでビルドして xcodeproj を出力し、一度シミュレータを起動する。 ここの目的はシミュレータをターゲットとすることで以下のファイルを出力すること。最初から実機向けにビルドした場合はシミュレータ起動前にエラーとなった。

Library/Developer/Xcode/DerivedData/Unity-iPhone-hogehoge/Build/Products/ReleaseForRunning-iphonesimulator/UnityFramework.framework

その後、Target SDKDevice SDK にしたうえでもう一度ビルドする。(目的は後述の通り Capabilites 設定のため)

Xcode で行う設定

ビルド設定

初期状態だとデバイス向きでシミュレータが選択できないため、ビルド設定を変更する。 画面左の Unity-iPhone を選択、TARGETS で Unity-iPhone を選択、Build Settings タブを選択する。 Architectures を Standard ArchitecturesSupported PlatformsiOS に変更する。

(図は変更後の状態)

f:id:ryu_rand:20210424161342p:plain

文言設定

先ほどの状態から Info タブを選択する。 Unity で設定した文言が反映されている行があるがこれだけでは不足している。 選択した項目の + ボタンで項目を増やし、Privacy - Location Always and When In Use Usage Description を追加する。 大文字の P で入力を始めると候補が一覧に出るため選択しやすい。 文言は埋まっていればなんでもよい。

f:id:ryu_rand:20210424163210p:plain

Capabiliies の設定

位置情報をバックグラウンドでも取得することをあらかじめ設定する必要がある。 先ほどの状態から Signing&Capabilities タブを選択し、+ Capabilities をクリックして Background Modes を追加する。

Target SDKSimulator SDK にしていた場合、Signing&Capabilities タブが表示されていなかった。

f:id:ryu_rand:20210424160836p:plain