URLスキームを追加したかったので書いた。
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using UnityEngine;
/// <summary>
/// Unity iOSビルド後にUrlSchemeを追加する為のPostprocessor
/// </summary>
public class UrlSchemePostprocessor
{
/// <summary>
/// ビルド後の処理( Android / iOS共通 )
/// </summary>
[PostProcessBuild(1)]
public static void OnPostProcessBuild( BuildTarget target, string path )
{
// iOSじゃなければ処理しない
if ( target != BuildTarget.iOS )
{
return;
}
AddUrlScheme( path );
}
/// <summary>
/// URLスキームを追加します
/// </summary>
/// <param name="path"> 出力先のパス </param>
public static void AddUrlScheme( string path )
{
var plistPath = Path.Combine( path, "Info.plist" );
var plist = new PlistDocument();
// 読み込み
plist.ReadFromFile( plistPath );
// ほぼ定型文
var urlTypeArray = plist.root.CreateArray( "CFBundleURLTypes" );
var urlTypeDict = urlTypeArray.AddDict();
var urlSchemeArray = urlTypeDict.CreateArray( "CFBundleURLSchemes" );
// URLスキームを追加
urlSchemeArray.AddString( "hogehoge" );
urlSchemeArray.AddString( "fugafuga" );
// 書き込み
plist.WriteToFile( plistPath );
}
}
こんな感じでPostProcessBuild時にinfo.plistに対してUrlSchemeが複数書き込みできます。
以上。