Агент WSO2 EMM с COSU, не использующим NFC

Я создал последнюю версию агента wso2 emm android (cdmf-agent-android v3.1.30) и получил несколько начальных тестов, работающих в режиме BYOD с сервером IoT 3.1.0.

При построении для COSU он ожидает инициализации с другим устройством через NFC. Но я хочу подготовить устройства без NFC. Какие варианты у меня есть? Могу ли я программно активировать настраиваемый параметр подготовки?


person ikusi-makusi    schedule 14.02.2018    source источник


Ответы (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:

`

#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"
    }
}

`

person Jason Lee    schedule 02.08.2018
comment
Спасибо за это. Именно то, что я искал. - person ikusi-makusi; 05.11.2018