Example #1
0
 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 });
         }
     }
 }
Example #2
0
    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 });
                }
            }
        }
    }