Fully-managed enrollment by NFC works on any Android 6+ GMS device, which have NFC capabilities.
Using NFC for enrollment is quicker compared to the QR Code and afw#setup methods, but requires some initial setup of an NFC tag.
How NFC enrollment works
To enroll a fully-managed device using NFC, you need a NFC tag. This tag holds a NFC configuration file which contains all the information required by the Android device to enroll into WizyEMM.
The NFC enrollment occurs just after a factory reset, when the device displays the Android welcome screen. Just bump the NFC tag on the target device, and the configuration file is automatically pushed through NFC to the target device. Enrollment starts.
We suggest the free Android app NFC Tools to write the configuration file to your NFC tag. Please note that the configuration is approximately around 800 - 1000 Bytes in size. Your NFC tag should have a capacity of minimum 1 KB.
NFC configuration file
The configuration file consists in a list of parameters with a key and a value. Some of the parameters are mandatory, whereas others are optional.
Below is the standard NFC configuration file for WizyEMM
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME=com.google.android.apps.work.clouddpc
android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME=com.google.android.apps.work.clouddpc/.receivers.CloudDeviceAdminReceiver
android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM=I5YvS0O5hXY46mb01BlRjq4oJJGs2kuUcHvVkAPEXlg
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION=https\://play.google.com/managed/downloadManagingApp?identifier\=setup
android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE=com.google.android.apps.work.clouddpc.EXTRA_ENROLLMENT_TOKEN\={{ENROLLMENT_TOKEN_VALUE}}\n
android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED=true
android.app.extra.PROVISIONING_WIFI_SSID={{YOUR_NETWORK_SSID}}
android.app.extra.PROVISIONING_WIFI_PASSWORD={{YOUR_NETWORK_PASSWORD}}
Using this standard NFC config, you need to:
- Replace {{ENROLLMENT_TOKEN_VALUE}} with the value of your enrollment token, found below the QR code, in the Enrollment tab of your profile in your WizyEMM account.
- Replace {{YOUR_NETWORK_SSID}} and {{YOUR_NETWORK_PASSWORD}} with your network details
If you are using the free app NFC Tools to write to your NFC tag:
- Go to the Write tab inside the application, and click on the Add a record button
- Go to the bottom of the list, and click on the "Data: Add a customer record" option
- Fill in the Content-type with application / com.android.managedprovisioning
- Copy paste the content of your configuration file into the Data field
- Click OK
- Write the configuration file to a NFC tag
- Have all of your Android devices to be enrolled in a factory-reset mode, and turn them on so you can see the Android welcome screen
- Bump the NFC tag to your devices, and enrollment automatically starts
Annexe
Below are listed all parameters you can include into your NFC configuration file.
Mandatory parameters
DPC component
The first mandatory parameter is the name of the DPC to install on the device. This parameter must not be changed.
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION=https://play.google.com/managed/downloadManagingApp?identifier=setup
Profile
The second mandatory parameter is the token of the profile the device will use once enrolled. This parameter can be found on the WizyEMM console, in the QR Code tab of the profile you want to use.
android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE={
com.google.android.apps.work.clouddpc.EXTRA_ENROLLMENT_TOKEN=ENROLLMENT_TOKEN_VALUE
}
WiFi network
The third parameter is the WiFi network to use during enrollment. The following information can be specified:
- The network SSID, which is a string,
- The network password, which is a string,
android.app.extra.PROVISIONING_WIFI_SSID=YOUR_NETWORK_SSID
android.app.extra.PROVISIONING_WIFI_PASSWORD=YOUR_NETWORK_PASSWORD
Optional parameters
WiFi extra information
The WiFi network security type can be forced to one of the following values: NONE, WPA, WEP or EAP.
android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE=NONE|WPA|WEP|EAP
If the WiFi network is hidden, a specific parameter can be used to specify that:
android.app.extra.PROVISIONING_WIFI_HIDDEN=true|false
Locale
In order to display the enrollment using a specific language, the following parameter can be used:
android.app.extra.PROVISIONING_LOCALE=us_US
The locale value must be in the format country_CODE.
Timezone
The timezone can be forced to a specific value if needed.
android.app.extra.PROVISIONING_TIME_ZONE=Europe/London
System apps
Depending on the device manufacturer, some system apps can be preinstalled on the device. If you don't want these extra apps to be installed, you can specify it with the following parameter:
android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED=false|true
Encryption
Device data can be ciphered for an extra security layer. This step can take a significant time during the enrollment. You can skip this step with the following parameter:
android.app.extra.PROVISIONING_SKIP_ENCRYPTION=true|false
Company logo
If you want to display your own company logo during the enrollment, you can use the following parameter to do so:
android.app.extra.PROVISIONING_LOGO_URI=https://company.com/path/to/logo.png
The value must be a valid URI pointing to a PNG file.
Predominant color
By default, the main predominant color used during the enrollment is either orange or blue, depending on the Android version used. If you want to specify your own predominant color, use the following parameter:
android.app.extra.PROVISIONING_MAIN_COLOR=0xFFFFFF
The value must be a hexadecimal color code, with 2 digits for each color: 0xRED-GREEN-BLUE. For example, for a full red color, use 0xFF0000. For a full blue color, use 0x0000FF. To choose a color and fetch the hexadecimal color code, please visit https://htmlcolorcodes.com/.
Technical note
On an NFC tag, you need to properly format the admin extras as a java property. If your JSON includes multiple keys, you would need to string encode all the information, including the newline data.
For example:
{
"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE" : {
"key1": "value1",
"key2": "value2"
}
}
becomes
android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE=key1\=value1\nkey2\=value2\n