如何解决使用 transferFile 时 Apple Watch 和 iPhone 之间的连接丢失
我想将文件从手机传输到手表。它基本上可以工作,但在几天不使用该应用程序后,有时文件将不再从手机传输到手表。手表应用和手机应用之间的连接似乎没有任何原因,我无法再次建立连接。这是操作系统中的错误还是我的实现不干净?
这是手机的代码:
class WatchConnectivity: NSObject,WCSessionDelegate {
private let session: WCSession
init(session: WCSession = .default) {
self.session = session
super.init()
self.session.delegate = self
session.activate()
}
func session(_ session: WCSession,activationDidCompleteWith activationState: WCSessionActivationState,error: Error?) {
if activationState == .activated {
if session.isWatchAppInstalled {
print("Watch app is installed")
} else {
print("Watch app is NOT installed")
}
}
}
func initializeWCSession() {
if WCSession.isSupported() {
session.delegate = self
session.activate()
} else {
print("WCSession not supported !")
}
}
func sessionDidBecomeInactive(_ session: WCSession) {
WCSession.default.activate()
}
func sessionDidDeactivate(_ session: WCSession) {
WCSession.default.activate()
}
func session(_ session: WCSession,didFinish fileTransfer: WCSessionFileTransfer,error: Error?) {
print("error file transfer: ",error as Any)
}
func sendFileToWatch(image: UIImage) {
if WCSession.isSupported() {
if session.activationState == .activated {
guard let imageURL = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("TempImage.png") else { return }
if let data = image.jpegData(compressionQuality: 0.0) {
do {
try data.write(to: imageURL)
} catch {
print("Handle the error,i.e. disk can be full")
}
}
session.transferFile(imageURL,metadata: nil)
} else {
print("session not activated")
}
}
}
}
这是手表的代码:
class WatchConnectivity: NSObject,WCSessionDelegate {
func session(_ session: WCSession,error: Error?) {
}
var session: WCSession
init(session: WCSession = .default) {
self.session = session
super.init()
self.session.delegate = self
session.activate()
}
func initializeWCSession() {
if WCSession.isSupported() {
session.delegate = self
session.activate()
print("WCSession is supported !")
} else {
print("WCSession not supported !")
}
}
func session(_ session: WCSession,didReceive file: WCSessionFile) {
DispatchQueue.main.sync {
if let imageData = NSData.init(contentsOf: file.fileURL) {
let receivedImage = UIImage(data: imageData as Data)
print("image received !")
} else {
print("something is wrong with the sent image")
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。