- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道一种更好的方式来发送(使用 iPhone)消息到 Watch(在后台)。目前我使用:
session.update(applicationContext: package, completion: nil)
用于向 Watch 和
发送消息 func didReceivedApplicationContext(applicationContext:[String : Any])
在 Watch 中接收消息。问题是正如文档中所说“系统将在适当的时间传输内容”,而我无法控制那些“适当的时间”。
此时,我在 iPhone 类中查看 Watch 的状态。如果 Watch 在后台,我用 updateApplicationcontext 发送数据(这不是很好),否则,如果 Watch 在前台,我用 sendMessage 发送数据
代码:
if session.isWatchReachable()
{
session.send(message: package, completion: nil)
}
else
{
session.update(applicationContext: package, completion: nil)
}
那么在后台传输数据有更好的方法吗?
最佳答案
好吧,您必须在后台传输和立即发送数据之间做出选择。使用 WatchConnectivity
框架无法安排数据传输在准确的时间发生。
您必须选择是使用即使您的应用程序在后台也可以发送数据的方法,还是立即从前台发送数据。
如果您需要保证在您的应用程序从后台唤醒时数据将被传输,并且您的用例 updateApplicationContext
在测试期间被证明是不够的,您可以使用变通方法。
解决方法是使用 updateApplicationContext
在后台传输数据,并在 Watch 应用程序的 ExtensionDelegate
类中使用 applicationDidBecomeActive()
方法要检查数据传输是否在后台发生,如果没有发生,请使用 sendMessage
函数立即从其他应用程序请求数据,并将请求的数据作为响应发回。
要实现这一点,您的函数在您的 Watch 应用程序中应如下所示:
func applicationDidBecomeActive(){
if !haveReceivedData { //Bool value that should be updated to true once data is received from the phone
session.sendMessage(["Requesting data":True], replyHandler: {
//parse the data, update the UI
}, errorHandler: { error in
print("Error requesting data",error)
})
}
}
然后在您的 iPhone 应用程序上执行以下操作:
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
if let isRequestingData = message["Requesting data"] as? Bool, isRequestingData == true {
replyHandler(["Requested data":data])
}
}
关于ios - 在后台运行的 swift WatchConnectivity - ApplicationContext 并非一直运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612876/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!