导出iPhone所有短信到Excel
导出iPhone所有短信到Excel打算找一些短信,用于作为样本训练识别。 一开始打算网上找到垃圾短信样本,但找了好久没找到,于是就想到用自己和家人手机里的短信,毕竟手机里短信一般不删除,也有小几千条,而且垃圾短信、推销、广告之类的应有尽有。 所以问题就变成了,如何导出 iPhone 短信? 这里笔者也查了好久,找到的第三方软件基本都是需要收费,最终发现了一个免费导出的方案。 首先不加密备份手机到电脑,如下图,选中Back up all the data on your iPhone to this Mac,点击Back Up Now,等待备份完成,备份完成后,再点击Manage Backups Manage Backups点击后,界面如下,可以看到已备份的记录,右键选择Show In Finder,在文件夹中打开 然后可以看到备份所在目录已打开,这时候需要找到文件名为3d0d7e5fb2ce288813306e4d4636395e047a3d28的文件,这个文件就是短信备份的数据库文件。然后问题来了,怎么找呢?看到备份目录一个个文件夹是不是懵,这怎么找,很简单,搜索,点...
Safari中使用NewBing
NewBing 的权限已经有了,但是想在 Safari 中使用 NewBing,因为不想日常开三个浏览器,Safari、Chrome、Edge,电脑内存不允许。。。 首先说步骤: Safari 安装 Microsoft Bing for Safari插件,并登录,能使用NewBing的账号 修改 Safari 的 UserAgent 为 Edge 的 UserAgent 修改默认搜索引擎为Bing 第一步很简单,就打开商店搜索安装即可,安装完成后,打开 bing并登录有NewBing权限的账号; 麻烦的是第二步,网上搜索到大部分是,打开Safari -> Develop -> User Agent -> Microsoft Edge,如下图: 但是这种方法只能在当前Tab页生效,打开新的页面后,就失败了,每个新 Tab 都单独设置一次,想想就不可能。所以有没有一种可以永久设置Safari的 UserAgent的方法? 当然有了,设置方法如下,设置之后,每次打开新的页面,UserAgent也会一直保持; 永久设置 Safari 的 UserAgent 1d...
iOS推送播放语音播报更新
iOS推送播放语音播报更新接上篇如何让iOS推送播放语音,之前的结论是iOS如果需要送审商店只能播放本地的mp3文件,这里更新一下: 更新语音的播放,最终调用的方法是UNNotificationSound(named: xxx),而这个方法官方文档注释如下: 12// The sound file to be played for the notification. The sound must be in the Library/Sounds folder of the app's data container or the Library/Sounds folder of an app group data container. If the file is not found in a container, the system will look in the app's bundle. public convenience init(named name: UNNotificationSoundName) 注释里说,语音文件会从这三个地方...
玩转OpenAI和ChatGpt
背景之前在其他平台就看到有大佬分享自己的ChatGPT的使用, 比如: 自力hzlzh, 但一直也没弄. 昨天突然看到 OpenAI 在商店有很多应用, 下载了一个发现里面接口都是失败的, 但是界面和方向感觉很有意思, 打算自己做一个自用的. 注册 OpenAI注册过程参考超详细注册OpenAI接口账号的教程, 很详细, 按照步骤一步步来即可, 要注意的国内的手机号收不到验证码, 所以需要国外的手机号或者通过接码平台(需付费), 验证码的接收我选用的US的手机号, 花费了 7.1元, 一次就成功了. 简单的说: 首先要能打开openAI的注册页面, 然后注册, 到接收验证码界面 如果有国外的手机号, 直接输入, 接收验证码; 如果没有, 再去注册一个接码平台, 选择语言为中文, 然后就都能看懂了, 然后充值 1 美元, 可以用支付宝支付, 然后搜索openai的接码, 选择一个, 耐心等待, 收到分配的号码之后 再去openAI的验证码界面, 输入分配的号码, 发送验证码, 然后等待, 在接码平台就会显示收到的验证码, 输入就可以注册成功. 如何使用OpenAI注册完...
CABasicAnimation进入二级界面再回来不生效
背景发现之前同事写的某个界面有个动效, 起初进入的时候是生效的, 进入二级界面再返回动效就没了, 动画用的是CABasicAnimation, 添加在 layer 上面. 解决看代码没有问题, 毕竟第一次就生效了, 以为是在页面消失时做了什么操作, 查了之后发现, 页面消失时并没有操作. 再回过来看代码, 代码动画部分是在didMoveToWindow中实现的, 大致如下: didMoveToWindow方法在页面消失和出现的时候都会调用, 难道是添加多次导致不生效了, 改成只添加一次之后发现效果一样, 进入二级页面再返回就不生效了. 1234567891011override func didMoveToWindow() { layer.addSublayer(gradientLayer) let basicAnim = CABasicAnimation(keyPath: "animateLocation") basicAnim.fromValue = [xxx] basicAnim.toValue = [xx...
base64加密出现的问题
背景项目中仿QQ闪照功能, 图片的发送逻辑是, 先转base64, 然后加密, 最后加密后的字符串作为文件发送; 在处理接收的时候, 按照先下载文件, 然后读取文件内容, 再解密, 然后按照 base64 字符串的方式生成图片, 却一直失败. 解决方法起初以为是, 加解密的问题, 仔细排查后, 排除了这个假设. 最后把解密后的字符串拷贝到VSCode中仔细观察发现, 其中多了很多\r\n. 搜索后发现, 是base64加密的问题, 由于base64一行不能超过76字符, 超过就会添加回车换行符(在 Windows中是\r\n, 在Linux中是\n). 而解析后其中的回车和换行就是错误信息, 所以解决方法是, 把\r\n替换为空字符串, 然后再去生成图片, 就正常了. 参考 base64加密出现的\r\n换行问题
gitignore不忽略指定文件
背景在使用腾讯 IMSDK 时, 通过Pod依赖了对应的库, Pods 文件夹在.gitignore中配置忽略, 但是需要修改IM SDK 的源代码, 又怕重新安装后被覆盖, 所以想要针对 腾讯 IMSDK, 在.gitignore中设置不忽略, 怎么做呢? 实现设置如下: 12345!/Pods//Pods/*!/Pods/TUI*/ 设置之后, 如果发现没有生效, 可以通过下面的命令校验: 123git check-ignore -v Pods/TUIChat/ 如下图, 第一次校验, 提示.gitignore中某行导致被忽略, 然后修改, 再次运行, 没有结果,说明已经成功 原理转载自: [Git].gitignore文件的配置使用 .gitignore忽略规则的匹配语法如下: 12345678910在 .gitignore 文件中,每一行的忽略规则的语法如下:1、空格不匹配任意文件,可作为分隔符,可用反斜杠转义2、以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。3、可以使用标准的glob模式匹配。所谓的glob模式是指she...
拼图APP
背景建设银行龙卡信用卡小程序有个拼图小游戏,如下图所示,感觉挺好玩的 于是就试着做了一个APP版出来,简单有趣,给小孩玩耍再好不过了,开源出来,欢迎大家感兴趣的自己运行到手机上体验。 Github地址: 拼图 最终效果如下:
Safari脚本编辑使用体验
背景背景是这样的,我在用 Safari看hackingwithswift这个网站时,感觉上方的一直固定的红色的和黑色的两条,如下图,太醒目了,于是便想,如何能把它们移除. 实现首先查看这两个是怎么实现的,右键选择Inspect Element,选中对应两块区域,查看,如下: 知道了两个模块的class或id后,下一步是在Console中,尝试获取,看能否实现,如下: 可以发现能够获取到,下一步就来考虑如何通过Safari Extension脚本编辑来实现自动移除. 首先,安装一个 Safari Extension, Userscripts或Stay-Userscript Extension,这两个二选一即可,针对自己写javascript这种情况,推荐使用第一个,因为Userscripts的编辑界面更好用. 安装后,打开,在 Safari Extension界面,启用,如下: 然后如下图,点击Open Extension Page, 然后点击New Javascript,就进入 js脚本编辑页面, 进入 js脚本编辑页面后,可以看到页面如下,其中 ...
iOS界面黑白实现
背景iOS APP界面黑白效果实现调研整理,总的来说网上目前有下面几种方法: 针对H5网页:注入js代码 针对APP原生界面: 针对图片和颜色单独设置 hook UIImageView的setImage方法,添加UIImage的Category,生成灰色图片 hook UIColor的colorWithRed:green:blue:alpha:方法 针对界面整体处理 创建一个灰色view,设置不响应事件,然后添加在window最上层 给App整体添加灰色滤镜 具体如下: 实现针对网页:针对网页的处理: 如果有基类,可以直接在基类初始化WKWebview的地方,添加如下代码: 123456WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];// js脚本NSString *jScript = @"var filter = '-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%); -ms-fi...