方法一:使用WatchConnectivity框架实现共享,适用于Watch OS2.0
新版本一种实现方式:Watch OS2.0之后使用WatchConnectivity框架的WCSessionDelegate代理实现传递文件:
1.引入WatchConnectivity
import WatchConnectivity
2.遵循协议WCSessionDelegate
3.定义并初始化session对象
var session: WCSession!
session = WCSession.default()
session.delegate = self
// 激活session 必须激活才能实现数据传递、消息传递
session.activate()
4.触发发送方法
let pathURL = Bundle.main.url(forResource: "share", withExtension: ".png")
// 发送
session.transferFile(pathURL!, metadata: ["keys":"allValues"])
5.实现代理方法
// iPhone必须实现的方法:
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)
{}
func sessionDidBecomeInactive(_ session: WCSession)
{}
func sessionDidDeactivate(_ session: WCSession)
{}
6.watch中使用同样的方式,在代理中除了
// 必须实现的方法外
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?)
{}
// 使用下面的方法来获取并使用
func session(_ session: WCSession, didReceive file: WCSessionFile)
{}
方法二:使用App Groups , 适用于Watch OS1.0
1.创建证书
首先给iPhone的工程中添加一张测试图片
1.在iPhone的文件中将该图放入到共享文件夹中
let fileManager = FileManager.default
//共享文件夹路径
shareLabel.text = groupPath
//找到图片
let imagePath = Bundle.main.path(forResource: "share.png",ofType: nil)??""
let imageData = NSData(contentsOfFile: imagePath)
//图片转存到共享文件夹的路径
let imageFullPath = groupPath?.appending("/share.png")
//存
fileManager.createFile(atPath: imageFullPath!,contents: imageData as?Data,attributes: nil)
2.在watch上读取
let fileManager = FileManager.default
// group路径
var paths = groupPath??"watch读的路径没有"
print(paths)
//拿到图片
let imagePath = groupPath?.appending("/share.png")
let imageData = NSData(contentsOfFile: imagePath!)
if nil == imageData {
paths = imagePath! + "||没找到图|||".appending(paths)
}
pathLabel.setText(paths)
//装载
shareImageView.setImageData(imageData as Data?)