# SuporProjectDemo **Repository Path**: leiqingqiang/SuporProjectDemo ## Basic Information - **Project Name**: SuporProjectDemo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-03-15 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SuporProject2 #### 一、介绍 苏泊尔AIoT二期App,提供苏泊尔设备管理、云食谱浏览与制作、社区服务,用户体系等。 #### 二、软件架构 ##### 1.技术选型 - 本项目完整规划涉及智能硬件、APP/小程序/H5、云服务器等多形态,移动端包含APP/小程序/H5,结合当前项目需求, 采用阿里**ARouter**路由框架和云移动开发平台mPaaS框架。 - Native UI使用MVP+MVVM编程模式。编程模式各有优缺点,不限定一定要使用何种编程模式。 - 网络请求使用Rxjava+Retrofit+OkHttp框架。 ##### 2.软件框架简介 ​ 项目整体使用组件化开发模式,依照APP原型分为4个tab组件,后期子组件如业务复杂可再细分,各组件模块互不依赖,降低耦合。 ​ 业务模块采用Native+mPaaS小程序方式做开发,Native层作为小程序与设备交互的桥梁,同时封装设备交互组件(如NFC、WiFi、BLE),屏蔽具体业务。而mPaaS小程序可以做到动态化更新和发布,能够快速触达多端。 ##### 3.软件框架图 ![](D:\2020\doc\supor\设计\系统框图 - 副本1.png) - **基础组件:** 基础组件存放一些基础的工具类,包括网络请求框架,图片加载库,安卓权限处理,ARouter库等,基础组件一般不做改动。本项目基础组件对应工程 **lib** 文件夹下的module,包括banner库,基础配置库,苏泊尔nfc库,机智云SoftAp配网库。 - **通用组件:** 通用组件依赖基础组件,通用组件存放各组件通用的一些模块,比如通用的资源文件,LBS定位,ARouter路由地址列表,社交分享等,通用组件可能会随时做改动。本项目通用组件对应工程 **common**文件夹。 - **子组件:** 根据UI原型将APP分为宿主组件和4个tab子组件:家庭 **ft_home**,美食 **ft_food**,社区 **ft_community**,我的 **ft_mine**,各tab组件分别依赖通用组件,组件内采用MVP+MVVM编程模式开发,不限定使用何种模式,各tab组件相互独立,互不依赖,如需调用其他组件页面或者业务逻辑请使用ARouter进行组件之间的路由跳转,路由路径填写在通用组件路由表内。 ​ ​ 各组件在 **config.gradle** 配置文件中将集成开发选项关闭可独立开发生成apk文件,打开集成开发选项APP宿主组件会依赖4个tab集成为一个完成的apk文件。 #### 三、使用 1. **用户信息:`GlobalDataCache.userInfo`** 2. **绑定的设备列表:`GlobalDataCache.deviceTree`** 3. **产品品类列表:`GlobalDataCache.productTypeList`** 4. **外网IP:`GlobalDataCache.OUT_IP`** 5. **全局获取Application:`AppAgent.getApp()`** 6. **判断用户是否已经登录:`AppAgent.isLogin()`** 7. **默认环境切换:`AppAgent.currentServer`** 8. **显示登录页面:`AppAgent.showLogin(boolean isFull)`** 9. **分享弹框使用:** ```java // 食谱分享示例 // 初始化分享弹框 JSONObject jo = new JSONObject(); // 分享类型:0取消分享;1微信;2微信朋友圈;3 QQ好友;4 QQ空间;5微博;6支付宝;7抖音 // jo.put(Constants.Key.param_shareType, 1); // 分享方式:0x1-text,0x2-image,0x3-URL jo.put(Constants.Key.param_type, 3); // 分享标题 jo.put(Constants.Key.param_title, "排骨汤蒸玉米"); // 分享内容描述 jo.put(Constants.Key.param_desc, "家常萝卜排骨汤搭配蒸玉米,肉质蛋白与膳食纤维的营养搭配,齐活儿了。"); // URL连接 jo.put(Constants.Key.param_path, "https://i.supor.com/supor-food-ui/protocol/share-supor/#/pages/detailOfRecipe/detailOfRecipe?code=2FF48DB4E0D45E44A411221C9F7680E25CB85D1C26C76F26ED2E9C94E8E9B983D3A75A475A861C87085E5513296EB0E024038811DFD56C3D225E7E7B58EA0BD7"); // 分享图片使用 URL(imgUrl) jo.put(Constants.Key.param_imageUrl, ""); // 自定义分享预览大图 jo.put(Constants.Key.param_bgImgUrl, "https://iot-video.supor.com/image/cover/3E87754C161F4DAFA594BB8DDF14441F-6-2.jpg"); // 视频Url jo.put(Constants.Key.param_videoUrl, "https://iot.mp4"); SharePopUtils.getInstance() .showWechat(true) .showWeibo(true) .showDouyin(true) .params(jo) .initPop(this); // 弹框显示 SharePopUtils.getInstance().showPop(this, bindingView.llRoot) ``` 10. **启动小程序:** ```java /** * 原生端启动小程序携带参数 * * @param tinyAppId 小程序id * @param urlType 链接类型:0-无操作(不做任何处理)|1-外链|2-食谱详情页|3-设备详情页|4-搜索页 * @param redirectUrl 跳转链接:0-无操作|1-外链:直接外链地址|2-食谱详情页:食谱id|3-设备详情页:{“pid”: “设备ID”, “mac”: “设备Mac地址或唯一码”} */ AppAgent.startTiny(AppAgent.tinyAppId, urlType, redirectUrl); ``` #### 四、设备状态 设备状态通过机智云`websocket`链接获取。 ##### 操作步骤 1. 初始化websocket并连接机智云websocket服务; 2. 连接成功后执行机智云平台登录操作; 3. 登录成功后订阅设备状态消息; 4. 更新设备列表状态同时上报状态至H5; ##### 交互流程 ![](D:\2020\doc\supor\苏泊尔二期需求\Websocket.png)