问题标签 [watchos-3]

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 回答
347 浏览

crash - WatchOS 3 在收到推送通知时崩溃

我有一个配置为接收远程通知的应用程序。在 iOS 10 发布之前,iOS 和 WatchOS 端一切正常(推送通知使用本地化消息和自定义声音)

在 iOS 10 和 WatchOS 3 发布后,我不得不使用 UserNotification 框架添加请求推送权限的代码(否则系统将不会提供推送令牌,即使旧代码未被弃用)

最糟糕的是,如果我在远程通知到达时运行手表应用程序 - 手表将重新启动并带有苹果标志。所以推送通知不会导致应用程序本身崩溃,它会导致整个手表操作系统崩溃。有任何想法吗?

0 投票
1 回答
341 浏览

watchkit - 如何在 watchOS 3 上使用 WKInterfaceSCNScene 渲染场景?

我尝试将 ScenKit 场景添加到 WKInterfaceController,创建了 IBOutlet WKInterfaceSCNScene* sceneInterface;(如记录)并将场景属性放入刚刚创建的 SceneKit 场景的界面构建器中,但我没有在手表上看到该场景。

我也尝试过使用 presentScene 方法并以编程方式坐在场景中,如下所示:

我做错了什么?

0 投票
1 回答
37 浏览

frameworks - 如何使用 swif3 为 ios 和 watchos3 使用相同的类“XY”

我尝试使用自定义框架,但它没有在 WatchApp Extension -> interfacecontroller 中导入。在 ios 应用程序中,导入语句工作正确。

我的问题是:如何在两个目标(ios 和 watchos)中使用相同的类

0 投票
1 回答
345 浏览

swift - 为什么 Health store 的 PauseWorkoutSession 不暂停 Session?

我正在创建一个 iWatch 应用程序,它读取心率数据,然后我用它来绘制一些图表。应用程序中有 2 个按钮,一个用于暂停锻炼,另一个用于恢复锻炼。单击暂停按钮时,我正在调用pauseWorkoutSessionhealthStore 的方法:

OnClick 的 Resume Button,我正在调用resumeWorkoutSessionhealthStore 的方法:

要获取心率数据,我正在运行以下代码:

我面临的问题是更新处理程序不断被调用,即使锻炼暂停,新的心率值也会不断添加到样本数组中。究竟是pauseWorkoutSession做什么的?是不是应该暂停锻炼以获取新的心率读数?

0 投票
2 回答
264 浏览

ios - 如何在 Apple Watch 模拟器上强制调用 getPlaceholderTemplate 以更新并发症预览

我在模拟器上安装应用程序时犯了一个错误,而没有设置我所有的并发症模板。正如文档所述, getPlaceholderTemplate 被调用一次,然后被缓存。

所以现在我已经设置了我的所有手表复杂功能模板,我想通过自定义模块化面来将它们发送出去。但是只有我最初创建的一个模板会显示出来,其余的都有白框。这只是我关心的静态模板。

我已经尝试从模拟器中删除应用程序,通过 Watch 应用程序将其删除,重新安装,但似乎仍然没有再次调用该函数来更新模板。有什么想法吗?谢谢。

0 投票
1 回答
270 浏览

ios - GameKit 无法在 watchOS 3 上运行

我正在尝试将 GameKit 支持添加到我的 watchOS 应用程序中。但是,在设备上运行应用程序时,身份验证失败并出现错误NSURLErrorDomain code -1009 (null)。在模拟器中运行时,应用程序无法构建,说它找不到 GameKit 模块。

如何修复这些错误?我正在使用 Xcode 8 + watchOS 3 和 iOS 10。

编辑:GameKit 身份验证助手类的代码

0 投票
0 回答
129 浏览

avfoundation - Watchos3 上的接口控制器中的 audioEngine.start() 出错

在我使用的 init 方法中

音频引擎 = AVAudioEngine()

初始化我的audioEngine,然后单击“录制”按钮后我启动我的引擎..

但我遇到了一个错误错误:libc++abi.dylib:以 NSException 类型的未捕获异常终止

0 投票
2 回答
576 浏览

performance - 更新复杂功能会逐渐降低 Apple Watch 应用程序在 watchOS3 中的性能

大约一周以来,我一直在强调这个问题,试图找出缓慢但稳定的 Apple Watch 应用程序性能下降的根源。在大约两天的时间里,我的应用程序的 UI 会变得越来越迟钝。我已将其缩小为复杂更新代码。即使我将并发症更新减少到绝对最低限度,这个问题仍然会发生,尽管比使用一些实际数据更新并发症要慢。我每 10 分钟更新一次并发症。一旦新数据到来,我只需执行

这反过来又调用:

这工作正常,新数据显示,但是当重复几十次时,主应用程序的 UI 响应开始显着下降,并且当它重复大约一百次时(这发生在不到一天的时间,更新时间为 10 分钟)用户界面确实显着变慢。

我对复杂结构没有什么特别的想法——没有时间旅行,只显示当前数据,一切都为此做好了准备。为了确保我没有看错地方,我做了一个每秒重新加载时间线的测试,在这个测试中,我的 getCurrentTimelineEntryForComplication 看起来像这样:

所以那里实际上什么都没有,只需将空处理程序发回即可。然而,即使在这种情况下,在大约一百次时间线重新加载后,主应用程序的 UI 也会明显变慢。

其他一些需要注意的事项:

  • 如果我不更新复杂功能,应用程序的 UI 性能永远不会降低,无论我打开它多少次,或者我使用它多久,或者数据获取代码在后台运行多少次。

  • 在模拟器中对此进行测试时,我无法让性能下降,但我可以始终看到来自并发症更新的小而稳定的内存泄漏(同样,无论我在内部进行多么简单的更新,都会发生这种情况getCurrentTimelineEntryForComplication 方法。

有没有其他人注意到这一点,有没有希望处理它?难道我做错了什么?目前,我确保仅在数据发生变化时更新并发症,但这只会推迟问题,而不是解决问题。

10月24日编辑

我在真正的手表上做了更仔细的测试,虽然之前由于某种原因我没有注意到与真正手表相关的内存泄漏,但我现在肯定看到它发生了。真实设备完全反映了在模拟器上看到的问题,只是使用了不同的初始内存分配量。

同样,我所做的只是在一个常量循环上调用 reloadTimelineForComplication,并使用来自缓存数据对象的单行文本更新复杂性,否则复杂性控制器将被剥离到最低限度。当复杂功能从表盘上移除时,内存泄漏可以预见地停止。

我的主要项目是用ObjectiveC编写的,但是我用一个用Swift制作的测试项目重复了测试,没有任何区别。此外,最新的 XCode 8.1 GM 和随模拟器提供的 watchOS 3.1 beta 以及在安装了 watchOS3.1 的真实手表上运行时,问题仍然存在。

2017 年 1 月 24 日 编辑

可悲的是,这个问题在 watchOS 3.1.3 中仍然存在,完全没有改变。与此同时,我联系了 Apple 的代码级支持,向他们发送了示例代码,他们确认问题存在,并告诉我提交错误报告。大约两个月前我确实提交了一份错误报告,但直到现在它仍然是未分类的,我猜这意味着还没有人看过它。

2017 年 1 月 31 日 编辑

Apple 已经在 watchOS3.2 beta 1 中解决了这个问题。我一直在模拟器和真实手表上测试它。一切都很好,没有内存泄漏或性能下降了。最后没有解决方法,直到他们决定修复它。

0 投票
1 回答
191 浏览

ios - watchOS 通知可以显示自定义嵌入字体吗

在 watchOS 中,如果应用程序中嵌入了自定义字体,该字体肯定可以在WkInterfaceLabel, WKInterfaceButton, 等...

该字体是否适用于 watchOS 的通知视图?

如果没有,是否有任何可能的方法,比如我们可以在 iOS 设备上安装字体配置文件,我们可以使用自定义字体进行通知视图吗?

0 投票
1 回答
535 浏览

ios - 删除 WatchOS Beta 配置文件 - 仍通过软件更新接收 Beta

我的 iPhone 6s 和第一代 Apple Watch 都注册了开发者测试版。我从两台设备中删除了 beta 配置文件。手表现在在 OS 3.0 (14S326) 上,但在两个设备多次重新启动后,我仍然收到 watchOS 测试版(目前是 watchOS 3.1 测试版 2)。

如何强制手表停止接收 beta OS 更新并返回稳定频道?