UnityでビルドしたXcodeのcapability設定(Push Notifications)を自動でONにする

前提条件

push通知まわりのいろいろな設定は終わっていて、ビルドするたびにXcodeを編集(Push NotificationsをONに)するのが面倒な人向けです。

Xcode APIの取得

https://bitbucket.org/Unity-Technologies/xcodeapi より、stableブランチのzipをダウンロード。
ダウンロードしたzipを展開します。
Xcodeフォルダ内のPropertiesを削除します。

Unity側の作業

先ほどDLし解凍した中にあるXcodeフォルダを
Project/Editor の中にコピー(ドラッグアンドドロップ)します。
※Editorフォルダが無い場合は作成してください。
Editorフォルダ内でC#スクリプトを作成します。今回は名前を”PostProcessBuild”とします。

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.IO;
public class PostProcessBuild {
	[PostProcessBuild]
	public static void AddCapability(BuildTarget buildTarget, string path)
	{
		if(EditorUserBuildSettings.activeBuildTarget != BuildTarget.iOS)
		{
			return;
		}
		string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
		var proj = new PBXProject();
		proj.ReadFromString(File.ReadAllText(projPath));
		//string target = proj.TargetGuidByName(TargetGroup);
		string target = proj.TargetGuidByName(PBXProject.GetUnityTargetName());
		proj.AddCapability(target, PBXCapabilityType.PushNotifications);
		File.WriteAllText(projPath, proj.WriteToString());
	}
}

unity_project_xcodeapi
Projectのフォルダ構成はこんな感じです。
iOS用のビルドを行い、Xcodeを開いた時に”PushNotifications”がONになっていれば成功です!

InAppPurchaseもONにしたい場合

(省略)
proj.AddCapability(target, PBXCapabilityType.PushNotifications); ←の行の下に
proj.AddCapability(target, PBXCapabilityType.InAppPurchase);  ←これを追加
(省略)

PushNotificationsの箇所にInAppPurchaseの設定も追加すればOKです。

環境など

Unity 5.6.1f1
Xcode 8.3.3
上記環境で構築しました。参考までに。