国内站产品与国际站产品的开发有些区别,本文主要介绍国际站设备端开发需要额外修改的内容。

在海外设备激活联网时,将统一连接到新加坡激活中心。在设备绑定时,平台将根据用户所在区域,自动将设备切换到相应的region。例如:用户注册时选择的国家为美国,平台会将该用户待绑定的设备切换到美国的服务器。

  • 请确认使用最新的生活物联网平台SDK( v1.1.0),获取最新的生活物联网平台SDK请参见SDK概述与开发环境设置

    该版本SDK集成了设备端根据平台下发的指令切换到对应region的功能,无需额外修改代码。

  • 设备端固件需要修改以下两个配置来支持统一连接到新加坡激活中心。如果基于AliOS Things中的linkkitapp开发应用,需要进行如下手动修改。
    • 更改example下应用代码的domain type设定。在example/linkkitapp/linkkit_example_solo.c文件的linkkit_main()函数中,如下图所示将domain_type的赋值从IOTX_CLOUD_REGION_SHANGHAI改为IOTX_CLOUD_REGION_SINGAPORE参数修改
    • example/linkkitapp/make.settings文件中,将FEATURE_MQTT_DIRECT的状态设置为关闭(即如下图所示配置为n)。参数修改
    • example/linkkitapp/app_entry.c文件的函数application_start中,确认set_iotx_info()放在netmgr_init()前面,如下图所示。参数修改
  • 如果基于AliOS Things中的living_platform开发应用,example/living_platform/gen_firmware.sh编译脚本支持通过不同选项编译海外和国内的固件。编译时根据中国大陆和海外的不同选项,domain type变量和宏FEATURE_MQTT_DIRECT会被自动配置,无需再手动修改。

    以下介绍如何基于gen_firmware.sh脚本编译固件。

    1. 打开gen_firmware.sh文件,按红色标识指定board。参数修改
    2. 执行以下命令编译脚本。
      bash gen_firmware.sh
      参数选择
    3. 选择要编译的固件。
      • c:每次编译前需进行clean操作
      • 3:编译国内站固件
      • 5:编译国际站固件
    4. 查看编译结果。

      该示例编译输出的固件存放在out/living_platform@boardname/binary目录下。

更多国际站开发请参见国际站开发实践专题

常见问题

Q:国际站设备是否可以不关闭FEATURE_MQTT_DIRECT

A:国际站设备必须关闭FEATURE_MQTT_DIRECT,否则会存在GDPR合规风险,以及设备通过公版App配网绑定后在部分区域无法正常激活的问题。

Q:如果已有FEATURE_MQTT_DIRECT未关闭的设备送样、出货应该怎么处理?

A:请尽快按本文档中描述的步骤修改,并进行设备固件OTA升级,设备升级时请注意选择静默升级(即App确认升级选项选否),并且升级策略选择动态升级(动态升级将持续维护需升级的设备范围,包括当前已经上报版本号的设备和新激活的设备),需要先做固件验证,再做批量升级,详细的OTA步骤请参见固件升级。关于这部分有任何疑问,可以联系钉钉群23176366 获取支持。

Q:国内站设备打开和关闭FEATURE_MQTT_DIRECT有什么区别?

A:打开FEATURE_MQTT_DIRECT为直连模式,关闭FEATURE_MQTT_DIRECT为预认证模式,国内设备在两种模式下都能建立连接,区别是后者连接速度慢一点。因此,建议国内站设备用直连模式,国际站设备用预认证模式。

Q:国内站设备和国际站设备需要维护两个固件吗?

A:是的,国内站设备和国际站设备的ProductKey是不一样的,生产烧录的时候对设备证书和固件要做相应的管理。

Q:国际站设备一定要用生活物联网平台SDK v1.1.0版本吗?

A:是的,海外统一激活中心需要设备端支持region切换。