UnityでiOS向けのビルド時に、RequiredDeviceCapabilityを追加する方法。

RequiredDeviceCapabilityを正しく設定していないと、Appleにリジェクトされてしまうことは、広く知られている。

例えば、アプリに静止画を撮影する機能がある場合、このRequiredDeviceCapabilityに「still-camera」を追加してやらないといけない。

RequiredDeviceCapabilityは正しく設定されていなくても、ビルドに失敗しないし、Validationも通過する。だからこそ、リジェクトされてから気づくわけで、こういう作業は特に自動化するメリットが大きいだろう。

そこで、PostProcessBuildPlayerを利用し、Unityからのビルド時にInfo.plistを書き換えて、RequiredDeviceCapabilityを編集する関数を作成してみた。

:::python
def process_plist(plist_filepath):
  pl = plistlib.readPlist(plist_filepath)
  new_settings = {"still-camera"}
  if "UIRequiredDeviceCapabilities" in pl:
    pl["UIRequiredDeviceCapabilities"].extend(new_settings)
  else:
    pl["UIRequiredDeviceCapabilities"] = [new_settings]
  plistlib.writePlist(pl, plist_filepath)

Info.plistのパスを与えてやると、Info.plistに「still-camera」を追記してくれる。ちなみにplistlibを利用しているので、インポートしておく必要が有る(当たり前のように書いてはいるが、plistlibの存在は今回はじめて知った…)。