#iOS# 相关文章 | 第 2 页


xcodebuild:code signature invalid

MH_EXECUTE、LC_LOAD_DYLIB等类型二进制文件必须签名才能使用。重签名操作涉及两个命令行工具:codesign和security。

iOS CoreMotion 传感器开发

CoreMotion.framework集中了iOS设备大多数传感器的API接口,这些传感器包括陀螺仪、加速度计、磁力计等。这些传感器的值可以反映手机设备的空间姿态及运动状态。

iOS启动优化之二进制重排

很早之前就阅读过那篇关于抖音基于二进制文件重排解决方案的文章,那应该是我首次了解「二进制重排」的相关技术。最近,我系统地梳理了这部分知识点,做下笔记。

iOS CLLocationManager的弹窗问题

iOS系统在请求定位权限时会弹窗提示。某些情况下,App中的一些模块可能不需要主动引发弹窗但又需要获取定位数据。

iOS NSURLProtocol详解及使用陷阱

如果想对网络请求进行干预,使用NSURLProtocol是一个不错的选择。NSURLProtocol是iOS URL Loading System的一个功能,它提供了便捷的接口以允许开发者重新定义网络请求的行为,包括修改请求的发起和响应动作。

iOS URLSession Authentication Challenge及SSL Pinning

App即使开启HTTPS请求,也无法阻止中间人攻击。更安全的做法是,启用SSL Pinning。本文主要介绍SSL Pinning、Authentication Challenge相关的内容。

iOS performSelector使用int等基本数据类型的问题

NSObject performSelecor方法允许动态方法调用,它支持的参数只能是id类型,不能是基本数据类型。需要传递基本数据类型时,要使用NSInvocation。

iOS Method Swizzling 使用陷阱

在阅读团队一项目源码时,发现Method Swizzling的写法有些瑕疵。这篇文章主要就介绍iOS Method Swizzling的正确写法应该是什么样的。

iOS 14 适配:更严格的用户隐私保护

今年的iOS 14系统更新了不少内容,本文重点介绍和用户隐私保护相关的部分。iOS 14在iOS 13基础上进一步深化了对用户隐私的保护,新增的几项措施对于广告行业影响较大。

iOS文件系统目录结构

iOS是属于类UNIX的操作系统,基本遵守了UNIX文件系统层级标准(Filesystem Hierarchy Standard)。但由于iOS的封闭性,它还是有一些特有的目录。下面以iOS 12.4.8系统为例说明,方便后续查阅。

CocoaPods Podfile and podspec configurations

本文讲解了Cocoapods对不同configurations的支持能力,configurations配置可以让App在Debug、Release等模式下引入不同的代码或framework,便捷支持不同场景的配置需求。

NSUserDefaults的suitename

直接使用[NSUserDefaults standardUserDefaults]的接口可以很方便地存取字符串、数值以及序列化的二进制数据。但当App功能足够复杂模块足够多之后,我们可能需要使用initWithSuiteName接口操作不同[域]下的NSUserDefaults。

pod package的不足和改进

CocoaPods支持各种插件和扩展,pod package是常用的打包插件,它支持通过podspec将源码打包成二进制库,但它本身支持的命令比较少,在特殊要求的场合需要进行改进。

iOS TestFlight的局限性及改进措施

这是对之前文章 iOS App灰度发布方案 的补充,主要介绍TestFlight方案的局限性以及改进措施。

iOS 色温和白平衡设置

白平衡是摄影领域一项很重要的设置技巧,正确的理解白平衡和色温等知识将有助于拍摄出效果更好的作品。iOS中提供了非常便捷的API帮助我们进行白平衡的设置。

iOS App 灰度发布方案

对于大项移动App来说,每一次版本更新可以先选择部分用户进行试用,并及时关注崩溃、卡顿等,等待各项业务指标都达到预期要求时,才将新版本全量推向市场。

iOS Universal Links

上周,微信开发者公众号发布了《微信开放平台移动应用 SDK 更新提醒》的文章,提醒开发者升级微信iOS SDK,以适配iOS 13系统版本的更新,主要是Universal Links的适配。

iOS系统如何获取用户的本机手机号

电信运营商提供的SDK可以直接从运营商数据网关中获取当前流量卡的手机号码,省去了用户输入手机号到接收短信输入验证码的整个过程,可将用户的登录耗时减少至1.5秒,大大降低了用户的使用门槛。

iOS Asset Catalog and Bundle

对于png文件,使用Asset Catalog管理更有优势,这也是苹果在iOS 9后推荐的方式,它的好处显然易见,支持app slicing、支持设置拉伸区域、给不同的机型配置不同的图片、配置渲染颜色等。

Xcode Build Settings

整理的一份Xcode 11.3 Build Settings推荐配置,对于减小包大小和性能优化有一定帮助。

bitcode ITMS-90562: Invalid Bundle

ITMS-90562: Invalid Bundle - The app cannot be processed because options not allowed to be embedded in bitcode are detected in the submission.

iOS Appium 自动化测试框架原理简析

Appium是目前比较好用的跨平台自动化测试框架,在iOS端采用WebDriverAgent作为webdriver驱动,实现了自动化脚本编写到运行的全流程覆盖。

iOS DeviceCheck详解

为保护用户的隐私,iOS系统的权限越来越收紧。而从开发者角度来说,能唯一标识一个设备对反作弊,风控的等都非常重要。从iOS 11开始,苹果提供了名为DeviceCheck的Framework来部分解决这类需求。

xcodebuild build failed:Use the $(inherited) flag

今天遇到一个奇怪的问题:编译一个framework静态库,使用Xcode直接编译能成功,但在脚本中使用xcodebuild编译失败,提示某些头文件找不到。在「Header Search Paths」中添加$(inherited)解决问题。

iOS NSAttributedString NSHTMLTextDocumentType陷阱

当你看到这篇文章时,很可能你也遇到了NSAttributedString的initWithData:options:documentAttributes:error:接口初始化HTML字符串的问题,这个接口的已知问题有:耗时较长,偶现crash,在不同版本系统上的表现不一致等。

iOS 13越狱工具Checkra1n

今天checkra1n官网终于释放出来针对iOS 13(包括目前最新的iOS 13.2.2)的越狱工具,checkra1n工具利用的是之前axi0mX大神发现的Checkm8漏洞。

iOS 13 Scene Delegate and multiple windows

iOS 13的一大改进就是支持multiple windows(多窗口)功能,虽然多窗口仅在iPadOS上获得支持,但这已经是一个很大到的进步,它将会大大提升一些场景的使用体验。本文将结合WWDC 2019相关topic介绍与多窗口相关的内容。

iOS 真机和模拟器HTTPS Charles抓包指南

Charles是十分流行的HTTP代理服务器软件,是移动开发者的常用工具。使用Charles时需要正确的配置才能使其正常工作。

CAShapeLayer Path Animation

CAShapeLayer动画时一个小技巧,避免直接赋值path,而使用strokeEnd可以自定义动画效果。

iOS Sign With Apple 开发实践

在iOS 13系统中,Apple要求提供第三方登录的App也需要支持「Sign With Apple」,本文主要介绍「Sign With Apple」在服务端的校验逻辑。