DayByDay:38:HandOff

喜欢该系列文章的可以移步原作者处:

DayByDay原作者

HandOff官方编程向导

Continuty,描述了在多个ios,osX设备之间的无缝切换的能力 ,持续未完成的工作。HandOff是实现Continuty的一种技术

HandOff基于user activities,user activities封装了用户当前的状态。一个activity   与一个用户类型相关联,操作系统用这个类型去决定是否应该用activity来恢复用户的状态

HandOff工作原理:首先用bluetooth LE去发现在身边的具有相同的iColud account 的设备。 如果当前的app使能 HandOff,他就能发现一个设备去重新恢复当前的activity, 这个inactivity将显示一个通知去告诉用户可以从当前设备到inactivity设备之间进行切换

当用户选择持续the activity时,the sending activity将传递activity object到这个continuing the device,从而可以持续的进行活动

这里尝试用HandOff来掌控地图数据在不同设备的同一个应用之间传递数据的过程,当用一台设备打开地图定位到某个区域后,用另外的设备用hand Off技术打开相同的app定位到相同的区域

 为一个App准备HandOff

为了一个app去handOff,需要保持一个或多个NSUserActivity Objects .这些Objects封装了用户当前的状态,用它可以恢复当前设备的状态在另外一个设备上。IOS8 介绍了UIResponder的一些新的属性,userActivity.因为UIViewController是UIResponder的子类,所以在view controller里可以方便的使用user activity来保存用户的当前的状态

 在这个教程,user activity被配置在view did load 方法里面

在这里设定了needs save 属性为真。每次用户和app交互时,系统将周期性的调用updateUserActivityState()在view controller里的子类,在这个方法里面保存用户的状态,就是那些需要在另外一个app恢复的数据

在当前例子中,保存了地图的可见range,地图当前的位置信息,保存进到userinfo 这个词典中

 userinfo这个词典可以保存的类型有NSString,NSNumber,NSData,NSURL等,不能保存MKCoordinateRegion结构体,因此把这个结构体转化为NSData 对象。

MKCoordinateRegion是一个纯swift的结构体,并没有实现NSCoding协议,所以这里不能用archiver

MKCoordinateRegion结构体时值类型的,没有非值的对象,因此能够用NSData 去复制bytes

如果有很多的数据去存储,去传递,userinfo并不是一个好的地方去保存这些数据。苹果建议user activity object所保存的数据不要超过3kb.

在每次UI update 的时候,needsSave属性都应被设置为true.在这个例子中,当用户每次用pans或zooms时, the region changes。

到此为止,一个app去支持HandOff的所有设置都完毕,但还需要一个app去恢复activity

 恢复Activity

当系统在本地的区域内发现一个支持handOff的设备时,系统就必须做出一个决定是否他有一个app去掌控它。在info.plist中key: NSUserActivityTypes所指向的是一个数组,这个数组中应包含所有的activity type


仅仅能够HandOff被相同的开发者签名的程序

当用户选择continue the activity时,你的app将开始工作,在app delegate中两个新的方法将会被调用


第一个方法通知activity将会被continue,在这个方法里面,只有activity的类型是可用的,并不是activity本身。因为activity需要在两个设备之间的传递需要花费一定的时间。在这个方法里面,可以为指定的activity来准备一些数据。比如load指定的view controller,导航到app指定的区域

一旦activity到达指定的设备上了,第二个协议的方法将会被调用,在这个方法里用activity里的信息来恢复更新UI界面

第二个方法带了一个restorationHandler closure,他带了UIResponder对象的一个数组并且会调用方法:restoreActivityState(-)方法为这个数组中的每一个对象



这里检查是否能够对正确的activity type做出响应


HandOff的功能十分强大,他可以在不同设备的同一个app之间,也可以发生在不同app和网页之间,换句话说,当你用mac来浏览网页时,你能够用iosapp去handOff

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,418评论 25 707
  • 1.什么是Activity?问的不太多,说点有深度的 四大组件之一,一般的,一个用户交互界面对应一个activit...
    JoonyLee阅读 5,724评论 2 51
  • 哎呀呀 ,马上就要面临找工作了,媛媛心里紧张呀. 作为一个即将毕业的Android程序媛,开始面临找工作了,...
    仇诺伊阅读 4,529评论 7 59
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,592评论 18 139
  • 今年看完的第九本书——渡边淳一《失乐园》。 看完这本书,我只有一个想法:不可理解,不可理解,还是不可理...
    鬏诺阅读 294评论 0 1