示例#1
0
    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);
        }
    }