- 博客(347)
- 资源 (10)
- 收藏
- 关注
原创 分页(多页)列表局部数据刷新方案总结
本文探讨了分页列表在详情页操作后如何实现精准数据更新的问题。针对非分页列表可直接全量刷新,但分页列表需要更精细的处理:1)记录用户操作数据所在页数;2)仅重新请求该页数据并进行局部替换。文章提出了两种主要方案:一是重新请求指定页并精准更新对应数据,二是在详情页直接回传更新后的数据。两种方案各有优劣,第一种通用性更强,第二种性能更优但需服务端配合。核心目标都是确保用户返回列表时能看到预期状态更新,同时保持良好体验。开发者应根据实际场景选择最适合的方案。
2026-01-21 10:05:41
860
4
原创 从一个自定义的下载Dialog,说清 Android 自定义弹窗的关键点。
本文以Android开发中的下载进度弹窗为例,详细讲解了自定义Dialog的实现要点。首先分析了需求场景:需要显示标题、动态进度、不可手动关闭且完成后自动消失。接着介绍了布局设计要点,重点讲解了Dialog的核心实现思路:使用Activity作为Context避免内存泄漏、初始化时设置不可取消属性、在show()方法中设置窗口尺寸。特别强调了线程安全的处理方式,确保UI更新在主线程执行。最后总结了使用时的注意事项,包括避免重复创建和正确处理生命周期。文章指出,掌握Context选择、生命周期管理和线程安全这
2026-01-19 19:21:39
592
1
原创 Android 中的单例模式:从“看起来很简单”到“真的不会出事”(详细解读包含依赖Context的单利)
本文探讨了Android开发中单例模式的正确实现方式。首先介绍了单例模式的作用:保证全局唯一实例、统一访问入口和避免资源浪费。然后分析了Java中常见的单例实现方式,包括线程安全的饿汉式、存在线程安全问题的懒汉式、加锁的懒汉式以及推荐使用的静态内部类实现。特别强调了Android环境下使用单例时需要注意的关键点:必须使用Application Context而非Activity Context,否则会导致内存泄漏。最后推荐了Kotlin中使用object关键字结合Application初始化来实现单例的最佳
2026-01-19 10:04:50
760
原创 Android 文件下载实践:基于 OkHttp 的完整实现与思考
本文探讨了Android应用中文件下载功能的实现方案。作者指出,虽然OkHttp等网络框架对接口请求支持完善,但在处理文件下载时仍存在不足。文章详细介绍了基于OkHttp的下载实现方案,包括网络请求发起、状态校验、进度计算、文件写入等核心环节,并提供了一个完整的协程实现示例。该方案具有线程安全、进度可控等特点,适合与ViewModel配合使用。作者认为,虽然需要自行处理更多细节,但这种底层实现方式提供了更大的灵活性,为后续扩展断点续传等功能奠定了基础。
2026-01-14 09:59:07
1070
2
原创 iOS中的设计模式(十一)- 观察者模式(Observer Pattern)在 iOS 开发中的实践
本文探讨了观察者模式在iOS开发中的应用与价值。观察者模式是一种解耦变化来源与响应者的设计模式,当一个对象状态变化时,所有依赖它的对象都会自动收到通知。iOS开发中常见的实现包括:NotificationCenter(全局事件通知)、KVO(属性自动监听)和RxSwift(响应式数据流)。这些技术虽然形式不同,但都遵循观察者模式的核心思想——让变化源头不关心具体响应者。该模式特别适用于一个变化需要影响多个对象但又不希望产生强耦合的场景。理解观察者模式的本质有助于开发者更好地运用现有工具,并快速掌握新框架的设
2026-01-13 19:17:34
722
原创 为什么 iOS 图书(Apple Books)上“本地文件”也可能突然读不了
iPhone自带图书应用无法打开PDF/EPUB文件的故障并非格式问题,而是iCloud同步状态异常导致。当iCloud条款未更新时,图书应用会进入"假正常"状态:显示已下载却无法访问文件。解决方法很简单:更新iCloud条款后即可恢复正常。建议用户保留原始文件副本,将图书应用仅作为阅读工具而非唯一存储位置。这一事件揭示了系统服务状态对应用功能的关键影响。
2026-01-13 09:54:49
543
原创 iOS 苹果审核:Guideline 4.1(Design-Copycats) 被拒复盘与避坑指南
摘要:本文分享了作者在App Store审核中因违反Guideline 4.1(设计-抄袭)被拒的经历,具体原因是应用截图引用了"Peppa Pig"内容。文章分析了此类问题的三大高风险区域:应用标题/副标题、元数据内容和App核心内容,并指出元数据(如截图)是最容易被忽视的风险点。针对被拒情况,作者强调必须删除侵权内容而非争辩。最后提供了三种应对策略:避免直接暴露敏感内容、过审后开放内容、以及弱化处理敏感元素。文章提醒开发者应以解决问题为导向,理性应对审核问题。
2026-01-12 17:35:50
685
2
原创 iOS中的设计模式(十)- 中介者模式(从播放器场景理解中介者模式)
本文通过iOS视频播放器的业务场景,演示了中介者模式的实际应用。在不使用中介者时,ControlBarView需要直接调用PlayerView、SubtitleView等多个对象,导致强耦合和逻辑分散。引入PlaybackMediator中介者后,各组件只需与中介者通信,实现了组件解耦和业务逻辑集中管理。文章指出中介者模式能有效解决类间强耦合问题,但要避免中介者膨胀为"上帝对象",建议按业务拆分多个中介者。该模式适用于类间交互复杂、改动影响面广的场景,是控制复杂度的有效手段。
2026-01-12 09:56:50
850
2
原创 当列表 Cell 内有不定个数内容时,一种优雅且高性能的解决方案
本文探讨了在UITableView中处理不定数量子列表的高效实现方案。针对传统嵌套列表或频繁创建销毁视图的性能问题,提出了一种基于"组件池"的轻量级解决方案。通过UIStackView自动布局和复用机制,在Cell内部维护一个永不销毁的视图池,根据数据量动态调整视图显示状态,避免了重复创建的性能开销。核心实现包括:1)使用二维数组模拟随机数据;2)Cell内采用UIStackView管理子视图;3)通过expandPool方法按需扩容;4)render方法控制视图显示/隐藏状态。该方案显
2026-01-01 11:24:09
857
原创 UIKit实现一个渐变文字的UILabel(核心思想及实现过程)
本文介绍了一种高性能的渐变文字实现方案,通过CAGradientLayer和CATextLayer结合的方式,将文字作为渐变图层的遮罩。该方案相比传统drawText或图片方案具有GPU渲染性能优势,支持AutoLayout自适应更新,可灵活配置渐变颜色和方向。实现步骤包括创建ZMGradientLabel类、设置渐变图层与文字遮罩的映射关系,并提供渐变方向枚举支持多种渐变效果。这种方案既保持了UIKit的设计哲学,又能与渐变按钮等UI组件保持设计一致性,提升了代码复用性和维护性。
2025-12-30 22:06:00
833
原创 使用UIStackView进行灵活布局
本文探讨了在UIKit中使用UIStackView实现灵活布局的方法。相比传统约束布局,UIStackView通过distribution属性提供了更智能的空间分配策略,特别是.equalSpacing模式能轻松实现子视图两端分布。当需要动态隐藏视图时,引入SpacerView作为弹簧视图可保持剩余视图居中显示。文章对比了三种实现方案:传统约束布局需要手动调整约束;单纯使用UIStackView可能导致视图拉伸;而结合SpacerView的方案能完美实现设计需求。UIStackView让UIKit布局更接近
2025-12-30 13:45:56
923
原创 SwiftUI 如何精准识别用户点击的单词?一套可落地的实现方案
摘要:本文介绍了在SwiftUI中实现精准识别用户点击英文单词的方法。由于SwiftUI的Text组件缺乏点击范围回调功能,解决方案通过将AttributedString中的每个单词转换为自定义链接,利用openURL环境值拦截点击事件,从而识别被点击的单词。文章详细展示了实现步骤,包括使用正则表达式提取单词、设置可点击链接、拦截点击事件以及优化显示效果(去除默认蓝色样式、添加高亮状态)。最终实现了一个完全基于SwiftUI官方能力的可交互文本组件,体现了SwiftUI"通过状态变化驱动UI更新&
2025-12-20 16:16:51
953
4
原创 你真的用对了 UIScrollView 吗?从 frame 到 SnapKit (Masonry) 的常见误区
iOS开发中UIScrollView在AutoLayout下的正确使用方式一直是个常见痛点。本文通过对比frame布局和约束布局的区别,指出核心问题在于混用了不同布局思维。关键点在于:frame布局需手动设置contentSize,而AutoLayout下应通过contentLayoutGuide自动计算。正确做法是:外部约束确定ScrollView可视区域,内部约束决定滚动范围。使用SnapKit时,需确保内容视图的约束能正确撑开contentSize。只要遵循"约束内容,不碰contentSi
2025-12-17 19:51:05
966
原创 响应式编程思维:SwiftUI 中的数据获取与 UI 自动更新
本文对比了UIKit与SwiftUI在UI更新机制上的差异。UIKit采用命令式编程,需要手动调用reloadData等方法显式刷新界面;而SwiftUI采用声明式编程,通过@State、@Published等属性包装器实现数据与视图的自动绑定。当数据变化时,UI会自动更新,无需手动刷新。文章通过具体代码示例展示了两者的实现方式差异,并指出SwiftUI的响应式设计使开发更简洁高效。这种思维转变虽然需要适应,但能带来更流畅的开发体验。文章最后建议开发者进一步学习SwiftUI的其他状态管理工具。
2025-12-17 12:11:38
655
原创 iOS 设备如何安装测试包(IPA)?最全三种方案整理
本文系统介绍了iOS设备安装测试包(IPA)的三种主要方式:1)Xcode自动管理证书,适合日常开发;2)手动管理证书,适合给外部人员分发Debug包;3)TestFlight内外测,最正式稳定的测试方式。文章详细说明了每种方案的操作流程、适用场景及可能遇到的问题,特别针对设备注册延迟、证书冲突等常见问题提供了解决方案。通过对比分析三种方式的优缺点,帮助开发者根据实际需求选择最适合的测试包分发方案,提高iOS开发测试效率。
2025-12-15 18:18:29
2019
2
原创 SwiftUI 页面作为一级页面数据被重置问题分析
摘要:本文探讨了在UIKit项目中嵌套SwiftUI页面时遇到的状态管理问题。当使用UIHostingController将SwiftUI页面嵌入UITabBarController时,发现切换tab会导致SwiftUI页面重建,出现数据重置但部分状态保留的异常现象。分析表明这是由于@ObservedObject修饰符在视图重建时会重新初始化,而@State变量却被保留。解决方案推荐使用@StateObject修饰Presenter对象,并将请求状态统一管理在Presenter中,确保状态一致性。文章通过实
2025-12-15 09:56:51
951
原创 iOS 审核被拒 Guideline 3.1.2 - Business - Payments - Subscriptions:其实和订阅有关(附官方原文 + 图示 + 解决方案)
摘要:本文针对苹果审核常见的3.1.2-Business-Payments-Subscriptions被拒问题,指出核心原因是缺少自动续订订阅的必要信息,特别是使用条款(EULA)链接。文章详细说明Apple对订阅类App的三项合规要求:AppStore描述、App内订阅页和AppStoreConnect配置都必须包含订阅标题、周期、价格及政策链接。提供了可直接套用的订阅说明模板和具体解决方案,包括在描述底部添加订阅信息块、完善后台链接配置等。同时指出审核存在主观性,新提交的App需严格按新规执行,建议开发
2025-12-03 10:04:19
1621
2
原创 深入理解 UIKit 自定义转场动画:TransitioningDelegate 与 AnimatedTransitioning 全解析(含实战示例)
本文介绍了UIKit中实现自定义转场动画的核心机制。主要内容包括: 两个关键协议:UIViewControllerTransitioningDelegate负责提供动画对象,UIViewControllerAnimatedTransitioning负责执行具体动画逻辑 详细实现流程:通过"列表Cell放大→模态编辑页"案例,展示了从设置代理、传递共享元素到实现动画的完整步骤 核心动画技术:使用snapshot创建共享元素动画,计算起始/结束frame,并在containerView中执行
2025-12-02 18:42:36
734
1
原创 iOS 审核被拒:Guideline 5.1.2(ATT)最容易忽略的一点:缺少自定义提示弹窗!
本文分析了苹果App Store审核中常见的ATT授权弹窗被拒问题(Guideline 5.1.2)。核心问题在于应用收集用户追踪数据(如UserID)时未通过AppTrackingTransparency框架获取用户授权。解决方案分三种情况:1)若应用无需追踪,需更新App Store Connect中的隐私信息;2)若仅在其他平台追踪,需向审核说明;3)若确实需要追踪,则必须在使用前通过ATT框架请求授权。重点提示开发者需区分是自身代码还是第三方SDK申请的IDFA权限,建议在使用前添加自定义说明弹窗,
2025-12-02 09:39:09
1143
2
原创 SwiftUI 的 List 到底怎么用?从 UITableView 迁移过来必须知道的几个细节
本文深入探讨了SwiftUI中List控件的实际使用方式,通过6个典型问题解析其与UITableView的本质区别。核心观点是:SwiftUI的List是声明式结构而非传统控件,开发者需转变思维方式。文章详细讲解了如何调整List样式使其接近UITableView、添加表头/组头组尾、隐藏分割线、消除默认间距、取消最小行高限制以及自定义背景颜色等常见问题的解决方案。最后指出,对于高度自定义需求,ScrollView+LazyVStack可能是更优选择。这些实战经验有助于开发者快速掌握SwiftUI List
2025-12-01 17:47:03
1217
2
原创 SwiftUI List 实现上下滑滑动隐藏和显示导航栏功能 —— 全流程实战与踩坑总结
本文探讨了在SwiftUI中实现类似UIKit中"上下滑动显示/隐藏导航栏"功能的挑战与解决方案。作者发现SwiftUI的List组件深度封装了UITableView,导致无法直接获取滚动偏移量。经过多次尝试(包括GeometryReader、ScrollView替代方案和Introspect方法),这些方案都存在更新延迟、内存问题或API废弃等缺陷。最终采用了一个SwiftUI原生方案:将头部视图分为两部分,利用onAppear/onDisappear回调来触发导航栏状态变化,而非直接
2025-12-01 09:41:52
1029
原创 iOS 如何自定义第一个显示的视图(含 SceneDelegate 删除指南)
本文介绍了如何在iOS项目中自定义启动页面的设置方法。主要内容包括:1)移除默认的ViewController根视图;2)在AppDelegate中手动设置window和rootViewController的传统方法;3)iOS13引入SceneDelegate后如何调整设置;4)针对仅需单窗口的iPhone应用,详细说明了完全移除SceneDelegate的步骤(删除文件及Info.plist配置)。文章强调无论采用哪种架构,关键是要明确首页等于window.rootViewController,并指出了
2025-11-20 16:55:45
1216
原创 iOS 如何全局修改项目字体
iOS设备在宽屏上字体"变小"其实是视觉错觉,因为屏幕变宽后布局空间增大,导致文字视觉占比下降。实际字体逻辑尺寸(pt)未变,Retina屏只是用更多像素(px)使文字更清晰。文章分析了iOS字体渲染原理(pt与px的区别),并提供了多种全局适配方案:1) Hook方法(不推荐);2) Objective-C宏定义;3) Swift字体Helper;4) SwiftUI ViewModifier。建议根据项目技术栈选择合适方案,在保证视觉一致性的同时维护代码质量,实现科学合理的字体适配。
2025-11-19 18:01:17
851
原创 深入理解 SwiftUI VStack 布局:一个 Text 的对齐方式告诉我们什么?
SwiftUI中对齐方式的常见误区和正确使用指南 摘要:本文深入解析SwiftUI中VStack对齐方式的工作原理,揭示开发者常见的理解误区。通过实例演示说明:1) VStack的alignment参数仅控制子视图之间的相对对齐,而非容器本身的位置;2) 要使内容在父容器中左对齐,需结合frame(maxWidth: .infinity, alignment: .leading)使用;3) 布局效果是由容器的对齐方式、子视图frame和父容器规则共同决定的。正确理解"VStack(alignmen
2025-11-19 09:48:31
1238
原创 自定义环形比例图(Doughnut Chart):从结构到实现
本文详细介绍了如何在iOS中使用UIKit和CoreGraphics实现环形比例图(Doughnut Chart)。文章从图形结构入手,解析了圆环主体、段落间距、标注折线等关键元素的实现方法,包括使用贝塞尔曲线绘制带间距的圆弧、计算法线绘制标注线以及标签定位等核心逻辑。通过示例代码展示了视图初始化、圆弧绘制、折线标注和SwiftUI桥接的具体实现,帮助开发者理解如何构建一个支持多段显示、带外部标注的环形图组件。该组件可广泛应用于数据占比展示和预测分析等业务场景。
2025-11-18 19:30:42
687
原创 苹果订阅测试全流程:TestFlight 与沙盒账号的区别与实战
苹果订阅测试环境对比与使用指南 摘要:本文系统介绍了苹果订阅测试的两种主要方式:TestFlight环境和Sandbox沙盒账号。TestFlight使用开发者真实Apple ID进行测试,以24小时为周期的自动续订模式,适合基础功能验证;Sandbox账号则提供更灵活的分钟级续订加速,能测试取消订阅、支付中断等复杂场景。两种方式都不会真实扣费,TestFlight更便捷而Sandbox更全面,建议开发初期使用TestFlight验证主流程,后期使用Sandbox进行深度测试。掌握这两种测试环境的特性,能显
2025-11-18 11:04:05
1557
原创 元数据丢失问题及解决方案(iOS支付,内购,订阅)
摘要:文章系统分析了苹果开发者平台AppStoreConnect中内购商品元数据缺失的问题。针对一次性内购和订阅商品两种类型,详细说明了商品创建时容易忽略的关键环节:一次性内购需完整填写6项信息(特别是审核截屏),订阅商品还需额外补充群组的本地化语言。文章指出元数据缺失会导致商品不可用或被审核拒绝,并提供自查清单:确认商品状态、审核截图、本地化信息、销售范围及审核备注是否完整。最后提示后续将探讨订阅商品的自动续期和价格变更策略。全文旨在帮助开发者规避元数据缺失问题,提高审核通过率。
2025-11-06 10:11:40
1965
4
原创 免费SSL证书的更新流程
本文详细介绍了免费SSL证书的更新流程。随着有效期从12个月缩短至3个月,证书更新变得更加频繁。作者以阿里云SSL证书为例,展示了从创建新证书到下载、上传服务器的完整步骤,特别强调了对私钥文件的权限设置。文中还提供了Nginx配置示例,包括80端口跳转和443端口HTTPS配置,最后讲解了如何检查配置和重载Nginx服务。整个更新过程虽然需要定期操作,但只要理清步骤就能顺利完成,为个人开发者提供了实用的SSL证书更新指南。
2025-11-05 17:45:45
623
原创 iOS 应用网络权限弹窗的问题及解决方案
iOS应用首次请求网络权限时,系统弹窗会导致请求失败造成空白页面。本文分析了该问题的本质原因:iOS没有网络权限回调机制,弹窗出现时请求已被阻塞。提出了基于网络状态监听的解决方案,使用NWPathMonitor或Alamofire的NetworkReachabilityManager,在检测到网络可用时重新发起请求。具体实现封装为网络工具类方法,在实际页面触发监听并在获权后自动重试请求。这种方案避免了无用的初始请求,提供了更优雅的网络权限处理方式,有效改善了用户体验。
2025-11-05 09:32:20
1664
2
原创 Swift项目生成Framework流程以及与OC的区别
本文详细介绍了Swift项目生成Framework的完整流程及其与Objective-C的区别。主要内容包括:1. 从零创建Swift Framework的步骤,重点演示了访问控制修饰符(public/private)的使用方法;2. 分析编译产物结构,说明Swift通过.swiftinterface文件暴露接口而非头文件;3. 对比Objective-C依赖头文件和Swift通过访问修饰符决定暴露范围的本质区别;4. 强调Swift框架的编译安全性,指出其不会暴露源码实现。文章通过播放器示例项目,帮助开发
2025-11-03 17:28:33
963
2
原创 iOS内购商品突然报错?可能是苹果付费协议更新惹的祸
iOS内购报错ASDServerErrorDomainCode=3506的常见解决方案:当已上线的App出现支付错误时,很可能是因为未及时更新苹果的付费应用协议。开发者需登录账号,由账户持有人(Legal角色)在开发者网站的"商务-协议"模块中查看并接受最新版付费协议。注意需先同意最新开发者许可协议才能操作,建议定期检查协议状态避免影响支付功能。这种非代码问题往往容易被忽视,但会直接影响应用内购的正常运行。
2025-11-03 09:29:12
1394
原创 Android入门到实战(十):首页实现——从布局到逻辑解析
本文介绍了移动应用首页的实现方案,主要包括三部分:布局设计采用ConstraintLayout+NestedScrollView构建,包含继续阅读(横向RecyclerView)、历史记录(纵向RecyclerView)和学习目标三大模块;逻辑处理通过Fragment+ViewModel实现数据获取和UI更新,使用统一的HistoryCardAdapter处理条目展示和点击事件;特色功能包括自定义圆形进度视图展示学习进度。整体方案采用模块化设计,数据驱动UI更新,具有清晰的代码结构和良好的扩展性,为后续功能
2025-10-24 09:22:19
907
原创 使用最简单的实际项目教你用 Core Data 在本地存储数据
本文介绍了如何使用CoreData在iOS应用中构建简单的本地数据库。主要内容包括:1)创建CoreData栈和数据模型,定义记忆实体(ESMemoryEntity)及其属性;2)封装CoreDataHelper单例类,实现数据的增删查改操作;3)通过异步后台任务优化性能,避免UI卡顿。文章逐步演示了从创建模型到实现基本CRUD功能,再到异步处理的全过程,帮助开发者快速掌握CoreData的基础用法。这种实现方式适用于需要本地存储但结构不复杂的应用场景,为后续学习更高级的CoreData功能打下基础。
2025-10-22 17:49:47
838
原创 使用 SwiftUI 也能轻松绘制表格
SwiftUI表格绘制指南:从基础布局到组件化实现 本文通过创建一个两行四列的表格,分三个阶段讲解SwiftUI表格绘制方法。首先使用VStack和HStack搭建基础布局,然后提取重复代码为可复用的TableCellView和TableRowView组件,最后将整个表格封装为SilkbagHistoryTableView自定义视图。这种组件化方法使得代码更简洁、易维护,同时支持数据驱动和复用。文章展示了SwiftUI通过声明式布局和组件抽象,能够高效实现表格功能,且比UIKit更具可读性和灵活性。
2025-10-22 13:39:57
803
原创 自定义转场动画 - 从悬浮按钮丝滑扩散到发布页面
本文介绍了如何实现iOS应用中的悬浮按钮点击扩散动画效果。通过自定义UIViewControllerTransitioningDelegate,使用CAShapeLayer创建圆形遮罩动画,实现页面从按钮中心扩散展开的全屏过渡效果。文章详细讲解了三个关键部分:主页面设置悬浮按钮、PublishAnimator处理动画逻辑(包括展开和收回效果)、以及发布页面的基本布局。这种实现方式不依赖第三方库,完全使用系统转场机制,通过改变遮罩路径的动画让页面自然"生长"出来。该动画效果增强了用户交互的
2025-10-20 17:36:26
703
原创 iOS中的设计模式(九)- 外观模式 用外观模式点一份外卖:Swift 实战讲解
本文通过外卖系统案例讲解外观模式(Facade Pattern)的应用。外观模式通过提供一个统一的接口,简化了客户端与复杂子系统的交互。在Swift实现的示例中,FoodDeliveryFacade外观类封装了餐厅、支付、配送等子系统的调用流程,使客户端只需调用placeOrder()一个方法即可完成整个订单流程。外观模式的优点包括降低客户端复杂性、解耦系统组件、统一管理流程,但也可能造成外观类过大或限制自定义功能。该模式适用于需要简化复杂系统调用的场景,如多媒体处理、直播系统等,其核心价值在于对外提供统一
2025-10-20 09:44:33
998
原创 iOS 推送证书 P8 介绍及生成流程
Apple推出p8证书(Token-Based推送)替代传统p12,提供更高效稳定的推送方案。p8证书长期有效、可跨App复用,通过JWT与APNs建立安全连接,无需每年更新。生成流程包括:登录开发者账号创建APNs Key、下载.p8文件(仅一次),服务端结合KeyID和TeamID生成JWT使用。相比p12,p8更轻量安全,适合多App或长期项目,但需注意正确BundleID和安全保存.p8文件。开发者可根据项目需求选择推送方案,p8能显著降低维护成本。
2025-10-11 22:58:29
1785
2
原创 苹果审核 3.1.1 被拒?别急着改代码,先搞清楚原因!
苹果审核因"缺少恢复购买功能"拒绝了应用内购更新,但开发者发现应用仅包含消耗型商品(Consumable),这类商品本就不支持恢复。通过邮件沟通说明情况并附上商品类型截图后,最终版本顺利过审。文章建议开发者遇到类似问题时:1)先确认内购类型;2)非消耗型商品需添加恢复功能;3)消耗型商品只需说明情况;4)提供证据便于审核理解。强调与审核团队有效沟通比盲目修改更重要。
2025-10-11 09:24:23
695
原创 苹果审核 4.3 的故事 - 包过(包生男孩)?
苹果App Store的4.3审核条款(Guideline4.3-Design-Spam)常让开发者困扰。作者分享了两次经历:第一次是直播应用因更换资方遭遇反复4.3拒绝,最终通过重写代码、调整功能并换新账号解决;第二次是工具类应用大改版后被拒,经邮件沟通解释后获通过。关键解决方法是:冷静分析触发原因(功能/界面/元数据相似)、主动产品差异化、必要时邮件沟通说明非"灌水"意图。作者强调没有"包过秘籍",唯有直面问题才是正解。整个经历耗时半年,凸显苹果审核的主观性和不确
2025-10-10 22:41:38
1158
原创 Codeium 安装与使用(在 Xcode 代码补全体验)
文章介绍了寻找GitHub Copilot替代品的经历,重点推荐了免费工具Codeium for Xcode。作者对比了Copilot、Tabnine等工具的优缺点,指出Codeium虽智能程度稍逊但完全免费且Xcode集成良好。详细讲解了Codeium的安装配置流程,包括下载、登录、索引设置等步骤。
2025-10-09 18:38:27
1615
2
Android 入门到实战(三):ViewPager及ViewPager2多页面布局
2025-08-25
iOS 内购新体验:使用 StoreKit 2 优雅实现支付封装(建议大家更换StoreKit 2,体验极好)
2025-06-19
(十六)深入了解 AVFoundation - 编辑:音视频裁剪与拼接的Demo项目实现
2025-06-18
iOS 16 SwiftUI 优雅跳转实践:用枚举路由和 NavigationStack 实现多页面导航
2025-06-06
iOS文字滚动:使用CATextLayer实现的跑马灯
2025-02-05
OS开发书籍推荐 - 《iOS CORE ANIMATION》核心动画高级
2025-01-26
SwiftUI学习推荐书籍《SWIFTUI BY EXAMPLE》
2025-01-23
SwiftUI(二十三)- 使用SwiftUI开发一个顶部通知弹窗卡片源码
2024-12-31
iOS Swift 使用Core Animation框架实现的跳动小红心
2024-12-24
UIKit中使用SwiftUI的实际开发案例
2024-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅