如何解决如果手表应用程序处于后台,如何将数据从iPhone共享到Apple Watch
我需要一些帮助,以其他方式将数据从Watch发送到iPhone。 如果我将手表中的数据发送到iPhone,并且iPhone应用程序不在多任务处理中,则一旦打开iPhone应用程序,数据就会更新。 但是,如果我将数据从iPhone发送到手表,则只有在手表应用可见的情况下,它才会在手表上更新。 如果应用程序在后台运行,我将无法正常工作。有什么建议? 非常感谢你!
InterfaceController
import WatchKit
import Foundation
import WatchConnectivity
class InterfaceController: WKInterfaceController {
@IBOutlet weak var dataFromPhoneLabel: WKInterfaceLabel!
let session = WCSession.default
override func awake(withContext context: Any?) {
super.awake(withContext: context)
// Configure interface objects here.
session.delegate = self
session.activate()
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
@IBAction func sendDataToPhoneButtonTapped() {
let dataToPhone: [String: Any] = ["watch": "FromWatch" as Any]
session.sendMessage(dataToPhone,replyHandler: nil,errorHandler: nil)
}
}
extension InterfaceController: WCSessionDelegate {
func session(_ session: WCSession,activationDidCompleteWith activationState: WCSessionActivationState,error: Error?) {
//
}
func session(_ session: WCSession,didReceiveMessage message: [String : Any]) {
if let valueFromPhone = message["phone"] as? String {
self.dataFromPhoneLabel.setText(valueFromPhone)
}
}
}
ViewController
import UIKit
import WatchConnectivity
class ViewController: UIViewController {
@IBOutlet weak var phoneToWatchTextField: UITextField!
var session: WCSession?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if WCSession.isSupported() {
session = WCSession.default
session.delegate = self
session.activate()
}
}
@IBAction func sendToWatchButtonTapped(_ sender: Any) {
if let validSession = self.session,validSession.isReachable {
let dataToWatch: [String: Any] = ["phone": phoneToWatchTextField.text as Any]
validSession.sendMessage(dataToWatch,errorHandler: nil)
}
}
}
extension ViewController: WCSessionDelegate {
func sessionDidBecomeInactive(_ session: WCSession) {
//
}
func sessionDidDeactivate(_ session: WCSession) {
//
}
func session(_ session: WCSession,error: Error?) {
//
}
func session(_ session: WCSession,didReceiveMessage message: [String : Any]) {
DispatchQueue.main.async {
if let valueFromWatch = message["watch"] as? String {
phoneToWatchTextField.text = valueFromWatch
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。