iOS App预览和屏幕快照

转载:https://www.jianshu.com/p/d9cc67bba211

我们在提交审核时大多都只上传5.5英寸显示屏对应的屏幕快照(模拟器直接Command+S截图)且很少用到App预览,这是建立在前者可以兼容3.5英寸和4.0等显示屏的基础之上,实际上苹果提供了很多尺寸供我们选择,包括iPad Pro和iPhone X也不例外。
而对于数量限制,官方是这样描述的:对于iOS、tvOS和watchOS,可以上传最多3个App预览和最多10张屏幕快照。

App预览

App预览.png

创建并上传App预览的要求:

  • 一台运行 macOS 10.10 或更高版本的 Mac,配备 Safari 浏览器 8 或更高版本
  • 一个视频编辑器,如 iMovie 剪辑或 Final Cut Pro X
  • 一台运行 iOS 8 或更高版本的设备(针对 iPhone 为 5.5 英寸显示屏;针对 iPad 为 12.9 英寸显示屏)的设备,或一台 Apple TV

另外对上传的文件有如下限制:

  1. 预览视频最小时长15s,最大时长30s
  2. 文件最大不得超过500MB
  3. 方向:纵向或横向
  4. 需要在iOS 8或更高版本进行视频捕捉和播放

官方文档说明:

  • 可以上传tH.264和ProRes 422(仅限HQ)格式的App预览,支持的扩展名有:.mov、.m4v、.mp4
  • 在iPhone、iPad和Apple TV上,App预览均显示与屏幕快照之前(优先显示App预览)
  • 需要设置App预览海报帧,默认为5秒
  • 上传完成后,最多需要24小时时间进行处理
  • 可以随时移除App预览,但仅在状态为可编辑时
  • 针对iOS App,可以上传纵向或横向App预览,但App Store产品页面总以纵向展示,只有当顾客播放该预览视频时App预览才会旋转到原始方向。针对tvOS App,仅可以上传横向的App预览

屏幕快照规范

屏幕快照.png

官方文档是这样解释的:

  1. 针对 iPhone,需要上传:屏幕快照(必须的,最多10张)和 App 预览(可选的,至多 3 个),对于机型必须上传6.5英寸(像素:1242 × 2688,对应机型:iPhone Xs Max)和5.5英寸(像素:1242 × 2208,对应机型:iPhone 8 plus),水果的新规则也要求开发者必须适配iPhone X/iPhone Xs这类刘海屏机型才允许上架(Update at 2019年5月20日);
  2. 针对 iPad,您需要一组用于 12.9 英寸(iPad Pro 第二代)显示屏的屏幕快照。此组屏幕快照在各个地区的 App Store 上被查看时,会针对其他设备尺寸适当缩放;
  3. 针对5.8英寸、6.5英寸的显示屏素材是独立的、可选的(现在必须上传6.5英寸的素材),它不会缩放至其他设备尺寸,也就是说如果单独上传了素材则只有在对应尺寸的iPhone X、iPhone XS Max机型上才会展示。

参考苹果文档:App 预览规范(https://help.apple.com/app-store-connect/#/dev4e413fcb8)

如果本文对你有所帮助记得点个赞哈



作者:Geniune
链接:https://www.jianshu.com/p/d9cc67bba211
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

<think>好的,用户想知道如何实现iOS小部件的自动更新。我需要先回忆一下iOS Widget的相关知识,特别是刷新机制。根据之前看到的引用,WidgetKit的刷新策略由系统控制,开发者不能主动触发更新。所以用户需要了解系统如何管理时间线,以及如何配置时间线来让Widget自动更新。 首先,系统会根据时间线提供商提供的条目来决定何时刷新。时间线中的每个条目包含日期内容,系统会在这些时间点更新Widget。所以开发者需要实现TimelineProvider协议,生成时间线。例如,使用SimpleEntry结构体来存储每个时间点的数据日期。 然后,用户可能需要设置重新加载策略,比如使用TimelineReloadPolicy的.atAfter来让系统在当前时间线结束后重新请求新的时间线。这样就能实现周期性更新。不过要注意,系统可能会根据各种因素延迟或提前更新,所以不能保证完全准时。 另外,用户可能需要结合其他方法,比如在应用内使用WidgetCenter来重新加载时间线,或者在后台任务中使用定时器触发更新。不过后台任务的限制较多,需要合理配置。此外,网络请求或位置变化等事件也可以触发更新,但需要确保WidgetExtension有处理这些事件的逻辑。 还要注意数据共享的问题,Widget宿主应用之间可能需要使用App Groups来共享数据,比如UserDefaults。这样当应用更新数据时,Widget能读取最新数据并在下次刷新时显示。 最后,用户可能需要优化时间线策略,比如在数据变化频繁时缩短更新时间间隔,或者在数据稳定时延长间隔以减少资源消耗。同时,要遵循苹果的设计指南,确保Widget的内容简洁,刷新频率合理,避免影响用户体验。 总结下来,实现自动更新需要配置时间线提供商,合理设置重新加载策略,结合系统事件后台任务,并处理好数据共享。这样才能让Widget在合适的时间自动更新内容。</think>### iOS小部件自动更新的实现方法 要实现iOS小部件的自动更新,需依赖WidgetKit框架的时间线机制系统调度策略。以下是具体步骤注意事项: --- #### 1. **时间线配置(Timeline Provider)** 小部件的刷新由系统统一管理,开发者需通过`TimelineProvider`协议提供时间线,定义未来更新时间内容: ```swift struct Provider: TimelineProvider { func placeholder(in context: Context) -> SimpleEntry { SimpleEntry(date: Date(), data: "默认数据") } func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) { let entry = SimpleEntry(date: Date(), data: "快照数据") completion(entry) } // 核心方法:生成时间线 func getTimeline(in context: Context, completion: @escaping (Timeline<SimpleEntry>) -> ()) { var entries: [SimpleEntry] = [] let currentDate = Date() for hourOffset in 0 ..< 5 { let entryDate = Calendar.current.date(byAdding: .hour, value: hourOffset, to: currentDate)! let entry = SimpleEntry(date: entryDate, data: "更新数据") entries.append(entry) } let timeline = Timeline(entries: entries, policy: .atAfter) // 设置重新加载策略 completion(timeline) } } ``` - **时间线策略**:通过`.atAfter`或`.never`决定系统何时重新请求时间线。`.atAfter`会在最后一个条目时间点后触发更新[^1]。 --- #### 2. **触发更新的补充方法** 由于系统控制的更新频率有限(通常每小时4-6次[^2]),可结合以下方法增强实时性: - **应用内主动刷新**:在宿主App中调用`WidgetCenter`触发更新: ```swift WidgetCenter.shared.reloadTimelines(ofKind: "com.example.widget") ``` - **后台任务触发**:通过`BGAppRefreshTask`定期执行后台任务,更新数据并重新加载时间线[^3]。 - **网络/位置事件**:监听服务器推送(如APNs)或位置变化,触发时间线更新。 --- #### 3. **数据共享与更新** 小部件与宿主App需通过`App Groups`共享数据: ```swift // 在宿主App中写入数据 let sharedDefaults = UserDefaults(suiteName: "group.com.example.app") sharedDefaults?.set("最新数据", forKey: "widgetData") // 在小部件中读取数据 func getTimeline(...) { let sharedDefaults = UserDefaults(suiteName: "group.com.example.app") let data = sharedDefaults?.string(forKey: "widgetData") ?? "" // 生成时间线... } ``` --- #### 4. **优化策略** - **动态调整时间间隔**:根据数据变化频率设置时间线,例如股市行情可每15分钟更新,天气数据每小时更新。 - **低功耗模式适配**:系统在低电量时可能减少更新频率,需在UI中设计降级显示逻辑[^4]。 - **预览与交互限制**:小部件不支持实时交互,点击事件会直接跳转宿主App。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值