#iOS# 相关文章


iOS 15 CLLocation 读取 sourceInformation 崩溃
 开发笔记    2024-04-25
在 iOS 15 之前,iOS 的 CoreLocation 库提供的定位信息并没有标示数据来源,比如可以通过在 iPhone 手机中插入外置 GPS 硬件,或通过蓝牙连接 GPS 外设等方式达到篡改原始 GPS 数据,而 CoreLocation 很难确切感知到 GPS 信息到底来自 iPhone 还是外部设备。
iOS 越狱检测屏蔽插件 Shadow
 开发笔记    2024-04-18
Shadow 是一款强大的 iOS 越狱检测屏蔽插件,与 kernbypass 主要模拟非越狱状态文件系统不同,Shadow 胜在提供了更精细更自由的 API Hook 能力。
iOS 内核级越狱检测屏蔽方案:KernBypass
 开发笔记    2024-04-11
KernBypass 是一款内核级的 iOS 越狱检测屏蔽插件,相比传统的越狱屏蔽检测插件功能更加强大,隐蔽性更强。看川了解到已经有不少付费的插件是基于 KernBypass 开发的。
解决 Xcode 下载 iOS Simulator 频繁失败的问题
 开发笔记    2024-02-18
从 Xcode 引导安装 iOS Simulator 套件很容易下载失败且无法断点续传,解决办法是直接从 Apple 开发者网站下载文件手动安装。
iOS LLVM 混淆插件:Hanabi 和 Hikari
 开发笔记    2023-12-12
近期我将项目中使用的 Xcode LLVM 混淆方案由 obfuscator-llvm 更换为开源的 Hanabi & Hikari 插件,在 Xcode 15 上适配 Clang,编译 Objective-C 项目混淆效果达到预期,但对 Swift 项目支持的还有问题。
cocoapods-packager 插件的错误修复和适配
 开发笔记    2023-11-15
在前篇文章 pod package的不足和改进 中对 cocoapods-packager 插件如何自定义参数做过介绍,那已经是 2020 年的事了,cocoapods-packager 目前依旧停留在 2016 年的 1.5.0 版本,已渐失于维护。我在适配 Xcode 15 时,遇到一些问题,这里做下记录。
Swift并发编程 - 理解结构化和结构化并发的底层技术
 开发笔记    2023-11-10
前篇文章 Swift并发编程 - 理解 async 和 await 介绍了 Swift 并发编程的两个关键字 async 和 await。本文原本打算继续写 Task、Actor 等内容,但发现需要补充的基础知识很多。
由 xpc_connection_send_message_with_reply_sync 超时引发的崩溃
 开发笔记    2023-09-01
iOS 的一些系统接口需要调用 xpc_connection_send_message_with_reply_sync 方法与其它进程通信并返回结果,在低性能设备上打开 APP 后如果有频繁的 xpc_reply_sync 调用可能会诱发超时卡死。
Swift并发编程 - 理解 async 和 await
 开发笔记    2023-06-30
本文是我学习 Swift 并发编程的第一篇笔记,文章从几个不太好理解的点,介绍了async 和 await 语法关键字的使用方法和内在含义。
Validating App Store Receipts
 开发笔记    2023-03-15
Apple 的 Receipts 文件,包括App Attest receipt、App Store receipt等,都是采用PKCS #7容器格式包装的,包含签名、证书链、及使用ASN.1编码的payload。本文从原理和细节上讲解了使用 python 如何解码Receipts文件,如何验证签名、校验证书链、并提取payload。
iOS Flutter MethodChannel 双向通信
 开发笔记    2023-02-12
MethodChannel 是 Flutter提供的最常用的和 Native App 双向通信的方式。本文将演示这种通信方式的使用。
iOS Flutter 开发环境部署
 开发笔记    2023-02-07
按计划应该是继续SwiftUI相关的,临时需求用到了Flutter,接下来的几篇可能都是和Flutter相关(只是可能)。本文记录iOS Flutter 开发环境部署步骤。
拥抱 Swift 和 SwiftUI
 开发笔记    2023-01-13
Apple 分别于2014年,2019年发布了 Swift 语言和 SwiftUI 框架,对于 iOS 开发者来说,技术的更新换代是不可回避的趋势,应该积极学习运用。
iOS Background Task使用陷阱
 开发笔记    2022-03-10
发现线上用户有在后台状态被杀死的情况,最终定位到是不合理使用Background Task造成的,这篇文章简要介绍下使用Background Task需要注意的事项。
LLDB命令速查手册
 开发笔记    2021-09-29
LLDB是Xcode上默认的调试器,支持C/C++、Objective-C 和 Swift 程序的调试,也是LLVM项目的一个可重用的高性能调试器。在LLVM项目的lldb子目录可以查看LLDB的源码。
iOS安全:Tweak开发环境及入门
 开发笔记    2021-08-26
Tweak原指微调以增强电子系统功能的实用工具;在iOS中,Tweak是广泛使用的越狱插件开发工具,通过创建dylib注入到宿主进程,完成各种HOOK操作。阅读本文将快速入门Tweak开发。
Using a Custom Toolchain in Xcode
 开发笔记    2021-06-17
特殊情况下需要使用自定义的Toolchain,Xcode便捷支持选择不同的Toolchain。自定义的Toolchain在macOS和Xcode升级时可能需要做维护。
iOS WKWebView详解及JS Bridge同步调用问题
 开发笔记    2021-06-12
WKWebView是 iOS 8.0以后用于替代UIWebView的浏览器组件。和UIWebView相比,WKWebView性能更高,支持更多的HTML5特性,控制更加细致。本文简要介绍了UIWebView的使用以及JS和native APP同步交互的问题。
xcodebuild:code signature invalid
 开发笔记    2021-05-26
MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用。重签名操作涉及两个命令行工具:codesign和security。
iOS CoreMotion 传感器开发
 开发笔记    2021-03-18
CoreMotion.framework集中了iOS设备大多数传感器的API接口,这些传感器包括陀螺仪、加速度计、磁力计等。这些传感器的值可以反映手机设备的空间姿态及运动状态。
iOS启动优化之二进制重排
 开发笔记    2021-02-27
很早之前就阅读过那篇关于抖音基于二进制文件重排解决方案的文章,那应该是我首次了解「二进制重排」的相关技术。最近,我系统地梳理了这部分知识点,做下笔记。
iOS CLLocationManager的弹窗问题
 开发笔记    2021-01-22
iOS系统在请求定位权限时会弹窗提示。某些情况下,APP中的一些模块可能不需要主动引发弹窗但又需要获取定位数据。
iOS NSURLProtocol详解及使用陷阱
 开发笔记    2021-01-05
如果想对网络请求进行干预,使用NSURLProtocol是一个不错的选择。NSURLProtocol是iOS URL Loading System的一个功能,它提供了便捷的接口以允许开发者重新定义网络请求的行为,包括修改请求的发起和响应动作。
iOS URLSession Authentication Challenge及SSL Pinning
 开发笔记    2020-12-26
APP即使开启HTTPS请求,也无法阻止中间人攻击。更安全的做法是,启用SSL Pinning。本文主要介绍SSL Pinning、Authentication Challenge相关的内容。
iOS performSelector使用int等基本数据类型的问题
 开发笔记    2020-11-08
NSObject performSelecor方法允许动态方法调用,它支持的参数只能是id类型,不能是基本数据类型。需要传递基本数据类型时,要使用NSInvocation。
iOS Method Swizzling 使用陷阱
 开发笔记    2020-11-04
在阅读团队一项目源码时,发现Method Swizzling的写法有些瑕疵。这篇文章主要就介绍iOS Method Swizzling的正确写法应该是什么样的。
iOS 14 适配:更严格的用户隐私保护
 开发笔记    2020-10-17
今年的iOS 14系统更新了不少内容,本文重点介绍和用户隐私保护相关的部分。iOS 14在iOS 13基础上进一步深化了对用户隐私的保护,新增的几项措施对于广告行业影响较大。
iOS文件系统目录结构
 开发笔记    2020-09-17
iOS是属于类UNIX的操作系统,基本遵守了UNIX文件系统层级标准(Filesystem Hierarchy Standard)。但由于iOS的封闭性,它还是有一些特有的目录。下面以iOS 12.4.8系统为例说明,方便后续查阅。
CocoaPods Podfile and podspec configurations
 开发笔记    2020-09-12
本文讲解了Cocoapods对不同configurations的支持能力,configurations配置可以让APP在Debug、Release等模式下引入不同的代码或framework,便捷支持不同场景的配置需求。
NSUserDefaults的suitename
 开发笔记    2020-08-27
直接使用[NSUserDefaults standardUserDefaults]的接口可以很方便地存取字符串、数值以及序列化的二进制数据。但当APP功能足够复杂模块足够多之后,我们可能需要使用initWithSuiteName接口操作不同[域]下的NSUserDefaults。