从AWS推送苹果消息与云日志监控

本来不在维护范围内,但个人有兴趣就继续为这个项目免费更新升级我3月份用Luajit做的一个程序。

手机上监控24x7的系统运行,一个好用的功能就是推送消息,比sms省钱还反应快。因为领导们都是iPhone手机,这次更新升级我的Lua程序就只包括了iOS和Mac版的app. 不再刻意支持android与windows.

透过aws发消息很方便,只需要创建一个app条目,把设备token注册到sns的app表里成为一个设备端点,再在aws sns配置几个topic用于消息分类,最后手机上发出订阅某几个topic的API调用就可以收到云端的各类lambda 脚本publish出来的消息。

这里有个坑:苹果的apns消息推送证书分两种,1是开发证书,只能向所谓安装为sandbox的app发送,比如我直接透过usb安装到手机的app就只能接受此类消息;2.生产证书,按理说是已发布到AppStore上的app才使用,事实上我发到testflight上的app也必须使用此类证书。

我目前还没找到用代码来区分这两种情况的办法,造成同一个app无法同时使用于usb下载和由testflight 下载安装的两种情况,目前是创建了两个app条目(分别是生产和沙盒),每个设备同时注册到两个app里,推送时在数据里指定apns及apns_sandbox条目。如果你知道如何在代码里判断安装的来源,留言告诉我好吗?

本次升级中的另一个功能是cloudwatch中日志的查询或实时滚动显示页面,并支持转成csv 后分享到numbers/Excel/微信。画面采用了透过luajit ffi调用dear imgui来实现。立即ui模式很直接,绑定数据和画控件合在一起看上去方便,但靠lua ffi写复杂画面还是蛮费劲的,回调仍然少不了,coroutine满天飞,怀念react里的jsx。另外dear imgui的组件仍然不够用,比如时间组件没有找到,就自己造了一个。做完了看看还是觉得太桌面风格,但免费给的就这样吧!好处就是速度很快,单线程把OpenGLes渲染 +aws网络访问+本地SQLite 数据库吃喝拉撒全包了,近10来万条的数据表显示也依然如丝顺滑,而整个包大小才30M.