Nov*_*tor 4 apple-watch watchkit apple-watch-complication
我有一台服务器可以保留2个布尔值.这些布尔值每15秒更换一次.
每当我唤醒Apple Watch时,我都希望复杂功能能够显示当前的状态.我怎么能在早期用尽预算的情况下做到这一点?
最好的方法是每当我叫醒手表时将最新的状态提取到并发症中.我看到的唯一可能的方法是每15秒轮询服务器(直接或通过我的手机).问题是我很快就会用完所有分配的时间.
如果我能让复杂功能在手表被唤醒时更新,那就太棒了.可以这样做吗?
小智 7
除非你需要,否则有办法不获取数据吗?
没有.
通过"唤醒手表",你说的是通过与手表相互作用或抬起手腕来激活手表.无论采用何种方式,手表都可以唤醒表盘或最后一次活动(由唤醒屏幕设置控制).
如果它唤醒到表盘,这与您的应用程序,手表扩展或复杂控制器无关.没有通知可用于处理该方案.
如果它唤醒某项活动,则可能不是您的活动.如果这是您的活动,您所能做的就是在您的观看应用处于活动状态时停止更新.
无论哪种方式,只有在手表醒来时才更新复杂功能.
如果您考虑一下您的要求,它会违反Apple的指导方针,因为用户希望看一下表盘并已经看到当前的复杂数据.系统要求您在手表未唤醒时提供更新,以便在手表唤醒时立即显示信息.
更新并发症数据
PKPushTypeComplication推送通知
如果您不是经常全天更新,那么这将是理想的选择.
Apple对您从服务器发送的此类型的推送次数应用每日限制.如果超出限制,则不会发送后续推送.
预定的自动更新
这里的问题是最小预定更新间隔是10分钟,因此您不会有剩余9-3/4分钟的当前并发症信息.
计划更新对于数据在可预测时间发生变化的应用程序非常有用.当发生预定更新时,ClockKit首先调用数据源的requestedUpdateDidBegin或requestedUpdateBudgetExhausted方法.
这些方法可能会满足您的要求,但您必须尝试它们并确定哪一个符合您的需求.
观看扩展+背景NSURLSession
这可能会给电池带来更多的消耗,但即使不在手机的范围内也能正常工作.
手动更新通过 WCSession transferCurrentComplicationUserInfo
如果您在手机的范围内,则手机更有可能(始终)轮询您的服务器,然后提供持续更新.
当您的iOS应用收到针对您的复杂功能的更新数据时,它可以使用Watch Connectivity框架立即更新您的复杂功能.WCSession的transferCurrentComplicationUserInfo:方法向WatchKit扩展发送高优先级消息,根据需要将其唤醒以传递数据.收到数据后,根据需要延长或重新加载时间线,以强制ClockKit从您的数据源请求新数据.
说了这么多,另一种方法是在服务器端监视这些布尔值,并且只在出现问题或更改时才发出通知.您没有准确解释这些布尔指示的内容,但还有其他监控方法,可避免您不得不经常轮询服务器(通过手机或手表).
如果这不是一个选项,你真的应该考虑查看手机上的服务器数据,或者切换到更复杂的更新间隔来解决并发症.Apple不鼓励频繁更新,甚至他们自己(股票或天气)的并发症也不会每分钟更新几次.
更新:
如果我只是想在用户自己请求时更新并发症(=点击并发症)怎么办?他一直对这个州并不感兴趣.
当手表醒来时你能(仅)更新并发症吗?没有.
您可以在分机唤醒时更新分机吗?是.
用户需要考虑复杂性的含义.它旨在定期更新以显示当前信息.没有机制不更新复杂性,因为用户对了解状态几乎不感兴趣.
你能点击一个复杂功能打开它的应用程序吗?是.但是并发症本身会显示过时的数据,用户必须做的不仅仅是提高他们的手腕以查看当前的状态.
如果您考虑用户在询问什么,他们并没有描述复杂性(显示当前状态),而是在他们请求时查看当前状态的方法.
这种机制不同于并发症.他们真的描述了用户刷新(或打开)以查看的Glance(或应用程序).
如果他们想要实时更新,可以通过.WCSession updateApplicationContext
使用updateApplicationContext:error:方法将最近的状态信息传递给对方.当对方醒来时,它可以使用此信息来更新自己的状态.使用此方法发送新字典会覆盖以前的字典.
可行的方式是手机向手表发送背景更新.手表存储了最新的更新,当您的应用程序或Glance唤醒时,它将可用.用户查看应用程序或Glance,它显示手表存储的最新值.在打开时,随着新的更新到来,它会继续更新.在关闭(例如,不活动,睡着)时,手表会代表您的应用或扫视存储最新更新.
如果用户不需要应用程序或浏览器每15秒更新一次,那么您就不需要轮询,只需使用a NSURLSession来获取当扩展名唤醒时的当前状态.
如果你向用户解释当用户抬起手腕时没有办法更新并发症,并且他们不关心一直知道状态(这是一个复杂的意图),那么告诉他们是什么Glance可以做到,你会发现用户似乎想要的更容易实现,理想情况下没有不必要的耗尽电池.
| 归档时间: |
|
| 查看次数: |
1936 次 |
| 最近记录: |