亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:45:32
字體:
來源:轉載
供稿:網友

最近在做一個項目,涉及到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 UIKitimport WatchConnectivityclass 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 WatchKitimport WatchConnectivityclass 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)的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!

 

注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线不卡区| 一本一道久久a久久精品逆3p| 亚洲欧美制服另类日韩| 亚洲成人网av| 国产精品入口日韩视频大尺度| 992tv成人免费视频| 国内免费精品永久在线视频| 亚洲精品欧美日韩| 日韩精品中文字幕在线观看| 岛国精品视频在线播放| 97在线免费观看视频| 欧美日韩裸体免费视频| 亚洲新中文字幕| 美女av一区二区| 欧美国产亚洲视频| 欧美性猛交xxxxx免费看| 国产成人精品免高潮在线观看| 国产精品视频yy9099| 97精品久久久中文字幕免费| 亚洲天堂av图片| 亚洲欧美在线磁力| 国产亚洲一区二区在线| 视频一区视频二区国产精品| 亚洲福利在线观看| 亚洲午夜久久久影院| 91高清免费在线观看| 狠狠色狠狠色综合日日小说| 国产主播喷水一区二区| 国产亚洲日本欧美韩国| 啊v视频在线一区二区三区| 亚洲天堂第一页| 亚洲一区二区三区毛片| 九九视频这里只有精品| 成人久久18免费网站图片| 欧美亚洲在线视频| 亚洲一区二区三区四区视频| 国产一区二区三区精品久久久| 福利视频导航一区| 97久久超碰福利国产精品…| 国产精品视频地址| 国产欧美精品一区二区三区-老狼| 国产又爽又黄的激情精品视频| 亚洲www永久成人夜色| 国产一区二区三区高清在线观看| 成人黄色生活片| 亚洲欧美国产va在线影院| 日韩精品高清在线观看| 国产精品激情av电影在线观看| 亚洲美女又黄又爽在线观看| 久久全球大尺度高清视频| 欧美午夜片在线免费观看| 亚洲福利视频专区| 91国产视频在线| 日韩中文娱乐网| 日韩激情在线视频| 国产精品一区=区| 91亚洲精品一区二区| 精品国产视频在线| 日产日韩在线亚洲欧美| 国产99久久精品一区二区永久免费| 日韩精品在线观看一区| 亚洲美女av电影| 亚洲一区亚洲二区| 国产中文字幕91| 久久久91精品国产一区不卡| 国产精品久久久久久久久久久不卡| 狠狠色狠狠色综合日日五| 91chinesevideo永久地址| 欧美做受高潮电影o| 成人久久18免费网站图片| 日本亚洲精品在线观看| 人人澡人人澡人人看欧美| 91精品国产成人www| 日韩精品久久久久久久玫瑰园| 91精品国产沙发| 欧美一级电影在线| 日韩在线视频线视频免费网站| 亚洲日韩中文字幕在线播放| 国产一区二区在线免费视频| 亚洲国产成人久久| 欧美性猛交xxxx富婆弯腰| 精品小视频在线| 日本成熟性欧美| 欧美网站在线观看| 精品性高朝久久久久久久| 亚洲国产成人精品久久久国产成人一区| 黑丝美女久久久| 中文字幕日韩av综合精品| 黄色成人在线免费| 欧美在线视频免费观看| www.欧美三级电影.com| 国产精品主播视频| 国产精品欧美激情在线播放| 中文字幕国产亚洲2019| 美日韩精品视频免费看| 曰本色欧美视频在线| 日韩电影免费观看在线观看| 97精品国产97久久久久久春色| 性色av香蕉一区二区| 欧美国产日韩一区二区| 久久久久久久久爱| 色婷婷综合成人av| 中文字幕欧美日韩在线| 日本欧美黄网站| 欧美中文在线观看国产| 欧美高跟鞋交xxxxhd| 亚洲国产精品电影| 色哟哟入口国产精品| 日韩欧美aⅴ综合网站发布| 成人xxxxx| 亚洲精品午夜精品| 亚洲欧美色图片| 日本欧美在线视频| 国产精品欧美日韩一区二区| 亚洲成人久久电影| 精品亚洲va在线va天堂资源站| 欧美在线视频免费| 亚洲www在线观看| 亚洲电影成人av99爱色| 国内精品一区二区三区| 热久久这里只有| 91久久久久久久久| 亚洲国产中文字幕久久网| 国产精品久久久久久久久久东京| 欧美激情区在线播放| 亚洲欧美日韩天堂| 影音先锋日韩有码| 国产精品老女人精品视频| 51久久精品夜色国产麻豆| 欧美国产日韩免费| 亚洲午夜精品久久久久久久久久久久| 日韩电影免费在线观看中文字幕| 欧美wwwxxxx| 中文字幕久热精品在线视频| 久久99精品久久久久久噜噜| 欧美最顶级的aⅴ艳星| 欧美一级大片在线免费观看| 久久久久99精品久久久久| 91九色国产在线| 精品久久久久久中文字幕大豆网| 北条麻妃一区二区在线观看| 国产免费一区二区三区在线观看| 国产自产女人91一区在线观看| 国色天香2019中文字幕在线观看| 久久久精品久久久| 中文字幕一区电影| 欧美猛少妇色xxxxx| 精品国偷自产在线视频| 欧美激情亚洲自拍| 国产精品中文字幕在线观看| 久久久伊人欧美| 日韩精品高清在线| 97在线视频精品| 国产va免费精品高清在线观看| 午夜精品久久久久久久99黑人| 中文字幕亚洲无线码在线一区| 色偷偷9999www| 成人做爽爽免费视频| 亚洲free性xxxx护士白浆| 国产精品美乳一区二区免费| 欧美成人精品xxx| 欧美丝袜一区二区| 日韩欧美高清视频| 韩国国内大量揄拍精品视频|