WatchOS 3 - 如何判断父应用是否在前台?
我想做一个遥控类型的watchkit应用程序,我可以通过手表在我的父应用程序的屏幕上触发某些事情。当手表应用程序启动时,我会显示一个标签,指出它正在与应用程序连接。WatchOS 3 - 如何判断父应用是否在前台?
我创建了一个WCSession并发送消息给应用程序以查看应用程序是否在前台。事实证明,即使该应用程序在后台,它仍然会发送回应。因此,我的手表应用认为该应用已准备就绪。
我试过查询[UIApplication sharedApplication] .applicationState,但是这总是回到nil,并在调试过程中发出警告,声明只能在主线程上调用UIApplication。
我也看了类似openparentapplication一个功能是做到这一点,但已被否决,我相信作为WatchOS 2或3
我怎么能告诉该应用程序是在腕表前景,所以我知道它的安全将我的命令发送到应用程序来更新它的UI中的元素?
据我所知,这里没有默认的方法。
但是,一种可行的方法是向- (void)applicationDidBecomeActive:(UIApplication *)application;
和- (void)applicationWillResignActive:(UIApplication *)application;
发送一条消息给Watch应用程序,以指示Watch应用程序是否可以“远程控制”iOS应用程序。
因此,在你WatchKit
应用程序,你应该声明一个布尔变量来存储您的iOS应用的状态(类似isPhoneAppActive
),并从iOS应用程序中使用这个变量的新值WatchConnectivity
框架发送消息。从applicationWillResignActive
发送一个false
的值,而从applicationDidBecomeActive
发送true
。然后,只要从Watch应用程序调用您的“遥控器”功能,如果isPhoneAppActive == true
。
当然,您可以使用相同的方法进行轻微的更改。例如,如果您的手机应用程序具有许多其他功能,因此如果没有使用Watch应用程序,它可能会经常进入和退出后台模式,将应用程序状态存储在iOS应用程序中并在需要时更有意义,通过使用WatchConnectivity
框架发送消息并在iOS的回复中发送回应用程序状态,从Watch应用程序中检查此存储状态。
刚试过这个,一切正常!快速的问题,WCSession的isReachable属性是否也完成了相同的任务? – SolidSnake4444
不,即使iOS应用程序在后台运行,“isReachable”也会返回true。 –