国内站产品与国际站的开发存在差异,此文主要介绍针对国际站额外需要修改的内容。

设备端开发

国际站的设备端开发请您参见国际站设备开发完成。

配置控制台

按照以下操作,为您的产品分别在中国站与国际站创建产品和自有品牌App。

  1. 选择站点,设置为国际站
  2. 创建一个项目。详细参见创建项目
  3. 在项目中创建产品,并定义产品功能。详细参见创建产品并定义功能
  4. 设置App功能参数(详细参见概述)。其中,在多语言管理中配置英文(或其他语言)的产品名称与产品功能。
    多语言管理
  5. 在项目中创建自有品牌App,详细参见创建自有App
    说明 国际站中App创建的包名、签名(Android)、bundleID(iOS)需与中国站的一致。
  6. 站点选择为中国站,重复以上操作步骤,在中国站创建产品与自有品牌App。

客户端开发

  1. 集成安全图片。

    根据集成安全图片的操作,分别从中国站与国际站获取测试版、正式版,共四张安全图片,将4张安全图片集成到App工程中。

    - 测试版 正式版
    中国版 yw_1222_china_develop.jpg yw_1222_china_production.jpg
    国际版 yw_1222_oversea_develop.jpg yw_1222_oversea_production.jpg
    • Android放置安全图片
    • iOS
  2. 下载并集成SDK,详细请参见下载并集成SDK
  3. 初始化SDK,详细请参见SDK初始化(Android)SDK初始化(iOS)

    初始化时设置接入类型,国际站必须配置为REGION_ALL

  4. 设置国家信息。

    如果您App会运行在中国内地以外,且需要与中国内地之间切换,那么需要用户在账号注册之前设置国家/区域。

    说明 App连接中国内地还是中国内地以外的国家和地区(包括港澳台地区),取决于账号注册时所选的国家。且当App在中国内地与中国内地之外的国家和地区(包括港澳台地区)切换时,需要重启App。
    • 获取国家/区域信息
      iOS篇:
      [[IMSIotSmart sharedInstance] getCountryList:^(NSError * _Nullable error, NSArray<IMSIotCountry *> * _Nullable countryList) {
              // 返回的 countryList 为原始数据
              
          }];
      Android篇:
      public static void getCountryList(final ICountryListGetCallBack callback)
          IoTSmartImpl.getInstance().getCountryList(callback);
        }
    • 设置国家/区域
      iOS篇:
      [[IMSIotSmart sharedInstance] setCountry:_selectCountry callback:^(BOOL needRestartApp) {
              if (needRestartApp) {
                  ////必须退出应用,否则无法正常使用
              }
          }];
      Android篇:
      IoTSmart.setCountry(mSelectedCountry, needRestartApp -> {
                if (needRestartApp) {
                    ////必须退出应用,否则无法正常使用
                 }
      });
    • 获取已设置的国家/区域
      iOS篇:
      IMSIotCountry *country = [[IMSIotSmart sharedInstance] getCountry];
      Android篇:
      GlobalConfig.getInstance().getCountry()
  5. 设置国际语言。

    生活物联网平台目前支持中文(zh-CN)、 英文(en-US)、法文(fr-FR)、德文(de-DE)、日文(ja-JP)、韩文(ko-KR)、西班牙文(es-ES)、俄文(ru-RU)、意大利文(it-IT)、印地文(hi-IN)、葡萄牙文(pt-PT)等十一种语言。

    通过以下设置可更改SDK内部语言。

    Android篇:
    IoTSmart.setLanguage(languageName);
    // 查看sdk当前设置的语言
     public static String getLanguage() {
            return IoTSmartImpl.getInstance().getLanguage();
    }
    iOS篇:
    NSString *language = @"zh-CN";
    [[IMSIotSmart sharedInstance] setLanguage:language];
    
    // 查看sdk当前设置的语言
    NSString *language = [[IMSIotSmart sharedInstance] getLanguage];

    iOS可能还需要设置OA UI的语言。

    设置语言
     // 使用默认的翻译资源文件
        [[IMSiLopOALanguageManage shareInstance]
        setOpenAccountModuleLanguageWithLanguagePrefix:@"ko"];
    
    // 想使用自己的资源文件(xxxx):将 IMSOpenAccountCustom的IMSOpenAccountCustomResource.bundle的.lproj文件中的内容拷贝,自行整理一份相同key的八国语言翻译
        [[IMSiLopOALanguageManage shareInstance] 
        setOpenAccountModuleLanguageWithLanguagePrefix:@"ko" bundleName:@"xxxx"];

App调试说明

当您完成产品的国际站开发,在国内使用开发版App调试时,需要注意以下事项。

  • App的地区请选择除“中国内地”以外的任意地区。
  • 使用手机号注册/登录时,需要选择国家区号,如中国内地为”+86“。

云端开发

当您调用云端API,向国际站的云端发送请求时,需修改请求消息中的Host(默认为中国站的Host),否则调用请求会失败。调用云端API的详细介绍请参见准备工作

  • Java版如下。
    ApiResponse response = syncClient.postBody("api-iot.ap-southeast-1.aliyuncs.com",
    "/cloud/token", request, true);
  • PHP版如下。
    function example() { 
    $path = "/cloud/token"; 
    $host = "https://api-iot.ap-southeast-1.aliyuncs.com"; 
    $appKey = "你的"; 
    $appSecret = "你的"
    ...
    }