Apple Watch - 如何安排复杂功能更新与推送通知同步?

Apple Watch - how do I schedule a complication update to be in synch with Push notification?

我正在编写一个会议应用程序,与会者可以在其中查看会谈时间表,包括时间和房间号。用户的 select 他们感兴趣的演讲。手表应用程序将用户的下一个即将进行的演讲显示为复杂功能。

如果演讲延迟或房间更换,我们将向该演讲的所有与会者发送推送通知。该应用程序还定期(每 30 分钟)更新并发症如果用户在她的应用程序或手表上选择推送通知,并发症就会更新。

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

例如:并发症显示: 1:15p 1F室 并发症计划每隔 30 分钟更新一次。 推送在 1:10pm 处以 "Your next event 'Global Warming' is delayed to 1:45pm" 进入,但用户没有选择它。并发症将继续显示 1:15pm 直到 1:30pm

有什么方法可以避免这种情况?

你可以实现Background Fetch并强制更新complication,这样你就会有下一个方案:

iOS: 在 UIApplicationDelegate 上实施 application:didReceiveRemoteNotification:fetchCompletionHandler: 并在那里获取推送通知。之后使用 WatchConnectivity 传输获取数据以观察并强制更新并发症。

手表操作系统: 在 WKExtensionDelegate 上实施 didReceiveRemoteNotification: 并在成功获取后强制更新复杂功能。