iOS Widget后台更新

2023-11-23

根据苹果关于 widgetPerformUpdateWithCompletionHandler: 的说法,当小部件不可见时,iOs Widget 也可以更新其内容。

在我的调试会话中,我注意到每次通知中心视图消失时,dayViewController 都会被释放,所以我的问题是:

如果我的 TodayViewController 被释放,它如何响应 widgetPerfomrUpdateWithComplationHandler ?

我需要小部件每小时更新其内容(如果它不可见),我该怎么做?

iOs 小部件的生命周期如何?

请帮帮我 :) 谢谢


小部件生命周期由 iOS 本身管理。

当您进入后台时,系统会拍摄您今天的小部件的快照。系统管理后台获取(小部件的后台生命周期),它会调用widgetPerfomrUpdateWithComplationHandler:用于尽可能更新您的小部件数据并每次拍摄快照。当您再次打开它时,它将首先加载最新的快照,然后加载实时数据。


小部件内容更新

更新内容

Today 扩展点提供了用于管理小部件状态的 API 并处理对其内容的更新(您可以在 通知中心框架参考)。虽然有几个 Today API 中特定于平台的差异、功能 两个平台上支持的内容基本相同。

为了帮助您的小部件查找最新信息,系统偶尔会捕获 小部件视图的快照。当小部件变得可见时 再次显示最近的快照,直到系统更换 它具有实时版本的视图。

要在拍摄快照之前更新小部件的状态,请务必 符合NCWidgetProviding协议。当你的小部件收到 widgetPerformUpdateWithCompletionHandler: 调用,更新你的 小部件的视图包含最新内容并调用完成 处理程序,使用以下常量之一来描述结果 更新内容:

NCUpdateResultNewData——新内容需要你重新绘制视图

NCUpdateResultNoData- 小部件不需要更新

NCUpdateResultFailed——更新过程中出现错误

参考今日小工具


通知中心数据更新

通知中心

Note

时间表和预期用途 widgetPerformUpdateWithCompletionHandler:旨在作为一种方便的 所有数据/模型更新逻辑的主页。如果实施,该系统将 在适当的时间调用小部件来更新其状态,无论是在 通知中心在后台可见。一个 需要实施才能启用后台更新。预计 小部件将执行异步更新工作并关闭 尽可能主线程。小部件应该调用参数 当工作完成时阻塞,传递适当的 NC更新结果。小部件不应阻止从 viewWillAppear:关于此操作的结果。相反,小部件 应该在 viewWillAppear: 中加载缓存状态以匹配 视图的状态来自最后一个 viewWillDisappear:,然后转换 当新数据到达时,可以顺利地接收新数据。

参考iOS 8.1 通知中心


小部件生命周期

Widget Life Cycle

参考:应用程序扩展的生命周期

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS Widget后台更新 的相关文章

  • DatePicker 停止 CoreData 按预期工作

    我有一个应用程序 它保存 UIDatePicker 中的文本和日期 然后在您回到 UIDatePicker 中的该日期时显示该注释 效果很好 只有我发现将 UIDatePicker 日期设置为今天会停止 CoreData 工作 只有当我运行
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • iOS - 当 UIView 移动时将 UITextField 移动到不同的位置

    我有一个主 UIView 它通过开关向上移动 我有这个工作 那里没有问题 现在 UIView 当向下时 占据屏幕的大约一半 当它向上推时 它会显示底部 40px 在 UIView 中 当它处于向下状态时 它有一个 UITextField 并
  • SwiftUI:状态栏颜色

    有没有办法将 SwiftUI 视图的状态栏更改为白色 我可能错过了一些简单的东西 但我似乎找不到在 SwiftUI 中将状态栏更改为白色的方法 到目前为止我只看到 statusBar hidden Bool 状态栏文本 色调 前景色可以通过
  • 在 IOS 上使用 AVComposition 混合两个音频文件

    我正在尝试混合两个音频文件 将一个音频文件放在另一个音频文件之上 不是缝合在一起 但我在 IOS 上学习 AVFoundation 时遇到了困难 我在这里遵循了这个答案 如何使用 AVMutableCompositionTrack 合并音频
  • Swift Codable 将空 json 解码为 nil 或空对象

    这是我的代码 class LoginUserResponse Codable var result String var data LoginUserResponseData var mess String public class Log
  • 在 SwiftUI 中使用分段式选取器在两个页面之间滑动

    我有一个Picker with pickerStyle SegmentedPickerStyle 使其成为分段控件 我想让页面在之间平滑滑动 而不是使用条件语句替换视图 这是我迄今为止所做的 gif 这是到目前为止的代码 由if 而不是在不
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • iOS 滚动视图允许滚动过去的内容

    我正在努力优化我的应用程序以适应横向和较小的屏幕 我主要使用滚动视图来实现这一点 在我的其中一个视图中 我有一个容器视图 当我在故事板中的设备之间切换时 这个容器视图看起来很完美 容器视图映射到具有滚动视图的视图控制器 该滚动视图的顶部 底
  • 如何恢复消耗品应用内购买?

    我正在开发一款 iOS 游戏 用户可以通过应用内消耗品购买一定数量的内部货币 比如 1000 金币 如果用户想将余额从一台设备转移到另一台设备 如何恢复消耗品购买 在苹果的文档中 它说我们必须使用我们自己的服务器 但是如何获取用户的Appl
  • iOS:提高图像绘制速度

    我有一系列想要制作动画的图像 UIImageView支持一些基本的动画 但不足以满足我的需求 我的第一个方法是使用UIImageView并设置image当图像属性 这太慢了 速度慢的原因是图像的绘制 这让我感到惊讶 我以为瓶颈会加载图像 我
  • Xcode 中的 iOS 9 警告 - 此文件设置为针对早于项目部署的版本进行构建。功能可能有限

    我刚刚将我的 Mac 更新到最新的操作系统 并将 Xcode 更新到最新版本 现在我收到此警告 但我不知道该由谁来删除它 也不知道它的真正含义是什么 有人可以向我解释一下吗 Thanks Select Main storyboard in
  • 频繁绘制 CGPath 时的性能

    我正在开发一个将数据可视化为折线图的 iOS 应用程序 该图被绘制为CGPath在全屏自定义中UIView最多包含 320 个数据点 数据经常更新 图表需要相应地重新绘制 刷新率为 10 秒就很好了 到目前为止很容易 然而 我的方法似乎需要
  • NVActivityIndi​​catorView 仅适用于特定视图

    我正在使用这个库https github com ninjaprox NVActivityIndi catorView https github com ninjaprox NVActivityIndicatorView用于显示加载指示器
  • 拖动时获取MKAnnotation的坐标

    我正在根据用户添加的注释的位置创建一条路径 MKPolyline 我想允许用户通过拖动引脚来更改路径 我目前可以做到这一点 但 MKPolyline 不会更新 直到引脚被放下 我实施了 void mapView MKMapView mapV
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • 使用基于约束的布局自动调整 NSTokenField 的大小

    有没有办法自动调整大小height使用约束的 NSTokenField 保持宽度恒定 sizeToFit应该有效 但事实并非如此 如果我设置一个约束来保持宽度不变并调用此方法 它将忽略约束并仅调整宽度大小 当我想要的是仅调整高度大小时 基于
  • 在故事板中的视图控制器之间滑动手势

    我希望添加左右滑动手势来在视图控制器之间进行更改 这是否可能 并且有没有一种简单的方法可以在故事板中执行此操作 谢谢 故事板允许您在两个视图控制器之间设置 Segues 我想说首先在视图之间附加 Segues 给它一个标识符 然后使用类似的
  • 分发内部业务 IOS 应用程序

    我遇到了 IOS 应用程序分发的一个令人困惑的部分 因此 我需要简单细分一下我的限制 即仅将我的应用程序分发给我的员工 同事或任何被视为 内部 的人 这是表明我不希望该应用程序出现在应用程序商店中的另一种方式 我的情况是我为几家公司开发 他
  • IPV6 快速可达性

    我是 swift 和 xcode 的新手 并且我的应用程序因 IPV6 而被拒绝 性能 2 1 当我们执行以下操作时 您的应用程序会在运行 iOS 9 3 5 并连接到 IPv6 网络的 iPad 和 iPhone 上崩溃 具体来说 当我们

随机推荐

  • 如何在 Haskell 中实现“cat”?

    我正在尝试写一个简单的catHaskell 中的程序 我想将多个文件名作为参数 并将每个文件依次写入STDOUT 但我的程序只打印一个文件并退出 我需要做什么才能让我的代码打印每个文件 而不仅仅是传入的第一个文件 import Contro
  • 向 C# 数组添加元素

    我想以编程方式向 C 中的字符串数组添加或删除一些元素 但仍保留以前的项目 有点像 VB 函数重新调暗保留 明显的建议是使用List
  • 这是双重检查锁定的更好版本,没有易失性和同步开销

    下面的代码片段来自Effective Java 2nd Edition Double Checked Locking 双重检查实例字段延迟初始化的习惯用法 private volatile FieldType field FieldType
  • 由于 Maven 中央存储库已移至 https,因此无法构建 grails 2.3.7 项目

    由于 Maven 中央存储库已移至 https 我无法构建 2 3 7 grails 项目 我尝试了这篇文章的建议 对 http repo1 maven org maven2 的请求返回 501 HTTPS 必需状态和正文 但是我仍然遇到问
  • Android,在 URL 中制作图像等于 ImageView 的图像

    我想知道如何使位于特定 URL 的图像等于 ImageView 的图像 下载图像并将其设置为图像视图的内容 try ImageView i ImageView findViewById R id image Bitmap bitmap Bi
  • 将 Base64 字符串转换为 PictureBox

    我能够转换image转换为 Base64 但现在我试图将其转换回来并将其存储在PictureBox var pic Convert FromBase64String product Picture using System Drawing
  • 如何使用延迟加载和分页查询 Primefaces dataTable 的数据

    在我的 JSF 数据表中 我实现了延迟加载 当我对记录进行分页时 执行下一组记录大约需要 4 或 5 秒的时间 实际上执行结果应该花费不到一秒的时间 我的实现方式就发生了这种情况 不知道如何解决这个问题 扩展 LazyDataModel 的
  • 如何使用 boto3 访问名称中带有句点 (.) 的存储桶中的密钥?

    Context 我正在尝试获取所有存储桶的加密状态以获取安全报告 但是 由于加密是基于密钥级别的 因此我想迭代所有密钥并获得一般加密状态 例如 是 是所有密钥都被加密 否 是没有加密 部分 是一些密钥被加密 我必须使用 boto3 因为 b
  • 继承和组合之间的区别

    组合和继承是一样的吗 如果我想在Java中实现组合模式 我该如何实现呢 他们是完全不同的 继承是一个 is a 关系 组成是一个 has a 您通过拥有另一个类的实例来进行组合C作为你的班级的一个领域 而不是扩展C 组合比继承好得多的一个很
  • 将所有 JTable 单元格设置为不可选择

    我正在尝试创建一个仅显示数据并且不允许任何编辑或选择的 JTable 我通过运行以下命令将所有单元格设置为不可编辑 TableModel model new DefaultTableModel data titles public bool
  • 使用 RecyclerView 和 GridLayoutManager 的简单 Android 网格示例(如旧的 GridView)

    我知道RecyclerView已取代旧的功能ListView and GridView 我正在寻找一个非常基本的示例 它显示了使用的最小网格设置RecyclerView 我并不是在寻找冗长的教程风格的解释 只是一个最小的例子 我想模仿旧 G
  • Azure Ad b2c:成功登录 azure ad b2c 后在声明中获取电子邮件

    我正在使用自定义策略的入门包社交和本地帐户 pack 它对我来说工作得很好 但我面临一个问题 成功登录后我需要收到电子邮件作为索赔 一旦用户注册并立即重定向回应用程序 我就会收到电子邮件作为声明 但当用户简单登录时我没有得到它 我怎样才能得
  • 如何检查项目中的firebase cloud firestore大小?

    如何检查项目中的firebase cloud firestore大小 根据 firebase 免费计划为您提供 1GB 用于 firebase cloud firestore 我已经创建了一些包含文档的集合 但是我在哪里可以检查我正在使用的
  • jQuery ajax 请求与 json 响应,如何?

    我正在发送一个带有两个 post 值的 ajax 请求 第一个是 action 它定义了我的 php 脚本必须解析的操作 另一个是 id 它是它必须解析脚本的用户的 id 服务器在 array 内返回 6 个值 然后使用 PHP 函数将其编
  • 在一行中实例化 JavaScript 对象并填充其属性

    有没有办法可以在构造函数中完成所有这些操作 obj new Object obj city A obj town B 你为什么不这样做 var obj city A town B
  • 使用 Spring Data 和 Cassandra @Query 的 IN 子句

    我正在尝试使用 Spring Data 中的 IN 子句和 Query 注释来查询 Cassandra 表 我有一个表 其分区键为last name 集群键为first name 我有这个查询工作 Query SELECT FROM peo
  • Python Flask 获取json数据进行显示

    我目前正在尝试向 sqlite 数据库显示每 5 秒更新一次的值列表 我可以使用以下代码将结果转换为 JSON 格式 app route status methods GET POST def get temps db get db cur
  • AVSpeechSynthesizer 出现问题,有解决方法吗?

    我正在使用 AVSpeechSynthesizer 来播放文本 我有一系列的话语要发挥 NSMutableArray utterances NSMutableArray alloc init for NSString text in tex
  • 在Java中使用类来存储静态数据?

    创建一个单独的类并将其用作仅包含静态数据变量的存储是一个坏主意吗 我目前正在开发一个 Android 应用程序 但这个问题对于 Java 来说是普遍的 对于android 我正在跨活动移动 我想在该单独的类中存储一些全局 静态标志 变量 并
  • iOS Widget后台更新

    根据苹果关于 widgetPerformUpdateWithCompletionHandler 的说法 当小部件不可见时 iOs Widget 也可以更新其内容 在我的调试会话中 我注意到每次通知中心视图消失时 dayViewControl