public void OnPreprocessBuild(BuildReport report) { // Clean and reset settings before builds to make sure we don't // pollute later builds with assets that may be unnecessary or are outdated. CleanOldSettings(); WeChatLoaderSettings settings = WeChatLoader.GetSettings(); if (settings == null) { return; } Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets(); if (!preloadedAssets.Contains(settings)) { var assets = preloadedAssets.ToList(); assets.Add(settings); PlayerSettings.SetPreloadedAssets(assets.ToArray()); } }
public static void ChangeXCodePlist(BuildTarget buildTarget, string pathToBuildProject) { if (buildTarget != BuildTarget.iOS) { return; } WeChatLoaderSettings settings = WeChatLoader.GetSettings(); if (settings == null) { return; } var appId = settings.m_AppID; if (string.IsNullOrEmpty(appId)) { return; } // Info.plist var plistPath = pathToBuildProject + "/Info.plist"; var plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); // ROOT var rootDict = plist.root; const string urlTypesKey = "CFBundleURLTypes"; PlistElementArray urlTypes = (PlistElementArray)rootDict[urlTypesKey]; if (null == urlTypes) { urlTypes = rootDict.CreateArray(urlTypesKey); } // Add URLScheme for WeChat var wxUrl = urlTypes.AddDict(); wxUrl.SetString("CFBundleTyeRole", "Editor"); wxUrl.SetString("CFBundleURLName", "weixin"); wxUrl.SetString("CFBundleURLSchemes", appId); var wxUrlScheme = wxUrl.CreateArray("CFBundleURLSchemes"); wxUrlScheme.AddString(appId); //whitelist WeChat w const string queriesSchemesKey = "LSApplicationQueriesSchemes"; PlistElementArray queriesSchemes = (PlistElementArray)rootDict[queriesSchemesKey]; if (null == queriesSchemes) { queriesSchemes = rootDict.CreateArray("LSApplicationQueriesSchemes"); } queriesSchemes.AddString("wechat"); queriesSchemes.AddString("weixin"); queriesSchemes.AddString(val: appId); File.WriteAllText(plistPath, plist.WriteToString()); }