WSO2 EMM Агент с COSU не использует NFC
Я собрал последнюю версию агента android wso2 emm (cdmf-agent-android v3.1.30) и получил несколько начальных тестов, работающих в режиме BYOD с сервером IoT 3.1.0
Когда построено для COSU, оно ожидает инициализации с другим устройством через NFC. Но я хочу обеспечить устройства без NFC. Какие варианты у меня есть? Могу ли я программно активировать настраиваемую опцию инициализации?
1 ответ
Есть несколько вариантов сделать это, в зависимости от вашей версии Android.
Я начну с самого простого варианта. Если у вас Android 7+, вы можете использовать предоставление QR-кода, это происходит точно так же, как и подготовка NFC. Вы можете увидеть некоторые спецификации от Google относительно этого.
Второй вариант немного сложнее и требует некоторых собственных разработчиков на вашей стороне. Прежде всего, чтобы сделать ваше устройство владельцем устройства (что необходимо для режима COSU, читайте о владельце устройства здесь). Используя команду: adb shell dpm set-device-owner org.wso2.iot.agent/org.wso2.iot.agent.services.AgentDeviceAdminReceiver
Примечание. Можно установить только одного владельца устройства, чтобы удалить владельца устройства, необходимо выполнить сброс к заводским настройкам.
Как только это будет сделано, вы можете запустить свое приложение, используя adb shell am start -n "org.wso2.iot.agent/org.wso2.iot.agent.activities.SplashActivity"
,
Вышеуказанное заставит ваше приложение работать правильно, но теперь оно должно аутентифицировать себя для связи с сервером. Когда с помощью NFC инициализации токен доступа поставляется в дополнительном пакете как "android.app.extra.token", вы можете вставить этот дополнительный в намерение запуска следующим образом: adb shell am start -n "org.wso2.iot.agent/org.wso2.iot.agent.activities.SplashActivity" --es android.app.extra.token generated_access_token
, Вам нужно будет отредактировать класс SpashActivity, чтобы принять этот токен и следовать общим процессам аутентификации, встроенным в приложение.
Это может быть немного поздно, но я надеюсь, что это все еще полезно!
Некоторая дополнительная информация, которую вы можете оценить, вот строковое представление используемого сообщения NFC, это спецификации, установленные в приложении NFC Provisioning App:
`
#Thu Apr 12 13:42:11 GMT+02:00 2018
android.app.extra.PROVISIONING_LOCAL_TIME=1523533331087
android.app.extra.PROVISIONING_TIME_ZONE=Asia/Colombo
android.app.extra.PROVISIONING_SKIP_ENCRYPTION=true
android.app.extra.PROVISIONING_WIFI_SECURITY_TYPE=WPA
android.app.extra.PROVISIONING_WIFI_PASSWORD=PASSWORD
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION=LOCATION_OF_APK
android.app.extra.PROVISIONING_WIFI_SSID="WIFI_SSID_NAME"
android.app.extra.PROVISIONING_LOCALE=en_US
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM=E8PtiqUOcqKi5IXeRBF-5Br0zXg
android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE=\#admin extras bundle\n\#Thu Apr 12 13\:42\:11 GMT+02\:00 2018\nandroid.app.extra.token\=GENERATED_ACCESS_TOKEN\n
android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME=org.wso2.iot.agent
`
Пример представления QR-кода:
`
{
"android.app.extra.PROVISIONING_DEVICE_ADMIN_COMPONENT_NAME": "org.wso2.iot.agent/org.wso2.iot.agent.services.AgentDeviceAdminReceiver",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM": "CSGeivCEHdJrPT0qy4W67LZSy32Fus7GyUn0jE5o028",
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_DOWNLOAD_LOCATION": "APK_DOWNLOAD_LOCATION",
"android.app.extra.PROVISIONING_SKIP_ENCRYPTION": false,
"android.app.extra.PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME": "org.wso2.iot.agent",
"android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
"android.app.extra.token":"GENERATED_ACCESS_TOKEN"
}
}
`