APP 隐私清单添加
# APP 隐私清单添加 背景今天送审 APP,提交审核后,邮箱收到了ITMS-91053: Missing API declaration的提示,查看后,发现是缺少隐私清单的提醒。如下图: 记得年初的时候,曾经看到过苹果发布这个的通知(List of APIs that require declared reasons now available),但是当时没有在意,也不知道如何实现,所以就没有管。现在既然提醒了,就说明强制了需要修改。 网上查阅了之后,发现,只有腾讯的这篇苹果隐私策略:PrivacyInfo.xcprivacy,比较合用,再结合下面的图片,就可以看出用法,和对应 key 的意义。 实现具体使用,选中项目,CMD + N,搜索privacy,然后选择类型App Privacy,输入名称PrivacyInfo.xcprivacy,如下图,选择要添加的Target,然后点击完成。 然后选中PrivacyInfo.xcprivacy,右键选择Open As -> Source Code,如下图: 然后参考腾讯的这篇苹果隐私策略:PrivacyInfo...
Xcode 15.3 Archive失败
Xcode 15.3 Archive失败背景昨晚升级 Xcode 到 15.3,今天打包的时候发现 Archive 失败,提示:Call parameter type does not match function signature!,仔细看报错里是和HandyJSON相关的提示。 解决起初以为和 Pod 库有关系,但是找同事确认后,发现低于 Xcode 15.3 的版本是可以打包成功的,但是 Xcode 15.3 的版本就报错了。然后搜索HandyJSON Call parameter type does not match function signature!,发现了这个,Building HandyJSON in Swift 5.10 throws a fatal error ,是Swift 5.10 编译 HandyJSON报错了。目前HandyJSON官方还未解决。 暂时的解决方法是: 在 Pod 的 Target 中找到 HandyJSON, 然后设置Optimization Level为 None和No Optimization,如下图: 然后再次尝试 A...
如何获取少量MATIC
如何获取少量MATIC背景:xlog创作者激励计划赠送了 14 MIRA,而在把 MIRA 提出的过程中,遇到了需要支付gas fee,即少量 MATIC 的情况,0.01~0.03不等,取决于人品(多刷几次),而如何获取这少量 MATIC,卡住了好久。 这里分享一下,昨天刚体验的可以成功获取少量 MATIC 的可行步骤,顺便分享一下遇到的诈骗。。。 一开始搜索没有足够的 matic fee,出来的结果,有些已经过期了,有些网站打不开。 昨天换了一个方式,搜索如何获取 MATIC fee,然后看到了这个How To Get FREE MATIC: Use a Faucet!,看到这里有如何获取 0.01 MATIC 的步骤,如下图,于是边想着尝试一下: 步骤翻译过来就是: 加入Polygon Discard 加入后,先认证,认证是点击start群组,然后按照步骤,选择自己感兴趣的,发送认证 认证通过后,可以看到support,然后找到matic-faucet频道,如下图: 然后发送faucet-send YourReceivingAddress,就会有机器人回复,发送 0...
RxSwfit 使用
RxSwift使用备忘RxSwift 常用方法使用,这里记录一下。 RxSwfit实现搜索distinctUntilChanged的作用是,相邻的重复事件不产生新的事件,所以搜索中使用distinctUntilChanged可以保证只有每次触发的搜索都是不同的字符串,也可以保证输入停止后只会触发一次搜索。 throttle 和 debounce 的区别: throttle 每隔固定时间调用 debounce 事件停止后隔多少秒调用 所以,如果需要实现输入中搜索,使用 throttle 1234567891011fileprivate func configureSearch() { searchBar.rx.text .orEmpty .throttle(1.0, scheduler: MainScheduler.instance) .distinctUntilChanged() .subscribe { [unowned self] (query) in ...
快速打开命令行
快速打开命令行作为经常用Mac的开发,通常会有一个需求,需要在文件夹Finder中快速打开命令行,且进入当前文件夹。而如果使用 Xcode 的话,通常还会有另一个需求,即在 Xcode 中快速打开命令行,进入当前项目。 Ps:下面演示的命令行工具,使用的是Warp,但是系统的 Terminal也支持 在文件夹 Finder中快速打开命令行打开系统设置,找到Keyboard,然后点击Keyboard Shortcuts,如下图: 然后找到Services,展开Files and Folders,勾选Open folder with Warp,在右侧的none的位置双击,输入快捷键,然后点击完成,以后就可以通过这个快捷键快速打开Warp了,如下图: 随便打开任意目录的文件夹,然后按刚刚输入的快捷键,就会发现,从当前目录快速唤起了Warp,且进入的就是当前文件夹。 在Xcode中快速打开命令行在Xcode中快速打开命令行,是通过使用Awesome-Xcode-Behaviors 首先下载Awesome-Xcode-Behaviors,并解压到指定文件夹, 然后进入此文件夹,授...
Mac环境配置和常用软件
背景分享一下Mac常用的软件和习惯配置,用于备份: 软件: 浏览器: Safari Userscripts AdGuard GenerateQR JSONFormat Chrome 2FAS AdGuard AdBlocker Bitwarden JSON Viewer MetaMask Proxy SwitchyOmega QR Code Generator SimpRead Speechify Text To Speech Voice Reader Tampermonkey uBlock Edge: WorkSpace 便捷管理标签,插件同上 Brave: 垂直标签页 工具: Qmenu:右键工具,用于设置右键新建什么类型的文件、右键选择用什么工具打开 Xnip:截图标注工具,快捷键触发方便 PicGo:图片云盘工具 Bob:英文翻译,选中使用快捷键,支持配置翻译平台 The Unarchiver Warp:命令行工具,带提示,能选中复制粘贴删除 Tencent Lemon:缓存清理,磁盘清理,开机启动项清理 Bitwarden WPSOffice LICE...
一文学会iOS蓝牙开发
一文学会iOS蓝牙开发背景最近做APP对接蓝牙设备开发,这里分享一下iOS对接蓝牙设备中需要注意的东西,大致包含下面这些方面: Xcode蓝牙权限 如何扫描蓝牙设备、获取Mac地址 不同蓝牙设备切换 写入蓝牙命令 data转16进制字符串 16进制转String crc算法 数据异或计算,字符串异或 负数异或计算 依次写入多个命令 蓝牙开发的大致流程首先来了解一下蓝牙开发的流程,总结如下: Xcode配置蓝牙权限 -> 启动蓝牙 -> 扫描周围蓝牙 -> 连接指定蓝牙 -> 校验是否连接成功 -> 蓝牙读/写 -> 断开连接 流程图如下: 具体步骤1. 配置Xcode蓝牙权限 General Tab下,Frameworks,Libraries, and Embedded Content中添加 CoreBluetooth.framework,如下图: Signing & Capabilities Tab下,Background Modes中,勾选Uses Bluetooth LE accessories,如下图: ...
集成腾讯短视频SDK记录
集成腾讯短视频SDK记录有需求是录制一段视频并上传,服务端可见。最后才用集成腾讯SDK的方式,走了一些弯路,这里记录一下。 SDK 选择首先是SDK选择,对于iOS来说是腾讯的短视频SDK SDK集成然后是,SDK集成,按照上面链接步骤,把TXLiteAVSDK_UGC.framework和依赖的系统库集成到项目中,然后添加plist权限,再添加UGCKit模块,发现编译失败。对于我的项目来说,是因为 WCDB 库冲突,项目中使用的私有库封装了 WCDB,使用的是静态库的方式。和上面 SDK中冲突了,所以需要单独设置。修改了好久,编译通过之后,运行后发现,WCDB 初始化失败,又排查了好久,最终解决方法是: 在 Build Settings 中的 Other Linker Flags,设置: 12-force_load"${PODS_CONFIGURATION_BUILD_DIR}/WCDBOptimizedSQLCipher/libWCDBOptimizedSQLCipher.a" 如下: 然后是,发现按照上面步骤集成后,安装包大...
Mac安装ArkTS失败
Mac安装ArkTS失败错误提示: 1234567Installing ArkTS dependencies...Running 'npm install'...npm ERR! code ETARGET 参考:ArkTS 安装失败求助,是node版本太高的原因,需要降级node。 查看node版本: 1node -v 通过brew安装的node,降级node时,先安装nvm 123brew install nvm 然后通过nvm安装低版本的node 1nvm install v14.21.3 安装完成后,再次查看node版本,如果node版本还不对,再运行下面命令 1nvm use v14.21.3 node降级之后,需要清理npm 缓存, 1npm cache clean -f 然后重启DevEco-Studio,再次尝试安装,即可安装成功。 补充如果其他地方使用有高版本的node,可以安装两个版本的 node,然后使用 nvm 命令切换,或者 node 的安装不安装到全局也可。 参考 ArkTS 安装失败求助 HarmonyOS Devel...
短信过滤 APP 开发
短信过滤 APP 开发本文发布在搜狐技术产品-短信过滤APP开发 一直想开发一个自己的短信过滤APP,但是一直没有具体实施,现在终于静下心来,边开发边记录下整体的开发过程。 垃圾短信样本遇到的第一个问题是,既然要过滤垃圾短信,那首先要识别哪些是垃圾短信?如何识别呢? 参考之前训练识别钢管计数的经验,决定通过 CoreML 训练Text模型来识别,那问题来了,要训练模型的短信数据集怎么来? 一开始打算网上找到垃圾短信样本,但找了好久没找到,于是就想到用自己和家人手机里的短信,毕竟手机里短信一般不删除,也有小几千条,而且垃圾短信、推销、广告之类的应有尽有。 所以问题就变成了,如何导出 iPhone 短信? 这里笔者也查了好久,找到的第三方软件基本都是需要收费,最终发现了一个免费导出的方案。 首先不加密备份手机到电脑,如下图,选中Back up all the data on your iPhone to this Mac,点击Back Up Now,等待备份完成,备份完成后,再点击Manage Backups Manage Backups点击后,界面如下,可以看到已备份的记录,...