前言总所周知，一般而言 IOS 安装软件只能从 AppStore 上下载安装。不过有一些没有上架 AppStore 的软件，放出了IPA格式的安装包。想安装IPA格式的安装包，最稳定的方式就是越狱，但是这样就会与最新系统无缘。而要想不越狱安装，就得借用电脑的一些工具（例如爱思助手的签名功能）为安装包自行签名后安装，不过有效期只有 7 天，一旦到期软件就打不开了，需要重新用电脑签名安装。最近我看到网友在手机上用AltStore为第三方 App 续签，好奇使用效果如何，于是我也来试试。设备需求电脑一部（Windows、macOS都支持）Apple ID，即苹果账号一个数据线（连接IOS设备）操作步骤（Windows）总体步骤可以概括为：在电脑上安装AltServer，在电脑上安装iTunes、iCloud、AltServer三个软件。iTunes 下载地址：https://support.apple.com/zh_CN/downloads/itunesAltServer 的下载地址：https://altstore.io注意：不能使用从微软商店安装的iCloud，需要 Apple 官方原版不过iCloud 没找到不通过微软商店的官方下载地址，所以暂时不装，等 AltServer 首次启动提示下载。如果 Win11 出现打开后找不到任务栏图标的问题，需要从 Github 下载最新测试版：https://github.com/rileytestut/AltServer-Windows/releases都安装好后，打开 AltServer利用开始菜单的搜索功能找到 AltServer打开后如果提示iCloud Not Found或者iTunes Not Found，如果已经安装了苹果官方的iCloud 和 iTunes，点击Choose Folder...手动选择 iCloud 或 iTunes 的安装目录。如果还没安装，点击Download前往下载并安装；用数据线将 iPhone 连接到电脑，在手机上解锁屏幕，选择信任该电脑在任务栏中找到 AltServer 的图标鼠标左键单击这个图标，点击Install AltStore > 你的iPhone此时会弹出窗口让你填写 Appe ID 和密码，填完之后点击Install等待一段时间后 Windows 会弹出提示正在安装 AltStore 到 iPhone又过了一小一段时间提示安装成功此时 iPhone 上的资源库 > 最近添加里就会新增一个 AltStore 的图标，尝试打开它。如果打不开，那就是需要手动信任证书，在 iPhone 上依次点击系统设置 > 通用 > VPN与设备管理（旧系统可能是描述文件），在开发者 App 栏目内选择包含你邮箱号的选项」，点击信任即可。打开 AltStore 后，在底部导航点击切换到 My Apps 页面，点击左上角的+号，浏览并选择你想安装的IPA格式安装包。如果没登录账号，此时就会弹出窗口让你填写 Apple ID 和密码登录到 AltStore，登录之后才会开始安装。安装成功则会将软件名称显示在这个列表中。这种方式安装的应用只有 7 天的有效期，在到期之前需要点击上图中的Refresh All为其续期。如果超过 7 天，导致 AltStore 打不开，则需要用电脑上的 AltServer 重新安装。开启自动续签AltStore 有个比较方便的功能就是自动续签，不过需要在 iTunes 中开启WIFI同步。打开iTunes，登录账号，连接手机，同样需要手机解锁并信任。点击左上角账户旁边的手机图标。此时在摘要中下拉找到通过Wi-Fi与此iPhone同步，勾选上即可。现在只需要和启动了 AltServer 的电脑在同一个局域网内，AltStore 就会自动为安装的第三方APP续签。操作步骤（MacOS）macOS 开启 AltServer 还是挺方便的，毕竟自带了苹果服务不需要手动安装，不过有个坑，需要邮箱开启插件才能使用 AltServer。从 AltStore官网安装 AltServer ，过程就跳过。开启AltServer，点击顶栏的 AltServer 对应的图标，选择Install Mail Plug-in...安装邮箱插件接着在 macOS 中打开邮箱，点击左上角的邮箱 > 偏好设置按照下图所示勾选插件并应用接着回到 AltStore 菜单，为 iPhone 安装 AltStore，需要登录 Apple ID在手机上的资源库 > 最近添加找到 AltStore 的图标即为成功。后续步骤可以参考上文中的操作。补充如果出现无法续签的情况，请检查 WIFI/WLAN 的网络配置类型，如果是公用网络，尝试切换到专用网络。总结综合来看，这种通过WiFi自动续签的方式确实能让未越狱的 iPhone 更好地使用第三方App，但却需要依赖一台电脑挂着 AltServer，而且能同时安装的APP数量有限，一般为 3 个左右。真要解除这些限制，还是得依靠越狱才行。
前言我的Flutter项目有保存图片功能，需要用到相册的访问权限，在IOS那边搞了半个下午的权限配置还是获取不到权限，记录下解决方式。本文所用权限依赖插件：permission_handler，版本8.1.6我仔细排查，网上各种搜索，info.plist配置确定是没有问题的，就很谜。Podfile也参照一些文章配置了也一样不生效（后来才发现有坑）？？之后卸载了，重新Build也还是一样。并且在系统设置里也找不到自己的APP（你可以看到设置里是有其他APP可以配置权限的）。之后查看了下permission_handler官方的配置说明，点开了这个东西：好家伙，权限的配置说明原来在这，之前都没发现（才不是因为都是英文不想看）配置方式打开./ios/Runner/info.plist文件，在标签里插入权限标签，（插入自己需要的权限即可不用全部）全部权限例如：... NSPhotoLibraryUsageDescription App需要您的同意,才能访问相册 NSLocationWhenInUseUsageDescription App需要您的同意,才能在使用期间访问位置 NSLocationAlwaysUsageDescription App需要您的同意,才能始终访问位置 NSCameraUsageDescription App需要您的同意,才能访问相机 NSMicrophoneUsageDescription App需要您的同意,才能访问麦克风 NSLocationUsageDescription App需要您的同意,才能访问位置 NSCalendarsUsageDescription App需要您的同意,才能访问日历 NSRemindersUsageDescription App需要您的同意,才能访问提醒事项 NSMotionUsageDescription App需要您的同意,才能访问运动与健身 NSHealthUpdateUsageDescription App需要您的同意,才能访问健康更新 NSHealthShareUsageDescription App需要您的同意,才能访问健康分享 NSBluetoothPeripheralUsageDescription App需要您的同意,才能访问蓝牙 NSAppleMusicUsageDescription App需要您的同意,才能访问媒体资料库 ... ...打开./iosPodfile文件，找到post_install do |installer|那一行，像下面这样插入代码，或者干脆整个代码块替换掉post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', ## dart: PermissionGroup.photos 'PERMISSION_PHOTOS=1', # 相册权限，这里等于1是启用该权限，等于0是禁用该权限！ 'PERMISSION_CAMERA=1', # 相机权限 # ...其他权限参考官方文档里的IOS配置 end end end检查是否成功在系统设置里找自己的APP，找不到就是失败了；找到的话点进去，就会看到可以配置的权限，像我配置了相册权限就可以看到这个照片的选项。后话详细配置可以查看官方文档。之前看的那些文章都有点旧了，虽然有的给了Podfile的配置但是给权限赋值成了0导致没生效，以后还是得留意官方的文档说明...