我用flutter开发基于ChatGPT的聊天助手跨平台多端应用的历程

2,210 阅读7分钟

前言
最近ChatGPT比较火,玩起来确实也比什么siri,小爱,天猫精灵之类的智能太多,但由于国内与OpenAI之间的双向限制,导致很多人非技术向的人很难玩到ChatGPT,但有一些对ChatGPT有所耳闻的人又非常想玩一玩,比如那些非技术向的自媒体博主们。于是就出现了很多付费进群,付费知识星球,教如何使用魔法,使用注册ChatGPT等等,赚的盆满钵满,发这篇文章的前个晚上,还刷到一个头条图片,列出了几个大的教授ChatGPT的知识星球收入排行榜,榜首一个月收入270万,实在我等技术宅不会赚钱啊,钱都给机灵的人赚去了。

话题扯歪了,本篇文章讲的是本人在业余时间,用flutter开发了一个ChatGPT套壳应用的历程,起因是同事和朋友问我能不能搞一个让他们用用,他们有些不会魔法梯子,有些不会注册使用,我起初想弄一个简单的带有聊天UI的web给他们用用,用了几天,说网页不好用,各种细节,不如别人家的套壳app,我无语的同时,也激起了心思,那就做一个功能完整一点的应用吧,顺便试试放出去看看有没有人用。

准备工作
1.ChatGPT账号一个,绑定付费信用卡
2.境外服务器一台,用作中转api
3.境内服务器N台,用作具体业务后台
4.已备案域名一个
5.苹果开发者账号

目标是以ios平台为主,稍后我会解释为什么没提安卓。

开发大概
因本篇内容不是纯技术分享文章,所以不会分享完整的技术细节。

整个应用的流程图大概如下:

image.png

登录: 登录这里采用了最快捷的苹果登录,同时在电脑版的登录,增加了扫码登录,如果是macos的电脑版,依然提供苹果登录,同一个苹果id是同一个账号体系。
用flutter画一个极简的登录页面,其实还挺好看:

dc4047ddf7001e16ebe7570eac83c9e.jpg

主应用布局: 跟大多数现有的聊天APP差不多,我分为3个tab页:
1.聊天列表页
2.助手管理页
3.个人中心页

8249cf572ee0b6e618333b31f963aaf.jpg caa7858b49db51e63f8db1b0ee6a6f2.jpg 99c79c5d692d427511d6cd66e90090e.jpg

创建助手: 这个其实就是类似ChatGPT官方网页版左侧的创建新对话,我只是把它做成偏拟人化一些,可以自定义取名,自己选择配音声线。

6d1a411bee6c48aaabd259b8b1cb761.jpg 58a7db5ace856ee1c7ea518a1470e9a.jpg

配音用的腾讯云的语音合成,这里提一下,短文本和长文本合成速度不一致,在使用过程中,长文本等待时间会稍微长一点。

聊天内页: 这个是app的重心页面,但有趣的是,这个页面我大部分代码是让chatGPT帮写出来的,开局直接问:“用Flutter帮我写一个聊天的ui页面,要区分左右布局,要带头像,消息向上滚动”,它给的答案能大概画出一个像样的聊天页面,你只需要自己修改,或者继续追问它让它帮你修改就可以达到差不多能用的地步了。

dbab4837662cd03d90674551dcc54d3.jpg

关于聊天列表向上滚动的功能,很多人第一反应是想到Listview的reverse:true,但其实有一个细节:当只有少数几条聊天记录时,撑不满一个屏幕,此时聊天记录也是从最底部排列的,这样怪怪的,为了解决这个问题,还需要把shrinkWrap:true,然后把Listview包裹在一个Align里,对齐方式是 Alignment.topCenter。

开发的细节太多了,我在这里就不一一说明了,感兴趣的可以在使用这个app后,回复或者提问。

多端
原本是想开发完一个iOS的就完事了,可是架不住朋友说,手机只能纯聊天,电脑版更方便用于工作方面的提问,然后复制粘贴。我一想也是,刚好借着flutter多端编译的优势,搞一下多端发布。

mac端: 苹果的生态,只能说这个几乎是无缝编译了,除了需要稍微改改ui布局,让它显得更加适配电脑屏幕。用Platform来判断是否是mac或电脑大屏,或者只用LayoutBuilder,或者用Getx里带的判断方法,都可以,看具体业务需求了。

2560x1600bb.png

windows端: 编译windows时,需要隐藏掉一些跟苹果生态相关的东西,比如苹果登录,苹果支付。同时,有一些插件包可能不适应,需要仔细排查,比如一开始我用的just_audio插件用来播放声音的,结果发现windows平台不支持,只能换成audioplayers。由于开始写的时候,比较偏向于cupertino风格,所以,编译成windows也没时间重写一套风格,在windows上用cupertino风格感觉有点怪怪的,先将就吧,后面如果用的人数还可以,就花精力重写一套。

android端: 安卓没有发布,原因是这里面涉及支付,目前暂时只用了苹果支付,安卓无法使用。安卓计划要用微信支付的,但目前由于公司收款账户不能与这个app牵扯到一起,所以得另外注册公司来弄,短时间内无法完成这一版的安卓发布。所以也导致了,目前这个应用,只能在基于有iPhone或者mac的情况下使用,windows可以用iPhone手机端进行扫码登录。

发布
应用取名为【Chat AI助手】,后来其实发现这个名字相似的太多了,不打完整的字几乎搜不到,看来商店关键词这一块还需要学学...
ios版和macos版都上架了苹果商店,直接搜索即可下载。 苹果商店直连地址:apps.apple.com/us/app/chat…
windows版没有上架微软商店,只提供exe文件下载。
官网地址:chat.xbzweb.com

关于收费
在座的各位都是行内人,无论对收费怎么看,都应该明白,天下没有免费的午餐。ChatGPT的接口是收费的,那些使用官网网页版的,也是官方送的18美金体验额度,但问题是需要魔法梯子,需要虚拟手机接码,光这两步就卡住大部分非技术向的人群,所以才有了开头我说的那些付费教程。套壳应用也是要付费给ChatGPT接口调用费的,另外还有服务器等运营成本,所以希望对付费使用的软件多一点包容。
我没有设置vip会员制,也没有设置包月包年包干制,那种感觉要么就是收费很贵,有坑一个算一个的感觉,要么就是感觉可能随时跑路,如果有个5月一个月你敢用吗?
我采用的是金币消费制,每轮对话(一问一答)收取5金币,合5分钱一轮,用多少就充多少,不用就不充,app内也没加任何广告。我只是试一试的态度,不打算就非要靠这个赚钱。
这里的人都是行内人,发这篇文章,重点是分享心路历程,你们要是下载了,算是帮我刷个下载量,没需求的话尽量不要充钱,不然我这篇文章就变成纯广告了。
每个新账号送10次体验次数,没需求的话玩玩就可以了。

结语
由于目前各国对ChatGPT的政策还不明朗,所以不能调用公司太多资源。差不多整个开发过程从前端,到后端,到部署,再到宣传物料(如商店5图,演示视频,官网ui设计),都是我一个人在搞,其实很枯燥,但好在flutter的多端能力确实出众,节省了太多工作量,由这个项目可以看出,flutter的未来是很可期的,我会一直追逐flutter的步伐。