SwiftUI에서 @EnvironmentObejct는 View에서만 사용가능합니다.

import Foundation
import WatchConnectivity
import SwiftUI

class WatchToiOS: NSObject, ObservableObject {
    @EnvironmentObject var workoutManager: WorkoutManager
    @Published var startStatus: Bool = false
    let session = WCSession.default

    override init() {
        super.init()
        if WCSession.isSupported() {
            session.delegate = self
            session.activate()
        }
    }
    
    func sendMessage(message: [String:Any]) {
        session.sendMessage(message) { _ in
            
        }
    }
    
}

extension WatchToiOS: WCSessionDelegate {
    
    func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
        switch activationState {
        case .activated:
            print("Watch: WCSession activated successfully")
        case .inactive:
            print("Watch: Unable to activate the WCSession. Error: \(error?.localizedDescription ?? "--")")
        case .notActivated:
            print("Watch: Unexpected .notActivated state received after trying to activate the WCSession")
        @unknown default:
            print("Watch: Unexpected state received after trying to activate the WCSession")
        }
    }
    
    func session(_ session: WCSession, didReceive file: WCSessionFile) {
        
    }

    
    func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
        if let getHeartRate = message["heart"] {
            if getHeartRate as? Bool == true {
                print(message.description)
                replyHandler(["heartRate":self.workoutManager.heartRate])
            }
        }
    }
    
    
}
ytw_developer