Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如果Watch应用程序位于后台,如何将数据从iPhone共享到Apple Watch_Swift_Share_Send_Watch_Watchconnectivity - Fatal编程技术网

Swift 如果Watch应用程序位于后台,如何将数据从iPhone共享到Apple Watch

Swift 如果Watch应用程序位于后台,如何将数据从iPhone共享到Apple Watch,swift,share,send,watch,watchconnectivity,Swift,Share,Send,Watch,Watchconnectivity,我需要一些帮助将数据从手表发送到iPhone或其他方式。 如果我将手表中的数据发送到iPhone,而iPhone应用程序没有进行多任务处理,那么一旦iPhone应用程序打开,数据就会更新。 但如果我从iPhone向手表发送数据,只有在手表应用程序可见时,手表才会更新。 如果应用程序在后台,我无法让它工作。有什么建议吗? 多谢各位 接口控制器 import WatchKit import Foundation import WatchConnectivity class InterfaceCo

我需要一些帮助将数据从手表发送到iPhone或其他方式。 如果我将手表中的数据发送到iPhone,而iPhone应用程序没有进行多任务处理,那么一旦iPhone应用程序打开,数据就会更新。 但如果我从iPhone向手表发送数据,只有在手表应用程序可见时,手表才会更新。 如果应用程序在后台,我无法让它工作。有什么建议吗? 多谢各位

接口控制器

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)
        }
    }

}
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, replyHandler: nil, errorHandler: nil)
    }
}

}

extension ViewController: WCSessionDelegate {
func sessionDidBecomeInactive(_ session: WCSession) {
    //
}

func sessionDidDeactivate(_ session: WCSession) {
    //
}

func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    //
}

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
DispatchQueue.main.async {
    if let valueFromWatch = message["watch"] as? String {
        phoneToWatchTextField.text = valueFromWatch
    }
}

}
视图控制器

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)
        }
    }

}
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, replyHandler: nil, errorHandler: nil)
    }
}

}

extension ViewController: WCSessionDelegate {
func sessionDidBecomeInactive(_ session: WCSession) {
    //
}

func sessionDidDeactivate(_ session: WCSession) {
    //
}

func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    //
}

func session(_ session: WCSession, didReceiveMessage message: [String : Any]) {
DispatchQueue.main.async {
    if let valueFromWatch = message["watch"] as? String {
        phoneToWatchTextField.text = valueFromWatch
    }
}

}