public static void AddURLSchemeToPlist(PlistDocument plist, string urlSchemeToAdd) { // Get/create array of URL types PlistElementArray urlTypesArray = null; if (!plist.root.values.ContainsKey("CFBundleURLTypes")) { urlTypesArray = plist.root.CreateArray("CFBundleURLTypes"); } else { urlTypesArray = plist.root.values["CFBundleURLTypes"].AsArray(); } if (urlTypesArray == null) { urlTypesArray = plist.root.CreateArray("CFBundleURLTypes"); } // Get/create an entry in the array PlistElementDict urlTypesItems = null; if (urlTypesArray.values.Count == 0) { urlTypesItems = urlTypesArray.AddDict(); } else { urlTypesItems = urlTypesArray.values[0].AsDict(); if (urlTypesItems == null) { urlTypesItems = urlTypesArray.AddDict(); } } // Get/create array of URL schemes PlistElementArray urlSchemesArray = null; if (!urlTypesItems.values.ContainsKey("CFBundleURLSchemes")) { urlSchemesArray = urlTypesItems.CreateArray("CFBundleURLSchemes"); } else { urlSchemesArray = urlTypesItems.values["CFBundleURLSchemes"].AsArray(); if (urlSchemesArray == null) { urlSchemesArray = urlTypesItems.CreateArray("CFBundleURLSchemes"); } } // Add URL scheme if (!urlSchemesArray.ContainsElement(urlSchemeToAdd)) { urlSchemesArray.Add(urlSchemeToAdd); } }