检查手表应用程序是否处于最前端状态

时间:2017-08-22 14:29:50

标签: ios swift background watch-os-3

有没有办法找到手表应用程序是否在最前面(从iPhone或不在iPhone)?问题是当手表应用程序处于最前面状态时,它会访问两个 applicationWillResignActive()applicationDidEnterBackground() extensionDelegate方法。

那么如何检查手表应用程序是否处于最前面状态?

2 个答案:

答案 0 :(得分:0)

根据documentation of WKExtension,没有内置方法来检查应用是否是最前面的应用。即使WKApplicationState枚举doesn't have也可以确定您的应用是否是最前面的应用。

此外,当应用程序成为最重要的应用程序时(当应用程序在前台运行时用户降低他们的手腕之后),应用程序会短暂进入后台模式,然后被设计暂停。因此,系统函数applicationWillResignActive()applicationDidEnterBackground()被调用是预期的行为,因为应用程序实际上进入了后台模式。

watchOS3中,前台应用程序没有开发人员可以利用的好处,除了系统为前台应用程序自动恢复应用程序状态这一事实。

在watchOS 4中,最前面的应用程序具有以下额外优势:

  • 可以从后台播放触觉反馈。
  • 从后台唤醒以接收通知。
  • 从a完成后台转移后立即醒来 URLSession任务或Watch Connectivity会话。
  • 使用ProcessInfo对象的performExpiringActivity(withReason:using:)方法在后台完成任务时,接收增加的运行时优先级。

答案 1 :(得分:0)

在iPhone上,您可以查看isReachable WCSession的值。

根据WCSession documentationisReachable在以下时间为真:

  

配对且活跃的Apple Watch在范围内,相应的   WatchKit扩展正在运行,而WatchKit扩展正在运行   isReachable属性为true。