超的独立开发月报 2312

大家好,此系列文章为以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情ICP 备案我的以下几个 apps 已经通过阿里云完成了 ICP 备案了:MyerListMyerTidyMyerSplash 2PhotonCam(新 app,下文会提到)当然,你会发现我没有对 MyerSplash 以及 Photon AI Translator 进行 ICP 备案——这是因为前者本身依赖 Unsplash 的服务,在中国大陆访问本身就比较困难,而后者因为依赖 OpenAI 的

超的独立开发月报 2311

大家好,此系列文章为以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情MyerList本月 MyerList 新增对快捷指令的增强支持,现在你可以:通过快捷指令获取 MyerList 内所有的提醒事项或者数目把特定的提醒事项,开启实时活动,在锁屏和灵动岛上显示把一个或多个输入内容(文本、URL 等)作为提醒事项,加入到 MyerList,并可设置通知时间以及是否开启实时活动。利用此功能,你可以结合其他快捷指令,来实现诸如一下等的功能:获取最新的系统日历事件或者提醒事项,启动实时活动收到快递到达的短信后,自动提取信息,使用 MyerList 的自定义模版,然后通过实时活动展示特定的内容设置 iPhone 15

超的独立开发月报 2310

大家好,此系列文章为以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情MyerListMyerList 在继自定义模板更新后,带来多个比较关键的功能:新增系统本地通知推送的支持。MyerList 本身主打是利用灵动岛和实时活动进行的「视觉」上的提醒。不过也有很大一部分用户(包括我父母)需要听觉和触觉上的提醒,因此也现已加上本地通知提醒的功能。在开启的时候,会自动提取当前的提醒事项相关的时间来设置通知时间,当然你也可以自动设置。你也可以设置重复通知:每天、每周或者每月——需要值得提及的是,此重复功能完全利用 iOS 系统的重复,不需要联网,不需要关联系统日历或者提醒事项,不需要定期打开 app 来确保重复提醒一直有效(一些拥有精细化重复设置的

超的独立开发月报 2309

大家好,此系列文章为以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情MyerListPhoton AI TranslatorMyerTidySubstack 文章MyerList随着 iOS 17 的正式推送,MyerList 发布了 v2.1.0 更新,支持交互式小组件。在 iPad 上也支持开启「实时活动」了。此外,你可以使用快捷指令 app 来快速添加提醒事项了,意味着你可以在 iPhone 15 Pro 上设置「

超的独立开发月报 2308

大家好,此系列文章为以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情MyerList使用 Sketch 重新设计了 App Icon。上图的左上角第一个为原版,右下角的为最后采用的版本,中间的是设计过程中经历的各种方案。除了重新设计的 App Icon 外,MyerList 到最新版本为止 v2.0.2 还包含了以下的更新:在 Mac 上支持用户登录的时候自动启动(需要购入买断的 Pro 功能),配合 Mac 上的 Menu

apps

超的独立开发月报 2307

大家好,从这个月起,会开始以月为维度来总结一下这个月的一些产出,包括但不局限于:各个 apps 的更新内容汇总写的文章的汇总做的一些其他有意思的小事情Photon AI Translator目前版本 v2.3.0,主要更新支持了:支持「复习模式」。在复习模式里,你可以按照熟悉度筛选出你通过此 app 查询过的单词,然后根据所查询的原文本以及例句,你可以对这个单词进行回忆,并标记熟练度。「复习模式」里的内容来自你在 app 内查询过单词,默认已经支持 iCloud 同步,所以你可以在这里看到你通过 iPhone、iPad 和

swiftui

超谈 SwiftUI:探究和实践 “隔山喂牛” 式内建 API 的实现

前言此文为「超谈 SwiftUI」系列的文章,主要输出一些使用 SwiftUI 开发几个 apps 后的一些心得、经验和踩坑记录。希望能帮助到你。本文将剖析 SwiftUI 的一些官方内建 API 可能的实现方式,以及实践如何应用到自己写的自定义 SwiftUI View 上。“隔山喂牛”?在直接解释何为 “隔山喂牛” 式的 API 风格前,先来思考一下,当我们设计一个 View 的 API 的时候,我们到底在设计什么—

swiftui

超谈 Swift:利用 Macros 实现 Swift 版本的 Retrofit

2023 年 Swift 语言和 SwiftUI 都迎来了不少的更新。如果说 SwiftUI 上的更新你大概率可能因为往下兼容性的问题用不上,那么 Swift 5.9 上迎来的 Macros 功能应该能吸引到你的注意:它允许你在编译时根据上下文来生成代码,帮助你减少写重复的相似度过高的代码。Swift Macros 仅仅是帮你生成代码,是一个 ABI 兼容的特性,配合 Xcode 15 即可(当然目前仅是 Beta 版本)并在老项目中使用。如果你不了解

Photon AI Translator 更新汇总:截屏翻译、平台扩展和更多

大家好。在今年三月份的时候,借着 AI 热潮做了一个小巧好看的基于 OpenAI 的 macOS 上的翻译应用:Photon AI Translator。主要卖点是:纯 Menu Bar 模式,随时方便唤起;支持翻译、词典、语法检查和提炼要点模式。其中翻译模式还支持针对 Xcode 和 Android Studio 的多语言文本翻译进行格式保留。在发版的时候也写过一篇介绍:https://zhuanlan.zhihu.com/p/

blog

超谈 SwiftUI:配合 CoreGraphics 实现区域截屏功能

此文为「超谈 SwiftUI」系列的文章,主要输出一些使用 SwiftUI 开发几个 apps 后的一些心得、经验和踩坑记录。希望能帮助到你。我的翻译软件 Photon AI Translator 有一个屏幕截图翻译的功能,通过快捷键激活后,会将屏幕画面冻结同时变暗,然后用户可以通过鼠标拖拽屏幕画出一个区域,然后识别里面的文本,然后进行翻译并显示结果。这里的一个核心技术是,如何实现截屏功能?其实这个没有你想象的难。先来剖析一下这个需求,要实现这个功能,按照步骤来,我们需要:截取当前键盘聚焦的屏幕画面,得到一个 Image往当前键盘聚焦的屏幕上绘制上述得到的 Image覆盖一层黑色半透明的遮罩,然后在上面检测手势操作手势操作将会产生一个

超谈 SwiftUI:一个向下兼容的纯 Menu Bar app 方案

前言此文为「超谈 SwiftUI」系列的文章,主要输出一些使用 SwiftUI 开发几个 apps 后的一些心得、经验和踩坑记录。希望能帮助到你。此文介绍 MenuBarExtra,以及它目前往下兼容的问题和处理方案。此文的方案在我的 Photon AI Translator app 上实践,个人感觉效果还不错,欢迎使用并提出反馈意见。MenuBarExtra 向下兼容问题MenuBarExtra 是一个 SwiftUI 上的 Scene,用于在 Menu Bar 上显示你的 app

超谈 SwiftUI:Text 性能问题和 Workaround

前言此文为「超谈 SwiftUI」系列的文章,主要输出一些使用 SwiftUI 开发几个 apps 后的一些心得、经验和踩坑记录。希望能帮助到你。本文将介绍 Text 这个 SwiftUI View 在某些场景下的性能问题以及解决的 Workaround。Text 性能问题在 SwiftUI 里要显示一段不可编辑的文本,你可以直接使用 SwiftUI 本身的 Text View。Text 本身支持设置的特性已经足够了:支持设置字和行间距、多语言、AttributeString 等,

超谈 SwiftUI:剖析 App 结构和页面导航

前言大家好,这是一个新系列的文章,来聊聊使用 SwiftUI 开发的一些事情。作为一名以往都是以 Android 开发任职的开发者,在使用 SwiftUI 陆陆续续有一年多时间了,尝试着去玩转 SwiftUI,也充分的利用了这个现代的开发工具,期间也不断的探索和实践,来熟悉和掌握 SwiftUI 的开发思路。近几个月的开发成果是 MyerList、MyerTidy、MyerSplash 2 和 Photon AI Translaltor 这几个 apps。这几个有着不同的功能模块的应用,尽管都不是那种特别复杂类型的 apps,但是在使用

travel

敬畏自然:西藏探索

拉萨印象关于拉萨,你的拉萨印象是什么?坦白说,西藏一直以来是我的保留旅行地方,去过四川、青海和云南的藏族自治州,但也仅仅点到为止。除了远以外,一直以来从外界接触到的印象是:高海拔地区,很容易有高原反应,会比较辛苦。因此这次进藏,选择了从西宁坐一晚一天的火车到拉萨。上一次在网络上看到拉萨,是 2022 年 8 月份开始的 Covid-19 疫情时候,看到拉萨到处在排队做核酸检测的照片。除此之外,我对拉萨的印象就只有布达拉宫,而这是一个怎样的城市、有什么吃的,都完全不了解。在火车行驶进藏的过程中,就能看到各种各样的山。让我没想到的是,在拉萨下火车后,发现拉萨是个四面环山的城市,

Photon AI Translator 和做产品的一些思考

背景和契机近 4 个月内我一直在做 Apple 平台的产品,虽然从使用量来说「简体中文」用户是占多数,但我一直有做多语言的支持:英语、简体中文和繁体中文。习惯上 Google 翻译的我,基本上在使用 Xcode 过程中也会一直在浏览器开着 Google Translate 的网页,为的是能 ”随时“ 地去把简体中文翻译成繁体中文——当然这个 ”随时“ 可真不是随时,毕竟从 Xcode 切换到 Chrome 再到对应的 Tab 还是需要点功夫。

MyerList:创造你的实时活动

今年的 iPhone 14 Pro 系列上的灵动岛可谓抢足了眼球,从发布会上的惊艳到发售后的诸多议论,注定这不是一个大众都能认可的软硬件功能。不过别 ” 本末倒置 “了,灵动岛背后的核心,应该是今年 iOS 系统带来的「实时活动」(Live Activity),尽管 WWDC 上已经做了介绍了,但直到 iOS 16.1 上,我们开发者才得以使用 ActivityKit + WidgetKit 来实现。新 app MyerList 的灵感来源于前段时间坐了不少城际高铁的经历。

2022 年做 Apple 多平台开发,SwiftUI 能独当一面吗?

在 2021 年的一月,我发布了一篇文章 ——「MyerSplash 完成了全平台的目标」。MyerSplash 完成了全平台的目标所谓的全平台,是包括 Windows、Android、iOS、iPadOS、macOS 在内的全平台。但是一共有三套代码库 ——UWP/XAML,Android 原生 Framework 以及使用 UIKit + Mac Catalyst。是的,Apple 平台本身是只有一套代码库,完全是靠 UIKit 来开发,同时使用 Mac

MyerTidy 新版本上新:支持合成「延时切片」功能

时间切片 Time Slice 是延时摄影的静态表现形式:你通过固定机位并在特定的时间间隔内拍摄一系列照片,得到一组静态照片,然后在后期的时候按照时间顺序,取每一张照片的局部,然后拼接起来,便得到一个名为时间切片的照片。2022 年 7 月份在梧桐山顶拍摄了一组日落时分的延时照片,并在后期导入电脑并使用 DaVinci Resolve 合成延时视频的时候,我突然想起一个朋友在 2013 年输出的一个时间切片照片。于是也想给我这组照片制作一个时间切片。后期制作时间切片是一道很复杂的工程(比如,可以参考这里),随着照片数目的增多,操作步骤会越多。在正式使用 Photoshop 尝试制作时间切片之前,我就直接有个想法,要不自己实现一把?事实上,

【ONE-THOUGHT】关于开发难度中心转移的问题

软件工程之所以叫软件工程,是因为这不是一个人的事情。哪怕是一个简单的 App,从你上层的业务逻辑到所使用的官方库(UIKit、Android Framework 等),都能组合成一个复杂的软件架构,但如果上层业务简单,那么难度重心就在给上层提供支持的 Framework 里,如果是一个复杂的 App,那么也有可能偏向上层。但这终究只是偏向的问题,如果你所处的团队或者公司,已经是一个有着相当复杂的业务(哪怕在用户眼里,其实没那么复杂),那么这些想法可能是错的:我们复杂的东西没有难度,不需要做极致的优化因为做的东西没难度,甚至也没有涉及到高深的算法,因此做的事情没有价值正如前面说的,不同层级的难度其实是不一样的,因为他们的「客户」是不一样的,但基本都是给上层业务服务。但作为软件工程的一个分子,