[关闭]
@luckyJerry 2016-05-25T14:12:36.000000Z 字数 1241 阅读 574

HandOff学习笔记

iOS


功能简介

Handoff这个词字面上就是传球,移交的意思。从iOS 8和OS X Yosemite开始,Handoff功能可以让用户在一台设备上开始某个活动之后,无缝地转移到另外一台设备上。(App & WebSite)

举个例子,某人在Mac上用safari阅读一篇长文章,看到一半要出门了。只要他的iPhone手机和Mac用了同一个Apple ID登陆了icloud,他就可以在iPhone上自动打开同一个网页,并且自动滚动到同一个位置。

如何开启Handoff功能

  1. 必须要用同一账号登陆iCloud。
  2. 在设定->通用中开启Handoff机能。(Mac / iOS都可以开启)
  3. 开启蓝牙,必须是蓝牙4.0以上才行,某些较老的设备不支持。

什么应用支持

Apple apps: 比如 Safari, Mail, Maps, Contacts, Notes, Calendar, 和 Reminders。
第三方App: 比如 Chrome,爱奇艺,Pocket

Handoff Interactions

3个阶段:
1. 为每个用户动作创建一个activity
2. 根据用户行为,更新User Activity对象
3. 当用户请求时,在另一台设备上继续User Activity

如何实现

普通用法

发送端的实现非常简单
1. 创建NSUserActivity的一个实例,userActivity,指定好这个userActivity的Type,就是一个字符串,做标识用的。
2. 往这个userActivity的userInfo属性里塞入要传出的信息。
3. [userActivity becomeCurrent], 注意这样执行之后,userActivity不会自动被retain住,别被垃圾回收了,我踩过这个坑。

接收端的实现
1. 在info.plist里添加一个NSActivityTypes属性,array的。往里添加一个能接受的type。和发送端的那个 Type一致。
2. 在AppDelegate中实现-(BOOL)application:continueUserActivity:restorationHandler:方法
3. 在这个delegate方法里,可以从传过来的userActivity里拿到userInfo,取出信息,还原使用场景就好了。

注意:发送端 和 接受端 必须是用同一个 TeamID 的 profile 做签名 

发送端App, 接受端Web

只需要发送端处理下就好了。
1. 在Info.plist里添加一个NSActivityTypes属性,添加一条记录NSUserActivityTypeBrowsingWeb
2. 创建NSUserActivity实例,userActivity
3. 设置webpageURL属性。
4. [userActivity becomeCurrent]。
5. OK了,没什么难的。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注