2017/02/15 追記
プッシュ通知を実装するためには
■Info.plistを更新する
#if NOTIFICATION_SYSTEM_ENABLE
// Change value of CFBundleVersion in Xcode plist
var buildKey = "UIBackgroundModes";
plist.root.CreateArray (buildKey).AddString ("remote-notification");
#endif
■定数など
/// <summary>
/// プッシュ通知追加位置に使用する状態
/// </summary>
private enum FindEnum
{
INITIAL = 0,
FIND_CAPABILITIES,
PROVISIONING_STYLE,
NON_CAPABILITIES,
ADD_END
}
/// <summary>
/// entitlementsファイル拡張子
/// </summary>
private const string ENTITLEMENTS_SUFFIX = ".entitlements";
/// <summary>
/// PBXプロジェクトファイルパス
/// </summary>
private const string PBX_PROJECT_FILE_PATH = "/Unity-iPhone.xcodeproj/project.pbxproj";
/// <summary>
/// アプリ名.
/// </summary>
private const string APP_NAME = "アプリ名";
/// <summary>
/// Capabilitiesの発見開始の文字列
/// </summary>
private const string CAPABILITIES_FIND_STRING = "/* Begin PBXProject section */";
/// <summary>
/// Capabilities文字列の1つ上の行を検索するための文字列
/// </summary>
private const string PROVISIONINGSTYLE_STRING = "ProvisioningStyle";
/// <summary>
/// SystemCapabilitiesキー検索用の文字列
/// </summary>
private const string SYSTEMCAPABILITIES_STRING = "SystemCapabilities";
/// XCodeプロジェクト名.
/// Unityでビルドした際のデフォルトターゲット名は"Unity-iPhone".
private const string XCODE_PROJECT_NAME = "Unity-iPhone";
/// iOSのプラグインディレクトリパス.
private const string IOS_PLUGINS_DIR_PATH = "Assets/Plugins/iOS";
/// XCodeのInfo.plistファイル名.
private const string XCODE_INFO_PLIST_FILE_NAME = "Info.plist";
■プッシュ通知設定をXcodeの設定に追加する。
/// <summary>
/// プッシュ通知設定をXcodeの設定に追加する。
/// </summary>
/// <param name="path">Path.=ファイルをreadするパス</param>
private static void AddPushNotificationCapabilities(string path)
{
string projPath = path + PBX_PROJECT_FILE_PATH;
PBXProject proj = new PBXProject ();
proj.ReadFromString (File.ReadAllText (projPath));
List<string> pbxLineList = new List<string> ();
List<string> pbxSaveLineList = new List<string> ();
string[] lines = proj.WriteToString().Split ('\n');
pbxLineList.AddRange (lines);
int loopMax = pbxLineList.Count;
FindEnum FindState = FindEnum.INITIAL;
for(int i = 0; i < loopMax; i++)
{
// XcodeProject保存用リストに追加
pbxSaveLineList.Add (pbxLineList [i]);
if (pbxLineList [i].IndexOf (CAPABILITIES_FIND_STRING) >= 0)
{
FindState = FindEnum.FIND_CAPABILITIES;
}
if ((FindState == FindEnum.FIND_CAPABILITIES) &&
(pbxLineList [i].IndexOf (PROVISIONINGSTYLE_STRING) >= 0))
{
FindState = FindEnum.PROVISIONING_STYLE;
}
if (FindState == FindEnum.PROVISIONING_STYLE)
{
// capabilities文字列が存在しない
if (pbxLineList [i + 1].IndexOf (SYSTEMCAPABILITIES_STRING) < 0) {
// capabilities
pbxSaveLineList.Add ("SystemCapabilities = {");
FindState = FindEnum.NON_CAPABILITIES;
}
else
{
i++;
pbxSaveLineList.Add (pbxLineList [i]);
}
// push add
pbxSaveLineList.Add("com.apple.Push = {");
pbxSaveLineList.Add("enabled = 1;");
pbxSaveLineList.Add("};");
// capabilities文字列が存在しない
if (FindState == FindEnum.NON_CAPABILITIES)
{
// capabilitiesの閉じカッコ
pbxSaveLineList.Add("}");
}
FindState = FindEnum.ADD_END;
}
}
File.WriteAllText(projPath, string.Join ("\n", pbxSaveLineList.ToArray ()));
}
iOSのTeamIDを取得するには、
Apple Developer ProgramのMemberShipより取得
プッシュ通知設定を変えるには、
Unity-iPhone.xcodeproj内のproject.pbxprojを編集
具体的には、下記ファイルを舐めて、無理やり変える。
/Unity-iPhone.xcodeproj/project.pbxprojファイルをリードして、下記のように
project.pbxproj読み込んでループで回す。
string projPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject proj = new PBXProject ();
proj.ReadFromString (File.ReadAllText (projPath));
/* Begin PBXProject section */
以降の
ProvisioningStyle
の文言を探し、次の行に
SystemCapabilities
があるかチェック
なければ
SystemCapabilities = {
の文言を追加、閉じカッコも忘れず。
そして、SystemCapabilitiesのカッコの間に下記を追加
com.apple.Push = {
enabled = 1;
};
これでいけるはず・・・・
下記URLを参考
https://teratail.com/questions/52234