Apple Watch - 如何安排并发症更新以与推送通知同步?

Posted

技术标签:

【中文标题】Apple Watch - 如何安排并发症更新以与推送通知同步?【英文标题】:Apple Watch - how do I schedule a complication update to be in synch with Push notification? 【发布时间】:2015-11-23 19:05:29 【问题描述】:

我正在编写一个会议应用程序,参与者可以在其中查看会谈日程、时间和房间号。用户选择他们感兴趣的谈话。手表应用程序将用户的下一个即将到来的谈话显示为并发症。

如果演讲延迟或房间发生变化,我们将向所有与会者发送该演讲的推送通知。该应用还会定期(每 30 分钟)更新复杂功能。如果用户在其应用或手表上选择推送通知,则会更新复杂功能。

此设置有一个用例不会出错: 如果在手机或应用程序上收到推送通知,并且用户在推送上看到房间时间更改但没有选择推送,则推送上的消息将与并发症不同步。

例如:并发症显示: 1:15p Rm 1F 并发症计划每 30 分钟更新一次。 推送在下午 1 点 10 分出现,“您的下一个事件‘全球变暖’被延迟到下午 1 点 45 分”,但用户没有选择它。复杂功能将在下午 1:15 至下午 1:30 继续显示

有什么办法可以避免吗?

【问题讨论】:

【参考方案1】:

您可以实现 Background Fetch 并强制更新复杂功能,这样您将拥有下一个方案:

ios: 在UIApplicationDelegate 上实现application:didReceiveRemoteNotification:fetchCompletionHandler: 并在那里获取推送通知。之后使用WatchConnectivity 将获取的数据传输到Watch 并强制更新复杂功能。

watchOS: 在WKExtensionDelegate 上实现didReceiveRemoteNotification: 并在成功获取后强制更新复杂功能。

【讨论】:

不是真的,据我了解,除非用户选择收到的通知,否则应用程序中的任何内容都不会被调用。 你错了,上面提到的所有方法都是独立于用户操作调用的,我已经在我的项目中使用了这个功能。请仔细阅读文档。 @CoolDocMan 以防万一会在此处留下适当的链接:developer.apple.com/library/prerelease/ios/documentation/UIKit/…: 和 developer.apple.com/library/watchos/documentation/WatchKit/…: 我会尝试并回复您。如果可行,将向您发送虚拟啤酒:-)

以上是关于Apple Watch - 如何安排并发症更新以与推送通知同步?的主要内容,如果未能解决你的问题,请参考以下文章

在 Apple Watch 上接收来自 iCloud 的推送通知

Apple Watch 上的并发症不显示我的信息

如何通过 healthkit 使用 Apple Watch 心率更新 iOS 应用程序? (HealthKit 同步)

如何从 Apple Watch 获取实时健康更新,与健康工具包同步并将其发送到服务器?

Apple Watch 复杂功能色调颜色

自定义时复杂功能会冻结 Apple Watch