代码之家  ›  专栏  ›  技术社区  ›  Anilkumar iOS Developer

无法在Swift for iWatch应用中将数据从watch传递到iPhone

  •  0
  • Anilkumar iOS Developer  · 技术社区  · 5 年前

    import WatchKit
    import Foundation
    import WatchConnectivity
    
        class SummaryInterfaceController: WKInterfaceController, WCSessionDelegate {
            var session: WCSession?
    
        override func awake(withContext context: Any?) {
            super.awake(withContext: context)
            // Configure interface objects here.
            self.initalSetup()
        }
    
        private func initalSetup() {
            self.configureWatchKitSesstion()
            self.fetchHealthData()
        }
            func configureWatchKitSesstion() {
                if WCSession.isSupported() {
                    session = WCSession.default
                    session?.delegate = self
                    session?.activate()
                }
            }
    
    
        private func fetchHealthData() {
                if let validSession = self.session {
                    let data: [String: Any] = ["iPhone": "Data from iPhone" as Any] // Create your Dictionay as per uses
                    validSession.transferUserInfo(data)
                }
    
    }
    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    
    }
    
    func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:]) {//**7
        print("received data: \(userInfo)")
    
    }
    

    iPhone类

    import UIKit
    import WatchConnectivity
    
    class ViewController: UIViewController
    {
        var session: WCSession?//2
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view.
            self.configureWatchKitSesstion()//4
        }
    
        func configureWatchKitSesstion() {
            if WCSession.isSupported() {//4.1
                session = WCSession.default//4.2
                session?.delegate = self//4.3
                session?.activate()//4.4
            }
        }
    
    }
    
    // WCSession delegate functions
    extension ViewController: WCSessionDelegate {
    
        func sessionDidBecomeInactive(_ session: WCSession) {
        }
    
        func sessionDidDeactivate(_ session: WCSession) {
        }
    
        func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
        }
    
        func session(_ session: WCSession, didReceiveApplicationContext applicationContext: [String : Any]) {
            let receivedGlobal = applicationContext["iphone"] as? NSDictionary
        }
    
        func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:]) {
            print("received data: \(userInfo)")
            DispatchQueue.main.async { //6
                if let value = userInfo["iPhone"] as? String {
                    print("value is \(value)")
                }
            }
        }
    }
    

    但是,它从不打电话给班级代表。 怎么解决这个问题?

    0 回复  |  直到 5 年前