---
breadcrumbs:
- - /administrators
  - Documentation for Administrators
page_name: ios-mdm-policy-format
title: iOS MDM Policy Format
---

Policy Support on Chrome on iOS is being removed in Chrome 48 as part of
Chrome's move to WKWebView where supporting many of the policies was not
possible.

Policies can be configured for Chrome on iOS via MDM starting with version 35.

The iOS device must be enrolled for Mobile Device Management (MDM) with an MDM
vendor to enable this feature. This page documents the format of the managed app
configuration settings that Chrome expects, and is meant to help MDM vendors
integrate Chrome management into their solutions.

This uses the managed app configuration API introduced in iOS 7, and only work
with device running iOS 7 or later. For an introduction to the API see session
301 from WWDC 2013, "Extending Your Apps for Enterprise and Education Use", at
<https://developer.apple.com/videos/wwdc/2013/?id=301>.

#### Keys loaded by Chrome

The managed app configuration pushed to Chrome should be an NSDictionary,
encoded as a &lt;dict&gt; element in the Plist format. Chrome then looks for 2
keys in this dictionary:

*   **ChromePolicy** is the main key to configure policies for Chrome.
            This key must map to another NSDictionary, which then maps a Chrome
            policy to its value.

*   **EncodedChromePolicy** is a fallback key which is loaded only if
            ChromePolicy is not present. This key supports the same policies but
            its value should be a single NSString (encoded as a &lt;string&gt;
            on the wire), which contains a serialized Plist encoded in Base64.

ChromePolicy is the recommended key to configure Chrome. EncodedChromePolicy may
be used by legacy products that are limited to String values. As of version 35
Chrome doesn't load any other keys; new keys may be introduced in future
versions.

#### Example ChromePolicy

This example contains the full Plist that can be set down as the managed app
configuration for Chrome:

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version="1.0">
 <dict>
 <key>ChromePolicy</key>
 <dict>
 <key>AutoFillEnabled</key>
 <false/>
 <key>CookiesAllowedForUrls</key>
 <array>
 <string>http://www.example.com</string>
 <string>[*.]example.edu</string>
 </array>
 <key>CookiesBlockedForUrls</key>
 <array>
 <string>http://www.example.com</string>
 <string>[*.]example.edu</string>
 </array>
 <key>CookiesSessionOnlyForUrls</key>
 <array>
 <string>http://www.example.com</string>
 <string>[*.]example.edu</string>
 </array>
 <key>DefaultCookiesSetting</key>
 <integer>1</integer>
 <key>DefaultPopupsSetting</key>
 <integer>1</integer>
 <key>DefaultSearchProviderEnabled</key>
 <true/>
 <key>DefaultSearchProviderKeyword</key>
 <string>mis</string>
 <key>DefaultSearchProviderName</key>
 <string>My Intranet Search</string>
 <key>DefaultSearchProviderSearchURL</key>
 <string>http://search.my.company/search?q={searchTerms}</string>
 <key>ManagedBookmarks</key>
 <array>
 <dict>
 <key>name</key>
 <string>Google</string>
 <key>url</key>
 <string>google.com</string>
 </dict>
 <dict>
 <key>name</key>
 <string>Youtube</string>
 <key>url</key>
 <string>youtube.com</string>
 </dict>
 </array>
 <key>PasswordManagerEnabled</key>
 <true/>
 <key>PopupsAllowedForUrls</key>
 <array>
 <string>http://www.example.com</string>
 <string>[*.]example.edu</string>
 </array>
 <key>PopupsBlockedForUrls</key>
 <array>
 <string>http://www.example.com</string>
 <string>[*.]example.edu</string>
 </array>
 <key>ProxyBypassList</key>
 <string>http://www.example1.com,http://www.example2.com,http://internalsite/</string>
 <key>ProxyMode</key>
 <string>direct</string>
 <key>ProxyPacUrl</key>
 <string>http://internal.site/example.pac</string>
 <key>ProxyServer</key>
 <string>123.123.123.123:8080</string>
 <key>SearchSuggestEnabled</key>
 <true/>
 <key>TranslateEnabled</key>
 <true/>
 <key>URLBlocklist</key>
 <array>
 <string>example.com</string>
 <string>https://ssl.server.com</string>
 <string>hosting.com/bad_path</string>
 <string>http://server:8080/path</string>
 <string>.exact.hostname.com</string>
 </array>
 <key>URLAllowlist</key>
 <array>
 <string>example.com</string>
 <string>https://ssl.server.com</string>
 <string>hosting.com/bad_path</string>
 <string>http://server:8080/path</string>
 <string>.exact.hostname.com</string>
 </array>
 </dict>
 </dict>
</plist>
```

#### Example EncodedChromePolicy

This example contains an EncodedChromePolicy value that contains the same Plist
as above, after being encoded in Base64:

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd'>
<plist version="1.0">
 <dict>
 <key>EncodedChromePolicy</key>
 <string> </string>
 </dict>
</plist>
```

#### Verifying a Plist

A .plist file can be verified with the plutil command on Mac OS X:

```
plutil -lint file.plist
```

The EncodedChromePolicy value should decode correctly as Base64:

```
base64 &lt; encoded.txt &gt; decoded.plist
plutil -lint decoded.plist
```

#### Policies supported by Chrome on iOS

The page at <https://chromeenterprise.google/policies/> indicates
which platforms are supported for each policy.
