Swift 如果Watch应用程序位于后台,如何将数据从iPhone共享到Apple Watch
我需要一些帮助将数据从手表发送到iPhone或其他方式。 如果我将手表中的数据发送到iPhone,而iPhone应用程序没有进行多任务处理,那么一旦iPhone应用程序打开,数据就会更新。 但如果我从iPhone向手表发送数据,只有在手表应用程序可见时,手表才会更新。 如果应用程序在后台,我无法让它工作。有什么建议吗? 多谢各位 接口控制器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
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
}
}
}