基础信息配置

优质
小牛编辑
141浏览
2023-12-01
  1. 在项目中的 RKConfiguration.swift 中完成相关的自定义配置,各个字段说明如下, 把项目中对应的配置 YOUR_CONFIGURATION 替换成你申请的配置信息。其中 kAppKeykAppSecretkAccessKey,需要先在开放平台 注册一个帐号,并联系对接的项目经理申请。

     // MARK: - Rokid
    
     /// 设备的名称,填上厂商的名牌名称
     public let kBrandName = "若琪"
     /// 从若琪申请的AppKey
     let kAppKey = "YOUR_CONFIGURATION" // required
     /// 从若琪申请的AppSecret
     let kAppSecret = "YOUR_CONFIGURATION" // required
     /// 从若琪申请的AccessKey
     let kAccessKey = "YOUR_CONFIGURATION" // required
    
     // MARK: - Router
    
     /// 应用跳转的 router Scheme 名称,例如:rokidAlliance,rokid,genius.....,用于跳转原生页面,与http,https对应,它们是用于跳转webView
     let kRouterScheme = "rokidalliance" // required
    
     // MARK: - Help
    
     /// 设备使用帮助页面
     let kUseGuideUrl = "YOUR_CONFIGURATION" // optional
    
     // XMLY 喜马拉雅相关配置
     /// 喜马拉雅申请的APP name
     let kXMLYAppName: String = "YOUR_CONFIGURATION" // optional
    
  1. 正确配置 Bundle IDDisplay Name 。例如: Bundle ID:rokid.com.rokidalliance Display Name: 若琪联盟

  1. 配置Keychain Sharing,点击加号添加Keychain Groups, 一般和Bundle ID同名即可。 用于保存账户信息,如下图所示

  1. 其中 kRouterScheme 应用原生页面跳转的 Scheme ,需要在 TARGETS/info/URL Types 中添加一次。如图把 rokid 替换成 kRouterScheme 的值。其中还有些三方的 URL Scheme 的配置,比如喜马拉雅,微信,QQ。按照对应第三方的接入指南配置。以喜马拉雅为例:xmly+"your appKey",以xmly开头,加上从喜马拉雅申请的 appKey

1.1. 自定义APP颜色

  1. Sources/UIKit 目录中的 RKStyles.swift Color 结构体中来自定义APP的相关组件的颜色,其中包括如下表格所示。
color namecolor 色值说明
themeColor#408CFF主题色,输入框光标颜色,可点击文字颜色, TitleBar 右边按钮可点击状态时颜色,对话流 asr 卡片背景 ,底部可点击蓝色按钮背景色
darkPrimaryText#323233黑色字体,主标题,输入框文字颜色,输入框有焦点下划线颜色,TitleBar 左边按钮,TitleBar 标题文字颜色,验证码输入框颜色
grayLine#DFE1E4下划线默认颜色,输入框失去焦点下划线颜色、view 不可点击背景色,首页时间 card 背景色,切换设备背景色
grayPrimaryText#9A9A9A灰色字体,副标题,输入框上的标题,输入框右边清除按钮颜色,输入框右边密码不可见按钮颜色 TitleBar 右边按钮不可点击颜色,切换设备——设备离线 icon 和文字颜色,列表item右边可点击icon
commGrayBackground#F7F7F7输入框背景颜色,viewController 灰色背景色,dialog 灰色背景色,首页对话流 card 背景色
navigationBackItem#555556顶部导航栏图标颜色(搜索 icon,播放器 icon)
commomeRedText#F90210电池电量低于20%背景色,设备card离线 “重新配网” 背景色和文字颜色
offlineBackground#FFF6F4首页,畅听页,发现页底部设备离线背景色

1.2. 设备配网

通过若琪公版 App 为设备配置网络,主要涉及到两个配置 Json 文件的修改,1. 设备列表; 2. 设备详情; 整个流程需要做的配置如下:

  1. 配网首页设配列表的信息配置。在 Resources/Default/bind_home.json 文件中可以设置配网首页,如图所示。

[
  {
  "binderType": "ble_bind", // 配网类型,支持:"ble_bind", "ble_rebind"
  "isNew": true, // 是否为新品,新品的话,对应设备图片上会一个NEW的角标
  "linkUrl": "rokid://binder/bootGuide?type=Me", // 页面跳转的URL,其中的 rokid scheme 需要与基础配置中的 let kRouterScheme = "YOUR_CONFIGURATION" 的值保持一致。type 是设备的名称

  "blePrefix": "Rokid-Me-",    // 设备蓝牙的名称前缀,用于搜索蓝牙设备的时候,只显示有改前缀的蓝牙设备
  "imageUrl": "http://rokid.oss-cn-qingdao.aliyuncs.com/mobile-app/binder/img/home/me.png", // 设备预览图
  "deviceTypeName": "Me" // 设备名称
  },
  .
  .
  .
  .
 ]

相关字段具体说明如表格所示:

key类型说明
binderTypeString配网类型,值:ble_bind——配网,bel_rebind——重新配网
isNewboolean是否为新设备类型,true则表示为新设备,配网首页设备图片右上角则会增加一个icon
linkUrlString点击配网首页某个设备后的跳转uri,需注意的是,uri 后面请拼上当前点击的设备类型,具体格式如:rokid://binder/bootGuide?type=Me
blePrefixString该设备类型的蓝牙前缀,具体格式如: Rokid-Me-
imageUrlString当前设备预览图片的 url
deviceTypeNameString当前设备的名称

不同厂商可根据当前拥有的设备个数,对如上的 json 数组进行增加或者删除,只要保证格式一致即可。

  1. 具体某个设备类型配网数据信息的配置,在 Resources/Default/bind_Pebble.json 文件中可以设置具体某个设备的配网信息。

{
    "type": "ble_bind", // 配网类型,支持:"ble_bind", "ble_rebind"
    "deviceTypeName": "Pebble", // 设备名称
    "isNew": false, // 是否为新品
    "linkUrl": "rokid://binder/bootGuide?type=Pebble", // 页面跳转的URL
    "blePrefix": "Rokid-Pebble-", // 设备蓝牙的名称前缀
    "imageUrl": "http://rokid.oss-cn-qingdao.aliyuncs.com/mobile-app/binder/img/home/pebble.png", // 设备预览图
    "support": {
        "is5GEnable": true, // 是否支持5g
        "tip": "",            // 哪些WiFi不支持的说明
        "helpButton": "",   // 帮助按钮的文字
        "connectButton": "发送到音箱" // 发送WiFi账号密码的按钮文案
    },
    "guide": { // 设备详情的指南页面的数据
        "title": "长按音箱顶部「O」键",  // 标题
        "subtitle": "大约1分钟后,你将听到音箱提示", // 副标题
        "description": "“为我完成网络配置”", // 描述信息
        "videoUrl": "https://s.rokidcdn.com/mobile-app/video/binder/pebble.mp4", // 配网操作的介绍视频,没有的话,会先显示下面的首帧图片
        "coverImageUrl": "https://s.rokidcdn.com/mobile-app/video/binder/pebble_first.png", // 介绍视频的首帧图片
        "usageHelper": { // 使用帮助相关信息
            "button": "查看帮助",
            "title": "没有听到配网提示音?",
            "subtitle": "帮助若琪检查以下内容",
            "image": "http://rokid.oss-cn-qingdao.aliyuncs.com/mobile-app/binder/img/guide/pebble.png",
            "tips": [
                     {
                     "title": "确认音箱已开机",
                     "text": "尝试点击顶部电源键「O」\n若有蓝色灯光亮起,则表示音箱已开机。\n若蓝色灯光没有亮起,请先开机:插上电源,长按电源键「O」,直到亮起蓝灯。"
                     },
                     {
                     "title": "双击音箱顶部「O」键",
                     "text": "音箱将提示:“为我完成网络配置”,并闪烁橙色灯光。"
                     }
                     ]
        },
        "noDeviceHelper": { // 没有找到设备的帮助相关信息
            "button": "已听到提示音",
            "title": "未找到可连接的音箱",
            "subtitle": "帮助若琪检查以下内容",
            "image": "http://rokid.oss-cn-qingdao.aliyuncs.com/mobile-app/binder/img/guide/pebble.png",
            "tips": [
                     {
                     "title": "确认音箱已开机",
                     "text": "尝试点击顶部电源键「O」\n若有蓝色灯光亮起,则表示音箱已开机。\n若蓝色灯光没有亮起,请先开机:插上电源,长按电源键「O」,直到亮起蓝灯。"
                     },
                     {
                     "title": "双击音箱顶部「O」键",
                     "text": "音箱将提示:“为我完成网络配置”,并闪烁橙色灯光。"
                     }
                     ]
        }
    },
    "progresses": [ // 配网的进度状态码以及进度控制
                   {
                   "doingCode": "10", // 正在进行的code
                   "doneCode": "11", // 完成的code
                   "doingText": "正在连接WiFi", // 正在进行的文案提示
                   "doneText": "音箱已成功联网" // 完成的文案提示
                   },
                   {
                   "doingCode": "100",
                   "doneCode": "101",
                   "doingText": "正在进行身份验证",
                   "doneText": "完成身份验证"
                   },
                   {
                   "doingCode": "200",
                   "doneCode": "201",
                   "doingText": "正在将设备绑定到你的账号",
                   "doneText": "设备和账号绑定成功"
                   }
                   ],
    "errors": [    // 配网的错误状态码以及进度控制
               {
               "code": "-11", // 错误码
               "subtitle": "Wi-Fi 密码不正确", // 配网错误页面副标题
               "tips": [
                        "请检查 Wi-Fi 或热点账号密码是否正确" // 出错是设备的提示信息
                        ]
               },
               {
               "code": "-12",
               "subtitle": "Wi-Fi 连接异常",
               "tips": [
                        "请检查 Wi-Fi 或热点账号密码是否正确"
                        ]
               },
               {
               "code": "-13",
               "subtitle": "没有找到该网络,请检查后重试",
               "tips": [
                        "请检查 Wi-Fi 或热点账号密码是否正确"
                        ]
               },
               {
               "code": "-14",
               "subtitle": "密码长度不正确",
               "tips": [
                        "请检查 Wi-Fi 或热点账号密码是否正确"
                        ]
               },
               {
               "code": "-99",
               "subtitle": "Wi-Fi 连接异常",
               "tips": [
                        "尝试将音箱放在离路由器更近的地方",
                        "请检查 Wi-Fi 或热点账号密码是否正确",
                        "保持手机网络正常"
                        ]
               },
               {
               "code": "-101",
               "subtitle": "Wi-Fi 连接异常",
               "tips": [
                        "尝试将音箱放在离路由器更近的地方",
                        "请检查 Wi-Fi 或热点账号密码是否正确",
                        "保持手机网络正常"
                        ]
               },
               {
               "code": "-201",
               "subtitle": "其他,或我也不确定",
               "tips": [
                        "尝试将音箱放在离路由器更近的地方",
                        "请检查 Wi-Fi 或热点账号密码是否正确",
                        "保持手机网络正常"
                        ]
               },
               {
               "code": "-1000",
               "subtitle": "Wi-Fi 连接异常",
               "tips": [
                        "尝试将音箱放在离路由器更近的地方",
                        "请检查 Wi-Fi 或热点是否正常"
                        ]
               },
               {
               "code": "-1001",
               "subtitle": "手机网络连接异常",
               "tips": [
                        "请检查手机网络状态"
                        ]
               }
               ]
}
  1. 其中 support 字段的说明,该数据主要用于 App 中的发送 WiFi 信息界面,对应的是 RKBindPasswordViewController

key类型说明
is5GEnableboolean该设备类型是否支持 5G 网络
tipString不支持 5G 网络的提示文案
helpButtonString帮助按钮的文案
connectButtonString发送WiFi账号密码的按钮文案
  1. guide 相关字段说明:该数据主要用于 APP 中的单个设备搜索蓝牙和对应的两个帮助界面,对应的是 RKBindNoDeviceViewControllerRKBindNoSoundViewController

key类型说明
titleString页面标题
subtitleString页面子标题
descriptionString页面描述信息
videoUrlString页面视频 URL
coverImageUrlString页面视频第一帧图片 URL
usageHelperObject没有听到配网提示音的帮助页面数据信息,对应 RKBindNoSoundViewController
noDeviceHelperObject没有找到可连接的音箱帮助页面数据信息,对应 RKBindNoDeviceViewController
  1. progresses 相关字段说明: 该数据主要用于 APP 中配网过程中相关页面的信息展示,对应的是 RKBindProcessViewController
key类型说明
doingCodeString当前步骤准备进行的 code
doneCodeString当前步骤完成时的 code
doingTextString当前步骤准备进行时的文案
doneTextString当前步骤完成时的文案
状态值说明
10wifi连接中
11wifi连接成功
-11wifi密码错误
-12wifi连接超时
-13没找到当前wifi
-14wifi密码长度不正确
-98运营商网络错误
100登录中
101登录成功
-101登录失败
200绑定中
201绑定成功
-201绑定失败
  1. errors 相关字段说明: 该数据主要用于 APP 中配网过程中发生异常时的信息展示,对应的是 RKBindErrorViewController
key类型说明
codeString配网失败的错误码
subtitleString配网错误页面副标题
tipsObject配网错误页面相关的提示信息数据

注意: 该配置文件命名的通用格式为: bind_"deviceType".json,厂商在设置自己的设备时,只需修改具体的设备类型即可,例如你有个设备类型叫做 “ABC”,那么对应的文件名称为 bind_ABC.json,“bind_”保持不变。同时,一个配置文件对应一个设备类型,若有多个设备类型,则添加对应数量的配置文件即可。

配置设备设置项信息 不同的设备可能会有不同的设置项,为了方便厂商适配各自的设备,公版 APP 也提供了一些配置文件来设置各个设备的具体设置项信息。

  1. “我的”页面设置项列表数据配置 公版 APP 在“我的”页面默认设置了 6 项主要且通用的设置信息,如需修改,请到 Resources/Default/defaultSettingHome.json 文件,该数据对应的类是SettingsIndexFragment, 具体的格式如下:
[
  {
    "settingIndexConfigList": [
      {
        "id": 1,
        "groupId": "1000",
        "name": "设备管理",
        "type": "deivceManage",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_device_manage.png",
        "linkUrl": "rokid://settings/device_list",
        "enabled": true,
        "version": "1.0.0"
      },
      {
        "id": 2,
        "groupId": "1000",
        "name": "设备升级",
        "type": "deviceUpdateAll",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_update.png",
        "linkUrl": "rokid://settings/device_update_all",
        "enabled": true,
        "version": "1.0.0"
      },
      {
        "id": 3,
        "groupId": "1000",
        "name": "房间管理",
        "type": "roomManage",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_room_manage.png",
        "linkUrl": "https://s.rokidcdn.com/homebase/rokid$env$/index.html#homes/defaultHomeId/rooms",
        "enabled": true,
        "version": "1.0.0"
      },
      {
        "id": 4,
        "groupId": "1000",
        "name": "智能家居",
        "type": "sceneIndex",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_mine_scene.png",
        "linkUrl": "https://s.rokidcdn.com/homebase/tob/index.html#/homes/index",
        "enabled": true,
        "version": "1.0.0"
      }
    ],
    "title": "",
    "groupId": "1000"
  },
  {
    "settingIndexConfigList": [
      {
        "id": 12,
        "groupId": "1002",
        "name": "使用帮助",
        "type": "useHelp",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_help.png",
        "linkUrl": "rokid://help/index",
        "enabled": true,
        "version": "1.0.0"
      },
      {
        "id": 13,
        "groupId": "1002",
        "name": "联系我们",
        "type": "connectUs",
        "iconUrl": "https://s.rokidcdn.com/app/setting_index/settings_connect_us.png",
        "linkUrl": "rokid://settings/connectUs",
        "enabled": true,
        "version": "1.0.0"
      }
    ],
    "title": "",
    "groupId": "1002"
  }
]

设置项数据是按照组的形式来进行划分,具体的字段说明,如表格所示:

key类型说明
titleString每组设置项的标题
groupIdString每组设置项的 Id
settingIndexConfigListObject每组具体的设置项数据信息

settingIndexConfigList 的具体格式如下:

key类型说明
idString设置项 Id
groupIdString设置项所属的组的 Id
nameString设置项名称
typeString设置项类型
iconUrlString设置项icon URL
linkUrlString设置项点击后的跳转 URL
enabledBoolean默认为 true,扩展字段
versionString默认为 1.0.0,扩展字段

  1. 具体某个设备类型设置项数据配置 不同的设备可能具有不同的设置项,为了方便厂商配置设备的具体设置项信息,公版 APP 也是通过配置文件来进行相关的设置,这部分数据主要是设备的卡片数据(对应配置文件中的 quickSettingList 字段)和该设备类型支持的全部设置项(对应配置文件中的 settingList 字段),配置这块数据需到 Resources/Default/defaultDeviceTypes.json 文件,文件具体格式如下:
[
  {
    "typeId": "rokid",
    "typeName": "Rokid",
    "cnName": "未知外星设备",
    "blePrefix": "Rokid",
    "imageUrl": "https://s.rokidcdn.com/mobile-app/icon/device/rokid.png",
    "cloudAlarmSupport": false,

    "quickSettingList": [
      {
        "type": "vtWord",
        "name": "唤醒词",
        "iconUrl": "https://s.rokidcdn.com/mobile-app/setting_device/settings_vt_word.png",
        "linkUrl": "rokid://settings/device/vtWord",
        "action": "UPDATE",
        "minVersion": "0.0.0",
        "maxVersion": "9.9.9",
        "feature": false,
        "needOnline": true
      },
      .
      .
      .
    ],
    "settingList": [
      [
        {
          "type": "deviceNick",
          "name": "设备名称",
          "linkUrl": "rokid://settings/device/nickName",
          "action": "UPDATE",
          "minVersion": "0.0.0",
          "maxVersion": "9.9.9",
          "feature": false,
          "needOnline": false
        },
        {
          "type": "vtWord",
          "name": "唤醒词",
          "iconUrl": "https://s.rokidcdn.com/mobile-app/setting_device/settings_vt_word.png",
          "linkUrl": "rokid://settings/device/vtWord",
          "action": "UPDATE",
          "minVersion": "0.0.0",
          "maxVersion": "9.9.9",
          "feature": false,
          "needOnline": true
        }
      ],
      [
        {
          "type": "deviceLocation",
          "name": "设备地址",
          "linkUrl": "rokid://settings/device/location",
          "action": "LINK",
          "minVersion": "0.0.0",
          "maxVersion": "9.9.9",
          "feature": false,
          "needOnline": false
        },
        {
          "type": "deviceInfo",
          "name": "设备信息",
          "description": "查询若琪的系统版本, 序列号, MAC地址, IP地址",
          "iconUrl": "https://s.rokidcdn.com/mobile-app/setting_device/settings_device.png",
          "linkUrl": "rokid://settings/device/about",
          "action": "LINK",
          "minVersion": "0.0.0",
          "maxVersion": "9.9.9",
          "feature": false,
          "needOnline": false
        }
      ]
    ]
  },
  {
    "typeId": "102463A173734BAAB3E6EB5F497DB9FE",
    "typeName": "Pebble",
    "cnName": "若琪 · 月石",
    "blePrefix": "Rokid-Pebble",
    "imageUrl": "https://s.rokidcdn.com/mobile-app/icon/device/pebble.png",
    "quickSettingList": [
    ],
    "settingList": [
    ]
  }
]

具体的字段说明,如表格所示:

key类型说明
typeIdString设备类型 Id
typeNameString设备类型名称
cnNameString设备中文名称
blePrefixString该设备蓝牙搜索前缀
imageUrlString设备预览图片 URL
cloudAlarmSupportBool是否支持云闹钟
quickSettingListObject设备卡片4个快捷设置项入口信息数据
settingListObject设备全部设置项信息数据

quickSettingListsettingList 的具体格式如下:

key类型说明
typeString设置项类型
nameString设置项名称
iconUrlString设置项icon URL
linkUrlString点击设置项后跳转的 URL
actionString设置项点击后的操作,类型有 5 类:default——默认,DIALOG——点击后弹出对话框,UPDATE——点击修改属性值返回需要更新,SWITCH——有 switch 按钮,LINK——点击后跳转到其他页面
minVersionString设置项支持的最低系统版本
maxVersionString设置项支持的最高系统版本
featureBoolean设置项是否显示小红点,一般用于突出系统提供的新功能设置项
needOnlineBoolean设置项在 UI 上是否显示下划线,列表中最后一个设置项 item 置为 true

下面两张图片分别对应卡片设置项 quickSettingList 和 全部设置项 settingList 的图片