问题标签 [ios8-today-widget]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9617 浏览

ios - 今日小工具中的“无法加载”消息

我介于我的小部件开发之间。因为我们已经将我们的应用程序与小部件集成放在了一起。但是现在,我在 iOS 中遇到了今天的小部件的问题。我已经为两种情况编写了代码。第一次当小部件在应用程序启动时首次加载时,它会调用 Web 服务并通过 Internet 获取数据,然后我们将它们存储到用户默认值中以供以后使用。

现在,当下次用户下拉通知菜单时,我们首先向用户显示我们旧存储的内容,然后我们从 Web 服务中获取它并存储在用户默认值中,然后再次重新加载表。

对于上述操作,在某些情况下,我面临表格内容大小问题、闪烁问题和“无法加载”消息。

现在看看下面的代码,我在下面的方法中进行网络调用,在网络服务响应之后,我只处理完成处理程序。

所以,请与我分享您的经验和想法。

0 投票
1 回答
318 浏览

ios - iOS Today 小部件自动高度

我正在将文本数据从 xml 加载到我今天的小部件标签,所以高度不能是静态的。由于字体大小为 17px,我计算出一行中最多有 30 个字符,因此我尝试像这样设置高度

我将 +40 添加到高度,因为我在小部件顶部有静态文本,并且由于字体大小为 17px,所以乘以 22 我假设两行之间有 5px 间距。

但这不起作用,我不知道为什么:(。还有其他方法可以使小部件高度动态化吗?

0 投票
1 回答
1485 浏览

ios - iOS 今日小部件内容有时会消失并重绘

我从苹果文档中读到,在今天的小部件中,系统拍摄快照,当需要绘制小部件时,它首先显示快照,然后在需要时执行更新。

为了帮助您的小部件保持最新状态,系统有时会捕获小部件视图的快照。当小部件再次可见时,将显示最近的快照,直到系统将其替换为视图的实时版本。

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

从上面,我希望我的代码表现得像这样:

  1. 在 viewDidLoad 或 widgetPerformUpdateWithCompletionHandler 或任何地方,在调用 NCWidgetProviding 协议(例如 completionHandler(NCUpdateResult.NewData))之前,我设置了 UI。

  2. 然后我调用completionHandler(NCUpdateResult.NewData)。

  3. 然后系统会拍摄我的 UI 的快照。

  4. 当用户关闭并打开今天的小部件时,系统会立即显示快照,然后检查是否需要更新。

  5. 如果需要,请更新。

但是,如果我在绘制 UI 后关闭并打开今天的小部件,它不会像上面那样运行。

有时,它会像我预期的那样运行:当我打开小部件时,我以前的 UI 会立即显示,然后它会更新。

但在其他时候,会显示空白而不是我以前的 UI,然后当然会重绘 UI,但这种“闪烁”很烦人。

我做错了什么吗?我误解了文件吗?可能是因为我使用了自动布局和布局约束吗?

我已经尝试了我能想到的一切,但它有时会起作用,有时会不起作用。

如何避免这种烦人的眨眼?

任何帮助或建议表示赞赏。谢谢!

0 投票
4 回答
2688 浏览

ios - Today Extension 在 iOS 8.1.2 上启动前崩溃

我一直在做一个今天的扩展,从提要中下载文章并显示最新的文章。整个事情在 iOS 8 上运行良好,仍然在 iOS 8.1 上运行,然后是 iOS 8.1.2,我们开始抱怨今天的扩展不再工作了。我尝试在 iOS 8.1.2 设备上进行调试,甚至在扩展启动之前,它就因以下错误而崩溃:

我已经阅读了这篇关于开发今日扩展时经常发生的错误的帖子:http: //www.atomicbird.com/blog/ios-app-extension-tip

汤姆哈灵顿在他的帖子中说:

在 iOS 8(和其他最新版本)中,在 Xcode 的构建设置中启用模块意味着您无需显式列出要使用的所有框架。它们会被自动找到。

但今天扩展使用的 NotificationCenter.framework 并非如此。如果您从构建设置中删除它,您将不会收到任何构建警告或错误。但是当你尝试加载扩展时,你会从 libextension.dylib 中得到一个异常并且你的扩展不会加载。异常消息没有启发性:

2014-08-16 12:06:53.793 TodayTestExtension[41313:6111763] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* setObjectForKey:对象不能为零(键:<__NSConcreteUUID 0x7fd729422390> ED3B42F8-66CD-4CB0- BCD5-F3DBA​​6F34DB5)' 如果您正在进行今天的扩展,只需将该框架留在构建设置中。它不应该在那里,但它确实存在。

我的扩展在其构建设置中确实包含 NotificationCenter.framework,但我怀疑我的问题在某些方面可能相似。

有人遇到过类似的问题吗?知道如何解决吗?

0 投票
2 回答
1274 浏览

swift - iOS Today Extension 能否从应用程序的 Info.plist 中读取 URL 方案

我们有我们的应用程序目标,在 Info.plist 中,我们定义了 URL 方案,可用于使用 URL 打开应用程序。

现在我们正在添加今天的扩展。我们将希望有一个表格视图,它将从扩展中打开该 URL。我们看到了 API 是如何支持它的。

我们可以从应用程序的 Info.plist 中获取 URL 方案,还是我们基本上是“硬编码”扩展程序中的值以使其调用打开?

0 投票
1 回答
6556 浏览

ios - NSUserDefaultsDidChangeNotification 和 Today Extensions

我正在开发一个带有Today Extension的 iPhone 应用程序。该应用程序有一个模型模块,可以从/保存到NSUserDefaults. 由于我希望主应用程序和扩展程序都可以使用此信息,因此我使用了一个应用程序组:

应用程序和扩展程序都可以毫无问题地访问信息。

主应用程序有时可能会创建一个本地通知来呈现给用户。该通知有两个与之关联的操作 ( UIUserNotificationAction)。其中一项操作会触发一些代码在主应用程序的后台运行。该代码更改NSUserDefaults信息并触发同步。我的代码是这样的:

现在,在今日分机上。我自然会观察对信息所做的任何更改,NSUserDefaults以便我可以在小部件上重新加载界面:

现在,这是我的问题:

  1. 主应用程序安排一个 UILocalNotification。我打开今天视图并查看我的今天小部件。

  2. 当通知触发时,屏幕顶部会出现一个横幅。

  3. 我在该横幅上向下滑动以显示这两个操作,然后选择我之前提到的那个(今天的小部件仍然在屏幕上)。

我知道该操作在后台正确运行,并且正在对NSUserDefaults.

然而,即使今天小部件一直处于活动状态并且一直显示在屏幕上,也不会触发重新加载操作。经过进一步调查,我可以确认NSUserDefaultsDidChangeNotification没有被触发(我放置了一个断点并且它没有触发,并且还进行了一些其他检查)

我知道通知操作正在进行更改,因为如果我强制重新加载小部件(通过关闭和打开今日视图),小部件会正确更新。

我在网上看过各种教程,他们说的第一件事就是收听这个通知并更新小部件,以便“小部件与NSUserDefaults”同步。但问题是 AFAICT 这个通知是绝对没用的!怎么来的??


注意 1:当我从今天的小部件中更改有关 NSUserDefaults 的信息时,通知会正确触发。

注 2:调试今天的小部件绝对是可怕的,顺便说一句。在它对断点和崩溃做出反应之前,总是需要告诉 Xcode “按名称附加到进程...”。而且 iOS 不断地为小部件创建一个新进程,所以我必须不断地告诉 Xcode 再次附加。

0 投票
1 回答
4838 浏览

ios - iOS Swift Today Extension: import class from container app?

I have an app with a Today widget. I would like to use a model class from the container app in the TodayViewController.swift.

Is such a thing possible?

I copied the file into the Today Extension folder and tried to import it. No dice.

I can't find an answer in the documentation or online.

Thanks

0 投票
2 回答
1120 浏览

ios - 横向模式下的小部件问题

我对小部件有这个恼人的问题,它会在横向模式下修剪我的视图内容。我已经静态地放置了内容大小,但它不起作用。Apple 是否将小部件限制为横向具有特定高度?苹果的界面指南说不推荐,但可行吗?

编辑: 在此处输入图像描述

0 投票
1 回答
495 浏览

ios - 如何取消特定视图的通知中心视觉效果 (iOS)?

我已将我的功能应用于我的 Today Widget 应用程序applyVibrancyviewDidLoad方法。mainViewController

这成功地将这种视觉效果应用到我的整个小部件中。但我想让我的一些嵌套视图(标签、按钮、图像等)不受这种效果的影响。

我怎样才能做到这一点?

0 投票
1 回答
756 浏览

ios - 通知中心关闭时调用函数

我正在使用今天的小部件(使用 Swift)编写我的第一个 iOS 应用程序。我想知道是否有一个函数在我的应用程序在关闭通知中心后回到前台时被调用。

我知道我可以使用观察者进行检查,UIApplicationWillEnterForegroundNotification但是在使用我的应用程序并再次关闭它时拉下通知中心时不会调用我的函数。

我的问题很简单:用户不太可能拉下通知中心来操作我在应用程序中使用的数据,但我仍然必须考虑如果他们这样做会发生什么。用户应该能够通过按下今天小部件按钮来保存他的当前位置。

如果在使用我的应用程序时发生这种情况,该应用程序将不会检查新数据。