अपने आईफोन और आपके ऐप्पल वॉच के बीच फ़ाइलों को स्थानांतरित करने के लिए आपको संचार को ठीक से संभालने के लिए WCSession
का उपयोग करके वॉच कनेक्टिविटी का उपयोग करना चाहिए। WCSessionDelegate
के didReceiveMessageData
प्रतिनिधि विधि का उपयोग करके आप UIImage
NSData
भेज सकते हैं।
पहली चीज़ जो आपको जाननी चाहिए वह आपके UIImage
से NSData
और उपाध्यक्ष को परिवर्तित कर रहा है। आप इस के लिए निम्न कोड के लिए उपयोग कर सकते हैं:
PNG छवियाँ
let image = UIImage(named: "nameOfYourImage.jpg")
let data = UIImagePNGRepresentation(image)
JPG छवियाँ
let image = UIImage(named: "nameOfYourImage.jpg")
let data = UIImageJPEGRepresentation(image, 1.0)
तो फिर तुम WCSession
उपयोग कर सकते हैं, तो में तरह संदेश भेजने के लिए निम्नलिखित तरीके:
ViewController.swift
class ViewController: UIViewController, WCSessionDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
if WCSession.isSupported() {
WCSession.defaultSession().delegate = self
WCSession.defaultSession().activateSession()
}
let image = UIImage(named: "index.jpg")!
let data = UIImageJPEGRepresentation(image, 1.0)
WCSession.defaultSession().sendMessageData(data!, replyHandler: { (data) -> Void in
// handle the response from the device
}) { (error) -> Void in
print("error: \(error.localizedDescription)")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
InterfaceController.swift
import WatchKit
import Foundation
import WatchConnectivity
class InterfaceController: WKInterfaceController, WCSessionDelegate {
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
}
override func willActivate() {
// This method is called when watch view controller is about to be visible to user
super.willActivate()
if WCSession.isSupported() {
WCSession.defaultSession().delegate = self
WCSession.defaultSession().activateSession()
}
}
override func didDeactivate() {
// This method is called when watch view controller is no longer visible
super.didDeactivate()
}
func session(session: WCSession, didReceiveMessageData messageData: NSData, replyHandler: (NSData) -> Void) {
guard let image = UIImage(data: messageData) else {
return
}
// throw to the main queue to upate properly
dispatch_async(dispatch_get_main_queue()) { [weak self] in
// update your UI here
}
replyHandler(messageData)
}
}
ऊपर कोड जब आप खोलने ViewController
यह UIImage
भेजता में, ऊपर के उदाहरण ही है सीखने के उद्देश्यों के लिए, आपको इसे अधिक उचित तरीके से संभालना होगा अपनी परियोजना की जटिलता।
मुझे उम्मीद है कि यह आपकी मदद करेगा।
स्रोत
2015-10-14 00:03:06
'sendMessageData' केवल तभी काम करेगा जब घड़ी पर घड़ी सक्रिय है। यदि घड़ी ऐप नहीं चल रहा है, तो डेटा खो जाएगा। 'TranferUserInfo' का उपयोग करना अधिक सुरक्षित होगा, जो डेटा को कतारबद्ध करेगा और अगली बार इसे सक्रिय होने पर घड़ी ऐप द्वारा पढ़ा जाएगा। यदि आप केवल नवीनतम छवि में रुचि रखते हैं जिसे आपने घड़ी पर भेजा है, तो 'updateAplicationContext' का उपयोग करें। साथ ही, संचार के इन दो साधन पृष्ठभूमि में होते हैं, जो वांछित हो सकते हैं यदि आप बड़ी मात्रा में डेटा प्रसारित कर रहे हैं। – Drewf
हां @ ड्रूफ आप सही हैं 'ट्रांसफर यूज़रइन्फो' अधिक सटीक है जब ऐप्पल वॉच पहुंच योग्य नहीं है क्योंकि पैकेज पृष्ठभूमि में डिलीवर किया जाता है लेकिन इसे कई बार भेजे जाने पर पृष्ठभूमि कतार में प्रतिस्थापन का असुविधाजनक होता है। फिर भी मैं प्रत्येक मामले के लिए अधिक जानकारी के साथ उत्तर अद्यतन कर दूंगा। –
वर्प्रेशन गुणवत्ता के साथ प्रयोग करने योग्य वर्थ <1.0 जेपीईजी के लिए यदि आप वायर पर जा रहे यातायात की मात्रा को कम करने के लिए इससे दूर हो सकते हैं। –