我的教程是WhatsApp / SnapChat应用程序。自然地,头像图像,国家标志,用户名,性别符号和对话数据都来自服务器和主机应用程序。
这些类型的应用程序不使用Parse之类的API或其他第三方依赖项,因为它们将REST / JSON与自己的服务器一起使用。
如何将相同的数据和UI元素放到监视表行?我们是否必须在手表扩展中重写相同的HTTP GET方法,以及将UI元素重新复制到watchOS磁带文件夹中?我们不能只调用iOS主机应用程序中已存在的相同方法吗?我不确定如何使用连接框架。
您能否举一个GET和POST方法的例子来为观察表行视图对象分配头像或用户名?例如,对于Node.js服务器。
答案 0 :(得分:2)
由于您的iOS主机应用已经下载并反序列化了数据,因此手表复制该代码或工作并获取相同的数据并没有任何意义。
至于提供示例,你应该在代码中显示您尝试的内容,并解释您遇到的具体问题。
您应该使用Watch Connectivity framework在iOS和watchOS应用之间共享数据。
您会在watchOS 2 Transition Guide找到一个好的介绍。有关详细信息,请参阅与您的Companion iOS应用程序通信。
Apple还提供了Lister sample code,演示了如何使用WCSession
在iOS和watchOS之间传输应用程序上下文和文件。
由于主机应用程序是用Obj-C编写的,因此应将WatchConnectivity / WCSessionDelegate导入到包含需要发送到监视扩展的数据的每个文件头文件中吗?
WCSession
是您在发布时配置的单身人士,在您的iOS应用和观看分机的生命周期的早期。有关详细信息,请参阅转换指南的激活会话对象。
如果您不了解应用应如何或在何处处理手表连接,那么您可以通过Google轻松找到大量的教程和示例项目。
所以基于你所说的我只需要使用连接框架。
sendMessageToWatch
和didReceiveMessage
方法。
您使用的确切方法取决于您要传输的内容 - 应用程序上下文,用户信息,文件或消息 - 以及它是在前台还是后台进行。有关详细信息,请参阅转换指南的选择正确的通讯选项。
答案 1 :(得分:0)
如果您查看GitHub上已有的一些聊天应用项目,您将看到如何精确使用连接框架。 Obj-C和Swift。
这是一个专门向您展示如何来回传递消息的方法。 https://github.com/carbamide/MessagingTest
这不是我的代码。正如您所看到的,代码几乎相同。
ViewController.swift
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
print(applicationContext)
let okButton = UIAlertAction(title: "OK", style: .Default, handler: nil)
let alert = UIAlertController(title: "Application Context Received", message: applicationContext.description, preferredStyle: .Alert)
alert.addAction(okButton)
self.presentViewController(alert, animated: true, completion: nil)
}
watchOS InterfaceController.swift
func session(session: WCSession, didReceiveApplicationContext applicationContext: [String : AnyObject]) {
print(applicationContext)
let okButton = WKAlertAction(title: "OK", style: WKAlertActionStyle.Default, handler: { () -> Void in })
self.presentAlertControllerWithTitle("Application Context Received", message: applicationContext.description, preferredStyle: .Alert, actions: [okButton])
}