Bili-helper 折腾记
Bili-helper 折腾记
前言
看不惯B站的夜间模式很久了,明明标榜深色跟随系统,结果居然需要手动杀掉后重启才会跟随
恰好学了一下Widget Kit,于是准备来一波demo,做一个iOS辅助客户端
准备
首先从这个 repo 了解了B站的基本API
开始
然后从认证开始入手
- 一是让用户输入账户信息后,App模拟代为发送后收集保存返回的Cookie(主要是SESSDATA),但这样安全性不高,而且还要加入打标的前端js代码,遂放弃
- 二是直接用类Safari原生网页组件,使用B站浏览器登录接口,然后拦截保存Cookie。
decode时有时候有多余的父级数据,想了n多方法还是没解决(用SwiftyJSON库等),最后只能强行套一层BiliResult解决
设计UI
设计App UI和Widget UI
Widget信息同步
因为Widget同样要获得UserInfo等信息,需要使用保存的SESSDATA,故二者间需要同步信息
最后采用App Groups + UserDefaults(suiteName:)解决
Note: ⚠️suiteName需要和group id一致
Widget无法使用URLImage
因为Widget中EntryView一旦发送就不能再改变(如动画、图片切换),所以在Widget中不能使用URLImage
解决方案: 重新撸了一个getImageData(for url:URL),在Widget的View中直接使用Data加载图片
alternative: 使用 URLSession.shared.downloadTask 得到一个本地图片文件(url),使用contentOfUrl加载图片
源代码
Bili-helper 折腾记