您的当前位置:首页正文

Apple Watch和iPhone共享资源

来源:图艺博知识网

方法一:使用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?)

Top