diff --git a/popcorn/Assets/MyGame/Editor.meta b/popcorn/Assets/MyGame/Editor.meta new file mode 100644 index 00000000..84e4f662 --- /dev/null +++ b/popcorn/Assets/MyGame/Editor.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e4c8f8ec66eb4e18bcf59719f1fd2f4f +timeCreated: 1625711049 \ No newline at end of file diff --git a/popcorn/Assets/MyGame/Editor/PostProcessor.cs b/popcorn/Assets/MyGame/Editor/PostProcessor.cs new file mode 100644 index 00000000..80017f71 --- /dev/null +++ b/popcorn/Assets/MyGame/Editor/PostProcessor.cs @@ -0,0 +1,143 @@ +using UnityEngine; +using System.IO; +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.iOS.Xcode; +using System.Collections.Generic; +using System.Xml; + +public static class PostProcessor{ + + private static Dictionary> appTextMap = new Dictionary>() { + { "ja", new Dictionary(){ { "appName", "ポップコーン"}, {"tDescription","許可をすると広告最適化に用いられます。"}, } }, + { "en", new Dictionary(){ { "appName", "Popcorn"}, {"tDescription","This identifier will be used to deliver personalized ads to you."}, } }, + }; + + private static readonly string BUNDLE_URL_NAME = "jp.usaya.popcorn"; + private static readonly string URL_SCHEME = "popcorn"; + + [PostProcessBuild] + public static void OnPostProcessBuild(BuildTarget target, string path){ + if(target == BuildTarget.iOS){ + PostProcessBuild_iOS(path); + } + } + + private static void PostProcessBuild_iOS(string path){ + string projectPath = PBXProject.GetPBXProjectPath(path); + PBXProject pj = new PBXProject (); + pj.ReadFromString(File.ReadAllText(projectPath)); + + var target = pj.GetUnityFrameworkTargetGuid(); + pj.SetBuildProperty (target, "ENABLE_BITCODE", "NO"); + // Enable Modules (C and Objective-C)をYESに設定する + pj.SetBuildProperty(target, "CLANG_ENABLE_MODULES", "YES"); + + // 通知処理対応 + pj.AddFrameworkToProject(target, "UserNotifications.framework", true); + pj.AddBuildProperty (target, "OTHER_LDFLAGS", "-lz"); + pj.AddBuildProperty (target, "OTHER_LDFLAGS", "-lsqlite3"); + pj.AddBuildProperty (target, "OTHER_LDFLAGS", "-ObjC"); + + // info.plist + string plistPath = Path.Combine(path, "Info.plist" ); + //インスタンスを作成 + PlistDocument plist = new PlistDocument() ; + //plistの読み込み + plist.ReadFromFile(plistPath) ; + plist.root.SetBoolean("FirebaseAppDelegateProxyEnabled", false); + // StatusBarをデフォルトで非表示 + plist.root.SetBoolean("UIStatusBarHidden", false); + + PlistElementArray urlTypesArray = plist.root.CreateArray("CFBundleURLTypes"); + PlistElementDict dict = urlTypesArray.AddDict(); + dict.SetString ("CFBundleURLName",BUNDLE_URL_NAME); + PlistElementArray schemesArray = dict.CreateArray("CFBundleURLSchemes"); + // URLスキームを追加 + schemesArray.AddString(URL_SCHEME); + + PlistElementArray QueriesSchemesArray = plist.root.CreateArray("LSApplicationQueriesSchemes"); + QueriesSchemesArray.AddString("twitter"); + QueriesSchemesArray.AddString("fb"); + + // 内部ライブラリの許可 + plist.root.SetString("NSBluetoothPeripheralUsageDescription","Advertisement would like to use bluetooth."); + plist.root.SetString("NSCalendarsUsageDescription","Advertisement would like to create a calendar"); + plist.root.SetString("NSCameraUsageDescription","Advertisement would like to use camera."); + plist.root.SetString("NSLocationWhenInUseUsageDescription","Advertisement would like to use location info."); + + // ATT + PlistElementArray skAdArray = plist.root.CreateArray("SKAdNetworkItems"); + PlistElementDict dictAd1 = skAdArray.AddDict(); + dictAd1.SetString ("SKAdNetworkIdentifier","238da6jt44.skadnetwork"); + PlistElementDict dictAd2 = skAdArray.AddDict(); + dictAd2.SetString ("SKAdNetworkIdentifier","22mmun2rn5.skadnetwork"); + plist.root.SetString("NSUserTrackingUsageDescription","his identifier will be used to deliver personalized ads to you."); + + pj.AddFrameworkToProject(target, "AppTrackingTransparency.framework", false); + + + // remove exit on suspend if it exists. + string exitsOnSuspendKey = "UIApplicationExitsOnSuspend"; + if(plist.root.values.ContainsKey(exitsOnSuspendKey)) + { + plist.root.values.Remove(exitsOnSuspendKey); + } + + plist.WriteToFile(plistPath); + + //-- TENJIN --// + pj.AddFrameworkToProject(target, "AdSupport.framework", false); + pj.AddFrameworkToProject(target, "iAd.framework", false); + + foreach (KeyValuePair> entry in appTextMap) { + + string appNameConverted = ""; + string tDescriptionConverted = ""; + + foreach (KeyValuePair entryText in entry.Value) { + + switch (entryText.Key){ + case "appName": + appNameConverted = encodeText(entryText.Value); + break; + case "tDescription": + tDescriptionConverted = encodeText(entryText.Value); + break; + default: + break; + } + } + + // 格納用ディレクトリ作成 + var lprojDir = string.Format("{0}.lproj", entry.Key); + if (!Directory.Exists(Path.Combine(path, lprojDir))) { + Directory.CreateDirectory(Path.Combine(path, lprojDir)); + } + // InfoPlist.strings 作成 + var lprojFile = string.Format("{0}.lproj/InfoPlist.strings", entry.Key); + StreamWriter w = new StreamWriter(Path.Combine(path, lprojFile), false); + w.WriteLine(string.Format("CFBundleDisplayName = \"{0}\";", appNameConverted)); + w.WriteLine(string.Format("NSUserTrackingUsageDescription = \"{0}\";", tDescriptionConverted)); + w.Close(); + + string fileGuid = pj.AddFile( Path.Combine(path, lprojDir), "/"+lprojDir, PBXSourceTree.Source ); + pj.AddFileToBuild( target, fileGuid ); + pj.WriteToFile( projectPath ); + } + + File.WriteAllText(projectPath, pj.WriteToString()); + + } + private static string encodeText(string text){ + // 文字コードを変換しておく + string ret = System.Text.Encoding.UTF8.GetString( + System.Text.Encoding.Convert( + System.Text.Encoding.Unicode, + System.Text.Encoding.UTF8, + System.Text.Encoding.Unicode.GetBytes(text) + ) + ); + return ret; + } +} diff --git a/popcorn/Assets/MyGame/Editor/PostProcessor.cs.meta b/popcorn/Assets/MyGame/Editor/PostProcessor.cs.meta new file mode 100644 index 00000000..da1ce3eb --- /dev/null +++ b/popcorn/Assets/MyGame/Editor/PostProcessor.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 890cae6313664528badae7ec39e95bec +timeCreated: 1625711029 \ No newline at end of file diff --git a/popcorn/ProjectSettings/EditorBuildSettings.asset b/popcorn/ProjectSettings/EditorBuildSettings.asset index bd26fbbc..78c375a4 100644 --- a/popcorn/ProjectSettings/EditorBuildSettings.asset +++ b/popcorn/ProjectSettings/EditorBuildSettings.asset @@ -5,6 +5,9 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: + - enabled: 1 + path: Assets/MyGame/Scenes/Cooking/Cooking.unity + guid: 505f6fca18c0c4a769e89c86a9a1f5b5 - enabled: 1 path: Assets/MyGame/Scenes/Main/Main.unity guid: 7f040d1b248234841802683edae3c4fa diff --git a/popcorn/ProjectSettings/ProjectSettings.asset b/popcorn/ProjectSettings/ProjectSettings.asset index 88171b6e..11e2a78b 100644 --- a/popcorn/ProjectSettings/ProjectSettings.asset +++ b/popcorn/ProjectSettings/ProjectSettings.asset @@ -548,7 +548,8 @@ PlayerSettings: webGLThreadsSupport: 0 webGLWasmStreaming: 0 scriptingDefineSymbols: {} - platformArchitecture: {} + platformArchitecture: + iPhone: 1 scriptingBackend: {} il2cppCompilerConfiguration: {} managedStrippingLevel: {}