WSO2 EMM 代理与 COSU 不使用 NFC
WSO2 EMM Agent with COSU not using NFC
我构建了最新版本的 wso2 emm android 代理 (cdmf-agent-android v3.1.30) 并在 BYOD 模式下使用物联网服务器 3.1.0 进行了一些初步测试
为 COSU 构建时,它正在等待通过 NFC 与另一台设备进行配置。但我想提供没有 NFC 的设备。我有什么选择?我可以以编程方式触发自定义配置选项吗?
根据您的 android 版本,有一些选项可以做到这一点。
我将从最简单的选项开始。如果您有 Android 7+,则可以使用 QR 码配置,这与 NFC 配置完全相同。您可以从 Google 中看到一些关于 this.
的规范
第二个选项有点棘手,需要您这边的一些自定义开发人员。首先要使您的设备成为设备所有者(COSU 模式需要它,阅读有关设备所有者的信息 here)。使用命令: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' 在 Extra Bundle 中交付,您可以按如下方式在启动意图中插入此额外内容:adb shell am start -n "org.wso2.iot.agent/org.wso2.iot.agent.activities.SplashActivity" --es android.app.extra.token generated_access_token
。您将必须编辑 SpashActivity class 以接受此令牌并遵循应用程序内置的一般身份验证流程。
这可能有点晚了,但我希望它仍然有用!
一些您可能会喜欢的额外信息,这里是所用 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
`
二维码表示的一个例子是:
`
{
"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"
}
}
`
我构建了最新版本的 wso2 emm android 代理 (cdmf-agent-android v3.1.30) 并在 BYOD 模式下使用物联网服务器 3.1.0 进行了一些初步测试
为 COSU 构建时,它正在等待通过 NFC 与另一台设备进行配置。但我想提供没有 NFC 的设备。我有什么选择?我可以以编程方式触发自定义配置选项吗?
根据您的 android 版本,有一些选项可以做到这一点。
我将从最简单的选项开始。如果您有 Android 7+,则可以使用 QR 码配置,这与 NFC 配置完全相同。您可以从 Google 中看到一些关于 this.
的规范第二个选项有点棘手,需要您这边的一些自定义开发人员。首先要使您的设备成为设备所有者(COSU 模式需要它,阅读有关设备所有者的信息 here)。使用命令: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' 在 Extra Bundle 中交付,您可以按如下方式在启动意图中插入此额外内容:adb shell am start -n "org.wso2.iot.agent/org.wso2.iot.agent.activities.SplashActivity" --es android.app.extra.token generated_access_token
。您将必须编辑 SpashActivity class 以接受此令牌并遵循应用程序内置的一般身份验证流程。
这可能有点晚了,但我希望它仍然有用!
一些您可能会喜欢的额外信息,这里是所用 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
`
二维码表示的一个例子是:
`
{
"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"
}
}
`