iOS 10 Today View Widget:如何判断它是否*实际*在屏幕上/可见?

iOS 10 Today View Widget: How to tell if it's *actually* on screen / visible?

我有一个小部件,它在一天中定期从服务器检索更新,但希望它在用户实际查看它时立即再次更新。这在 iOS 8/9 中总是工作正常... viewWillAppear 专门在视图即将出现时触发。

但是在iOS10,其他时间好像也有。不确定什么时候。但是突然之间,我在付费服务更新服务上获得了大约 5 倍的点击率,所以这是一个真正的问题。

有没有办法在“今日”小部件上保证该小部件实际可见?或者,至少,今日视图实际上是可见的?

我敢打赌 5 倍的点击率是因为用户现在如何在 iOS 10 上解锁他们的设备。从锁定屏幕滑动会显示用户小部件,而不是解锁他们的设备。如果您在 viewWillAppear 中请求,那么每次用户肌肉记忆尝试以旧方式解锁设备时,通过滑动,您的小部件都会发送服务器请求。您可能想为请求设置一个计时器,或添加一个刷新按钮。

我认为您确实需要重新考虑这个问题,我强烈反对您目前收到的建议。让我解释一下:

  • 我从来没有使用过小部件,但是从 iOS 10 开始,我现在一直在使用它们。我不认为我是唯一的人——他们更靠前、更中心,也更容易接近。我想说 5 倍的很大一部分是现在真正更多地使用您的小部件的人。

  • 虽然人们仍然以旧方式解锁他们的设备,但这只是一种习惯,人们很快就会改掉,如果他们还没有的话。我不认为修改您的小部件以响应短期习惯是个好主意。

  • 大多数其他小部件会自动刷新,因此添加刷新按钮有悖于 UI、人们的期望以及 Apple 希望小部件的工作方式。试图与系统作斗争不是一个好主意。添加刷新按钮违背了小部件作为查看更新的超快速方式的想法。

作为解决方案,我认为您需要考虑不同的服务器选项(AWS 非常便宜)。查看您发送的数据 - 看看您是否可以减小大小,或者只发送已更改的数据。添加最小刷新时间,即不要在 10 分钟内刷新多次。如果您还没有这样做,请考虑通过添加一些小但真正有用的高级功能来抵消服务器成本,从而通过您的应用获利。