我的软件开发从业经验论

我的软件开发从业经验论

Aron Lv3

语音厅、国内安卓市场上架

我自己的人生经历。经历了,学习了,成长了…

应用上架

国内安卓市场上架比iOS还要麻烦。需要注意的点非常多。包括但不限于:

首次启动弹窗

工信部要求,安卓应用上架,在用户首次打开app的时候,必须显示隐私政策弹窗。在用户接受协议之前,App不得申请权限、不得初始化第三方SDK、不得读取设备序列号、设备IMEI等敏感信息。

权限弹窗与权限描述文案同屏

小米和华为要求权限弹窗出现的同时,也要有一段描述文字,解释该权限将要被如何使用。类似于iOS上的Info.plist权限描述文件。不同在于,安卓的你要自己写页面。
没有系统级别的支持,就是自己申请权限的同时显示弹窗,申请完了再让弹窗消失。可以说是非常恶心。安卓抄袭都抄不明白。

青少年模式

Vivo等平台要求语音厅应用必须提供青少年模式。并且必须要有实质性的功能,不能只是一个空壳。否则上架会被拒绝。


语音厅应用基本逻辑

语音厅应用主要是维护websocket,接入RTC服务,接入小游戏等,这类应用大部分都是换皮和套壳应用,核心逻辑都差不多,说白了,其中大部分都是圈快钱的思维。

维护WebSocket

自己维护Websocket,用于实现应用内的礼物飘屏,房间内消息,私信消息,系统通知等。

WebSocket的心跳机制异常重要,如果不维护心跳,前后端无法保证通信管道的有效性,导致无法正常通信。
通常来说,客户端可以定时向服务端发送心跳包(ping包),时限内收到心跳回复包(pong包)则认为该连接有效,否则要考虑重新建立连接。

语音厅核心,RTC

我们当时用的是腾讯TRTC。语音房间以及单人通话功能基于该服务。
多人语音厅与一对一通话,都是基于TRTC的API实现的,本质上都是多人语音厅,房间在线人数不同、房间人物的角色(观众、主播)不同,就形成了不同的业务效果(连麦,上麦讲话,多人通话等)。

IoT、硬件互联

智能硬件基本逻辑

手机软件在智能互联系统中扮演的角色是什么?需要做什么事情?
一款智能硬件,需要借助手机app来与用户进行交互。手机app作为介质,负责与硬件交互,读取硬件数据,控制硬件行为。

手机与硬件直连

所谓直连,手机通过蓝牙或者Wi-Fi去定向的连接到设备,需要用户手动管理连接,比如要选择设备蓝牙,选择设备的AP等。

通常来说,拿到一款硬件后,我们可能需要对其写入网络配置,如果是Wi-Fi产品,需要写入用户家里的Wi-Fi账号密码,如果内置4G芯片,需要写入服务器信息。怎么写入?通常是通过蓝牙或者局域网RPC调用。

通过蓝牙连接设备,扫描服务和特征,给对应的特征写入数据,这一步通常需要跟硬件厂商协作,制定交互协议。至于蓝牙调用,请看我的IoT之低功蓝牙

也有一些设备可以通过Wi-Fi连接,这些设备会自带一个Web服务器,我们可以通过HTTP请求来控制设备。通过Wi-Fi连接到这些设备后,就像访问普通服务器一样来操作设备。

局域网内连接

有些设备不需要你手动选择蓝牙或者AP,只要你处在同一个局域网内,就可以直接发现,并与设备进行交互。经典案例就是打印机,通常我们与打印机处在同一个局域网内,就可以直接发现并连接到打印机。

怎么做到的?

此功能实现基于mDNS协议。mDNS是一种基于UDP的发现协议,用于在本地网络中发现服务和设备。简单来说,手机端在局域网内广播一个mDNS查询包,智能硬件设备收到请求后,会回复一个mDNS响应包,包含自己的IP地址和端口号。
得到这些,接下来就是看业务场景,自己选择使用HTTP或者WebSocket来与设备进行交互。

  • 标题: 我的软件开发从业经验论
  • 作者: Aron
  • 创建于 : 2025-03-10 09:21:33
  • 更新于 : 2025-10-14 09:54:50
  • 链接: https://likeso.github.io/2025/03/10/my-work-experience/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论