Watch App 与 iOS App 之间进行数据共享
来源:互联网 发布:学会c语言能做什么 编辑:程序博客网 时间:2024/05/16 06:00
- App Group
- NSUserDefault
- 文件
本文将介绍如何使 Watch App 与 iOS App 之间进行数据共享
App Group
App Group 是一个 App 与其扩展均可以访问的本地文件系统的一块区域。由于 Watch App 与 iOS App 是在不同的沙盒环境下运行,正常情况下他们彼此无法分享数据,因此,我们需要创建一个 App Group,使的它们拥有一个共享的文件区域。
点击项目,在 target 里分别打开项目本身和 Watch App 的 App Groups,点击加号,添加一个 App Group,输入一个唯一的标识符。我们之后会在 Watch App 和 iOS App 中通过该标识符访问同一个 App Group。
NSUserDefault
不同于平时使用 defaultUserDefault,在这里我们需要指定 app group,使得 Watch App 与 iOS App 可以分享用户设置。我们使用 initWithSuiteName: 方法,其参数就是 app group identifier
if let userDefault:NSUserDefaults = NSUserDefaults(suiteName: "group.watchShareData.container") { let value = userDefault.integerForKey("shareInt") self.labelValue.setText("\(value)")}
运行效果:
文件
通过 NSFileManager 的 containerURLForSecurityApplicationGroupIdentifier 方法,获得一个共享 app group 的目录。在这个目录下的文件可以在 Watch App 与 iOS App 中读写访问。
在 iOS App 中,我们使用一个 imagePicker,点击图片后就将图片保存到该共享目录。
@IBAction func shareImageButtonTouched(sender: AnyObject) { self.imagePicker = UIImagePickerController() self.imagePicker.sourceType = .PhotoLibrary self.imagePicker.delegate = self self.presentViewController(self.imagePicker, animated: true, completion: nil)}func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) { if let dirURL = self.getShareDirURL() { //将图片文件写入共享目录 UIImagePNGRepresentation(image).writeToURL(dirURL.URLByAppendingPathComponent("image.png"), atomically: true) } self.dismissViewControllerAnimated(true, completion: nil)}func getShareDirURL()->NSURL?{//这里返回一个所属 App Group 的共享目录 return NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.watchShareData.container")}
在 Watch App 中,我们从该目录读取图片,并且展示
override func willActivate() { super.willActivate() if let dirURL = self.getShareDirURL() { if let imageData = NSData(contentsOfURL:dirURL.URLByAppendingPathComponent("image.png")) { self.imageInterface.setImage(UIImage(data: imageData)) } }}func getShareDirURL() -> NSURL? { return NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.watchShareData.container")}
运行效果:
demo地址:https://github.com/inonomori/WatchKitDataShareDemo
- Watch App 与 iOS App 之间进行数据共享
- iOS: 在iPhone和Apple Watch之间共享数据: App Groups
- App Extension 与 App 之间的数据共享
- iOS app之间共享数据的几种方法
- iOS app之间共享数据的几种方法
- iOS app之间共享数据的几种方法
- iOS app之间共享数据的几种方法
- iOS学习笔记-APP之间数据共享空间_APPGroup
- iOS学习笔记-APP之间数据共享空间_APPGroup
- IOS在app之间共享文件
- Apple Watch(手表)与iPhone(iOS App)通信原理
- IOS利用app groups实现app间数据共享
- iOS 8 中 Extension 和 Containing App 之间的数据共享
- Extension 与主app共享数据
- iOS App文件共享
- IOS APP在不同设备之间共享文件
- 75.iOS使用KeyChain存储数据与不同App间共享数据
- APP数据共享
- View的绘制流程
- shiro配置
- 死锁的原因
- Android如何避免OOM总结
- Mac系统下利用ADB命令连接android手机并进行文件操作
- Watch App 与 iOS App 之间进行数据共享
- man 命令的使用,linux根分区详解!
- 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
- Yii2修改默认控制器
- Android内存优化杂谈
- 添加手势iOS
- 15.leetcode题目125: Valid Palindrome
- android退出系统
- AOP