मैं अपने मौजूदा एप्लिकेशन में वॉच एक्सटेंशन जोड़ने की कोशिश कर रहा हूं। मेरे आवेदन के लिए लॉगिन अनिवार्य है। उपयोगकर्ता ने लॉग-इन किया है या नहीं, तो मैं वॉच ऐप से कैसे जांच सकता हूं ... और जैसे ही उपयोगकर्ता लॉग-इन हो जाता है, मैं उस लॉगिन-डेटा को एप्लिकेशन से वॉच एप्लिकेशन में पास करना चाहता हूं। मैं नहीं जानता कि एप्लिकेशन देखने के लिए लॉगिन डेटा कैसे पास किया जाए।

5
adm v 27 अप्रैल 2018, 14:25

2 जवाब

सबसे बढ़िया उत्तर

वॉचओएस 2 से पहले, आप डेटा का आदान-प्रदान करने के लिए साझा समूह कंटेनर या आईक्लाउड का उपयोग करके आईओएस साथी ऐप और वॉचओएस ऐप के बीच डेटा साझा कर सकते थे।

वॉचओएस 2 से, चूंकि वॉचकिट एक्सटेंशन अब ऐप्पल वॉच पर ही चलता है, इसलिए एक्सटेंशन को आईओएस ऐप के साथ वायरलेस तरीके से डेटा का आदान-प्रदान करना चाहिए। आपको WCSession वर्ग का उपयोग करना होगा जो WatchConnectivity ढांचे का हिस्सा है। ढांचे का उपयोग आईओएस ऐप और इसके युग्मित वॉचओएस ऐप के बीच दो-तरफा संचार को लागू करने के लिए किया जाता है।

iPhone साथी ऐप में। निम्नलिखित को लागू करें:

import WatchConnectivity

class LoginViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if WCSession.isSupported() {
            WCSession.default().activate()
        } 
    }

    @IBAction func loginAction(_ sender: Any) {

    // In this case ApiHandler is just a class which performs REST call to authenticate login credentials.
     ApiHandler.login(username: txtUsername.text!, password: txtPassword.text!, { (loginSuccess) in
        if loginSuccess {

            let dict = ["statusLogin": "success"] 
            WCSession.default().sendMessage(dict, replyHandler: { (replyMessage) in
                print(replyMessage)
            }) { (error) in
                print(error.localizedDescription)
            }
        }

     }) 
    }

}

watchOS ऐप में।

import WatchConnectivity

class BaseInterfaceController: WKInterfaceController {
    override func willActivate() {
        super.willActivate()

       if WCSession.isSupported() {
           WCSession.default().delegate = self
           WCSession.default().activate()
       }
    }

}

extension BaseInterfaceController: WCSessionDelegate {
   func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {

   }

   func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Swift.Void) {
        if let loginStatus = message["statusLogin"] as? String {
            if loginStatus == "success" {
              // login has been success in iOS app
              // perform further tasks, like saving in Userdefaults etc.
            }
        }
   }
}
2
skJosh 28 अप्रैल 2018, 15:00

आप वॉच कनेक्टिविटी का उपयोग करके ऐसा कर सकते हैं। विशेष रूप से transferUserInfo() के साथ एक बूलियन मान भेजना। यह आपको iPhone एप्लिकेशन से डेटा भेजने की अनुमति देगा जब उपयोगकर्ता या तो लॉग इन या आउट करता है, और इसे बैकग्राउंड में वॉच एक्सटेंशन पर डिलीवर किया जाएगा।

यहाँ एक उदाहरण है:

func updateUserLoggedIn(_ loggedInValue : Bool) {

    if WCSession.isSupported() {
        WCSession.default.transferUserInfo(["User Logged In" : loggedInValue])
    }
}

फिर आप बस अपने वॉच एक्सटेंशन में ट्रांसफर को हैंडल करते हैं:

func session(_ session: WCSession, didReceiveUserInfo userInfo: [String : Any] = [:]) {

    if let userInfoFromPhone = userInfo["User Logged In"] {
        // Handle Result Accordingly
    }
}
0
Zachary Bell 27 अप्रैल 2018, 16:34