pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

iPhone與iWatch連接、控制、數據傳遞(Swift)的方法

這篇文章主要介紹了iPhone與iWatch連接、控制、數據傳遞(Swift)的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

最近在做一個項目,涉及到iPhone設備和手表傳輸數據、控制彼此界面跳轉,在網上找了很多資料,發現國內的網站這方面介紹的不多,而國外的網站寫的也不是很全,所以在這寫這篇文章,給大家參考一下,望大神指點一二。

      iPhone和iWatch配對這個不需要多說,百度搜索答案一大堆,這個是前提。

      iPhone與iWatch交互的代碼有兩種情況,取決于iWatch的系統。iWatch OS1與OS2、3的方法不同,在OS1的系統中,iWatch發送數據的代碼如下


let userInfo:[String:String] = ["key":"value"]
WKInterfaceController.openParentApplication(userInfo) { (replyInfo, error) -> Void in
}

      這個函數是發送消息,同時也是接收消息,接收到iPhone的回復是replyInfo。在iPhone端的AppDelegate中,接收消息的代碼:


func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
}

      接收到的消息是userInfo,回復給iWatch的數據是reply。

      以上的代碼僅適用于watchOS1,之后的系統就沒有這個API了,對于OS2或OS3,使用的框架是WatchConnectivity,在這里,我將直接提供我寫的類,并給出介紹和使用方法,大家可以直接復制代碼,在我注釋的地方寫自己的功能便可。

以下是iPhone端的代碼:


import UIKit
import WatchConnectivity
class IwatchSessionUtil: NSObject, WCSessionDelegate {
  //靜態單例
  static let shareManager = IwatchSessionUtil()
  //初始化
  private override init()
  {
    super.init()
  }
  // 連接機制
  private let session:WCSession? = WCSession.isSupported() ? WCSession.default() : nil
  // 激活機制對象
  func startSession(){
    session?.delegate = self
    session?.activate()
  }
  // 檢測到watch端app
  func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
    print("AppleWatch匹配完成")
  }
  // 開始向Watch傳遞數據
  func sessionDidBecomeInactive(_ session: WCSession) {
  }
  // 數據傳遞完了
  func sessionDidDeactivate(_ session: WCSession) {
  }
  // watch側發送數據過來,iPhone接收到數據并回復數據過去
  // message: watch側發送過來的信息
  // replyHandler: iPhone回復過去的信息
  func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
    // 在這里,我們接收到watch發送過來的數據,可以用代理、代碼塊或者通知中心傳值到ViewController,做出一系列操作。
    // 注!?。簑atch側發送過來信息,iPhone回復直接在這個函數里回復replyHandler([String : Any])(replyHandler(數據)),這樣watch側發送數據的函數對應的reply才能接收到數據,別跟sendMessage這個函數混淆了。如果用sendMessage回復,那watch側接收到信息就是didReceiveMessage的函數。
  }
  // iPhone向watch發送數據
  // key: 數據的key值
  // value: 數據內容
  func sendMessageToWatch(key:String,value:Any) {
    session?.sendMessage([key : value], replyHandler: { (dict:Dictionary) in
    // 這里是發送數據后的操作,比如寫個alert提示發送成功
   // replyHandler是watch側didReceiveMessage函數接收到信息后reply回復過來的內容,這里可以編輯自己需要的功能
    }, errorHandler: { (Error) in
      // 發送失敗,一般是藍牙沒開,或手機開了飛行模式
    })
  }
}

調用方法:

1、首先在iPhone的AppDelegate的didFinishLaunchingWithOptions函數中添加代碼

IwatchSessionUtil.shareManager.startSession(),確保WCSession能匹配到watch側的App

              2、發送消息:調用方法IwatchSessionUtil.shareManager.sendMessageToWatch(key: , value: )即可,發送后接收到watch側的回復后的操作,直接在類sendMessage函數中編輯就行

              3、watch側sendMessage發送信息給iPhone,iPhone側didReceiveMessage接收到信息,一系列操作上面已經注釋寫到。

iPhone端的介紹完畢,下面寫watch端的代碼,其實跟iPhone的沒什么區別,這里只是為了把這部分內容寫完全。


import WatchKit
import WatchConnectivity
class WatchSessionUtil: NSObject,WCSessionDelegate {
  // 靜態單例
  static let sharedManager = WatchSessionUtil()
  // 初始化
  private override init()
  {
    super.init()
  }
  // 連接機制
  private let session:WCSession? = WCSession.isSupported() ? WCSession.default() : nil
  // 激活機制
  func startSession(){
    session?.delegate=self
    session?.activate()
  }
  // 檢測到iPhone的父應用
  func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
  }
  // 接收到iPhone端發送過來的信息
  // message: iPhone端發送過來的信息
  // replyHandler: watch端回復給iPhone的內容
  func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
    // 這里也可以通過通知中心發送通知給InterfaceController,進行頁面操作,至于用什么方法大家隨意。注意事項iPhone的代碼里提到了,一樣的性質,這里就不寫了。
  }
  // 向iPhone側發送信息
  func sendMessage(key:String, value:Any){
    session?.sendMessage([key : value], replyHandler: { (reply: [String : Any]) in
      // 信息發送之后,收到iPhone端回復的操作
    }, errorHandler: { (Error) in
      // 發送失敗
    })
  }
}

watch的類添加在Extension的文件夾中,調用方法:

1、ExtensionDelegate文件的applicationDidFinishLaunching函數里寫上WatchSessionUtil.sharedManager.startSession()

2、發送消息:調用方法IwatchSessionUtil.shareManager.sendMessageToWatch(key: , value: )即可,發送后接收到iPhone側的回復后的操作,直接在類sendMessage函數中編輯就行

3、iPhone側sendMessage發送信息給watch,watch側didReceiveMessage接收到信息,一系列操作上面已經注釋寫到。

以上所述是小編給大家介紹的iPhone與iWatch連接、控制、數據傳遞(Swift)的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對html5模板網網站的支持!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

主站蜘蛛池模板: 山东信蓝建设有限公司官网| 电子海图系统-电梯检验系统-智慧供热系统开发-商品房预售资金监管系统 | 湖南自考_湖南自学考试网| 超声波乳化机-超声波分散机|仪-超声波萃取仪-超声波均质机-精浩机械|首页 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 运动木地板价格,篮球馆体育运动木地板生产厂家_欧氏地板 | 干法制粒机_智能干法制粒机_张家港市开创机械制造有限公司 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 模具钢_高速钢_不锈钢-万利钢金属材料 | 珠海网站建设_响应网站建设_珠海建站公司_珠海网站设计与制作_珠海网讯互联 | 网优资讯-为循环资源、大宗商品、工业服务提供资讯与行情分析的数据服务平台 | 英思科GTD-3000EX(美国英思科气体检测仪MX4MX6)百科-北京嘉华众信科技有限公司 | 折弯机-刨槽机-数控折弯机-数控刨槽机-数控折弯机厂家-深圳豐科机械有限公司 | 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 云南外加剂,云南速凝剂,云南外加剂代加工-普洱澜湄新材料科技有限公司 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 提升海外网站流量,增加国外网站访客UV,定制海外IP-访客王 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 生物风-销售载体,基因,质粒,ATCC细胞,ATCC菌株等,欢迎购买-百风生物 | 数显恒温培养摇床-卧式/台式恒温培养摇床|朗越仪器 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | Honsberg流量计-Greisinger真空表-气压计-上海欧臻机电设备有限公司 | LNG鹤管_内浮盘价格,上装鹤管,装车撬厂家-连云港赛威特机械 | 汕头市盛大文化传播有限公司,www.11400.cc | 深圳成考网-深圳成人高考报名网 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 骨密度检测仪_骨密度分析仪_骨密度仪_动脉硬化检测仪专业生产厂家【品源医疗】 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 精密交叉滚子轴承厂家,转盘轴承,YRT转台轴承-洛阳千协轴承 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 亿诺千企网-企业核心产品贸易 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | PCB设计,PCB抄板,电路板打样,PCBA加工-深圳市宏力捷电子有限公司 |