private static void OnPostprocessInfo(PlistDocumentWrapper info, AppCenterSettings settings) { if ((settings.UseAuth && AppCenter.Auth != null) || (settings.UseDistribute && AppCenter.Distribute != null)) { // Add App Center URL sceme. var root = info.GetRoot(); var urlTypes = root.GetType().GetMethod("CreateArray").Invoke(root, new object[] { "CFBundleURLTypes" }); if (settings.UseAuth && AppCenter.Auth != null) { var urlType = urlTypes.GetType().GetMethod("AddDict").Invoke(urlTypes, null); var setStringMethod = urlType.GetType().GetMethod("SetString"); setStringMethod.Invoke(urlType, new object[] { "CFBundleTypeRole", "Editor" }); setStringMethod.Invoke(urlType, new object[] { "CFBundleURLName", "$(PRODUCT_BUNDLE_IDENTIFIER)" }); var urlSchemes = urlType.GetType().GetMethod("CreateArray").Invoke(urlType, new[] { "CFBundleURLSchemes" }); urlSchemes.GetType().GetMethod("AddString").Invoke(urlSchemes, new[] { "msal" + settings.iOSAppSecret }); } if (settings.UseDistribute && AppCenter.Distribute != null) { var urlType = urlTypes.GetType().GetMethod("AddDict").Invoke(urlTypes, null); var setStringMethod = urlType.GetType().GetMethod("SetString"); setStringMethod.Invoke(urlType, new object[] { "CFBundleTypeRole", "None" }); setStringMethod.Invoke(urlType, new object[] { "CFBundleURLName", ApplicationIdHelper.GetApplicationId() }); var urlSchemes = urlType.GetType().GetMethod("CreateArray").Invoke(urlType, new[] { "CFBundleURLSchemes" }); urlSchemes.GetType().GetMethod("AddString").Invoke(urlSchemes, new[] { "appcenter-" + settings.iOSAppSecret }); } } }
private static void OnPostprocessInfo(PlistDocumentWrapper info, AppCenterSettings settings) { if (settings.UseDistribute && AppCenter.Distribute != null) { // Add App Center URL scemes. var schemes = new List <string>() { "appcenter-" + settings.iOSAppSecret }; // Create a reflection call for getting custom schemes from iOS settings. var playerSettingsClass = typeof(PlayerSettings.iOS); var iOSURLSchemesMethod = playerSettingsClass.GetMethod("GetURLSchemes", BindingFlags.Static | BindingFlags.NonPublic); // Verify that method exists and call it for getting custom schemes. if (iOSURLSchemesMethod != null) { var schemesFromSettings = (string[])iOSURLSchemesMethod.Invoke(null, null); schemes.AddRange(schemesFromSettings.ToList <string>()); } // Generate scheme information. var root = info.GetRoot(); var urlTypes = root.GetType().GetMethod("CreateArray").Invoke(root, new object[] { "CFBundleURLTypes" }); if (settings.UseDistribute && AppCenter.Distribute != null) { var urlType = urlTypes.GetType().GetMethod("AddDict").Invoke(urlTypes, null); var setStringMethod = urlType.GetType().GetMethod("SetString"); setStringMethod.Invoke(urlType, new object[] { "CFBundleTypeRole", "None" }); setStringMethod.Invoke(urlType, new object[] { "CFBundleURLName", ApplicationIdHelper.GetApplicationId() }); var urlSchemes = urlType.GetType().GetMethod("CreateArray").Invoke(urlType, new[] { "CFBundleURLSchemes" }); // Add custom schemes defined in Unity players settings. foreach (var scheme in schemes) { urlSchemes.GetType().GetMethod("AddString").Invoke(urlSchemes, new[] { scheme }); } } } }