-
iOS推送设置个性化消息提示音
更新到 iOS 17 后,不少用户反馈默认的通知声音不一样了,觉得新的提示音太安静了,以至于错过某些关键的通知。很可惜的是我们无法指导用户通过设置更改 App 默认的通知铃声,只能更改系统自带APP相关的提示音(如:电话、短信、提醒、收到新邮件声等)。部分用户表示微信可以修改推送的铃声,而且是修改完立即就生效了。设置界面效果:首先想到的是 APNs 推送可以指定 sound 字段,用于设置用户的铃声,大多数APP使用的跟随系统默认就是 default。示例数据:{ "aps" : {...…
-
使用 InjectionIII 提高开发效率
iOS 原生代码的修改编译调试,都是一遍遍的 Command + R 重新编译重启 App 来进行的。一般来说,随着项目的复杂性增加,代码量越大,编译的耗时就越久。大多数项目都采用二进制集成的方式(将部分代码/组件库先编译成二进制的库集成到工程里面),来避免每次都全量编译来提升编译的速度,但即使这样也没有解决每次修改代码(比如对UI的进行还原度调整)还是需要重新编译的情况。一直很羡慕前端开发或者是Flutter开发的同学,修改完代码就能直接看到效果。官方的效果动画如下:如果对于 iOS 原...…
-
搭建内部技术文档搜索服务
近几年团队一直在坚持在内部的 Confluence 平台上写技术文档,使用过程中发现文档的利用率较低,主要表现在如下方面: (1)目录层级深,找到文档入口需要花费一番功夫 (2)搜索范围大,精细化的搜索使用成本较高 (3)各类技术文档缺乏分类,散落在各处为了解决这些痛点,设计了一个仅用于团队内部的技术文档管理方案。主要是实现一个数据采集器将组内的全部技术文档采集到 Elasticsearch 里面,然后利用 Elasticsearch 开箱即用的能力实现一个简易的搜索服务。整个架构如...…
-
搭建Dart Pub镜像服务
和其他的语言一样 Dart 也有自己的包管理工具,Pub 是 Dart 官方的包管理器。pub 默认从 https://pub.dartlang.org/ 下载依赖包,如果需要修改可以通过设置环境变量 PUB_HOSTED_URL。如修改为清华的镜像源可以使用如下命令进行修改:export PUB_HOSTED_URL="https://mirrors.tuna.tsinghua.edu.cn/dart-pub"PUB_HOSTED_URL 设置的地址其实是需要能访问互联网的,那么对于在内...…
-
Xcode15和iOS17相关的问题解决
近期在做一些适配相关的工作,在适配过程中踩到了一些坑。这是一篇水文,主要是记录 iOS 17 和 Xcode 15 适配过程中遇到的一些问题和解决方法。1、Xcode 14 在 iOS 17 的真机上运行一般来说Xcode和iOS系统匹配才能运行,但是有些时候不想升级Xcode但是想要在高版本的iOS真机上面调试项目。首先从别人升级过Xcode的电脑上面拷贝 DeviceSupport 目录下对应版本的镜像文件过来就行了,目录如下:/Applications/Xcode.app/Conte...…
-
Jenkins Pipeline 插件自定义环境变量丢失问题
最近将一些构建任务由 Freestyle 迁移为 Pipeline 的实现 (主要是考虑后续可以通过任务模板的方式动态创建和维护),整体的实现过程较为简单,基本上就是把原来的执行步骤拆分成一个个的 Stage,将里面用到的一些配置抽取成环境变量的方式,统一设置到一起。最终的配置脚本如下(伪代码):node("mac01") { stage('Environment Setting') { env.ENV_BUILD_SCRIPT_URL = "http://127.0....…
-
macOS SSH 登录账号过期问题解决
近期对构建环境的几台 Mac Mini 做了一些“标准化”处理,处理完成后发现通过ssh访问输入密码无法正常连接了(按回车会立即提示连接结束)。通过查看控制台日志发现有如下的记录:错误信息:error: PAM: user account has expired for xxxx from 127.0.0.1各种查找资料没有找到能讲清楚这个问题原因的,经过一番测试发现一种解决办法:(1) 查看是否打开共享的远程登录 旧版的系统(<= macOS 12) 新版的系统(>= m...…
-
Docker配置JDK的Security Provider
最近将之前写的一个消息通知的服务支持通过Docker进行部署,以前一直都是通过命令行启动的。一般的流程就是编写Dockerfile文件编译镜像运行容器就大功告成了。Dockerfile配置如下:FROM openjdk:8VOLUME /tmp/dataADD app.jar app.jarENV JAVA_OPTS=""ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -ja...…
-
macOS iTerm2 环境配置
近今年开始在macOS上面不再使用自带的终端(Terminal.app),开始使用 iTerm2 替代。整个安装配置比较简单,记录一下个性化的配置的步骤(主要是配置主题和字体),免得再次配置的时候又需要到处去找。下载安装到官网下载最新的安装包,下载地址:https://iterm2.com/downloads.html点链接下载完成后直接拖 iTerm.app 文件到 /Applications 即可。主题配置主题使用的是 Snazzy,直接到 https://github.com/sin...…
-
iOS推送支持显示用户头像
从 iOS 15.0 开始新增了 Communication Notifications 的支持,可以让通知消息更加人性化。Communication Notifications 包含发送消息的联系人的头像,并且可以与 SiriKit 集成,以便 Siri 可以智能地根据常用联系人提供操作的快捷方式和建议。当前在 iOS 上很多Apple自带的应用或一些第三方应用(如钉钉、飞书、微博等)都使用了这个特性。代码实现整体的实现流程: (1) 在APNs的Payload里面开启mutable-...…