前文介绍iOS中NI框架的实现流程以及简单的应用示例,本文中针对NI框架中的部分类以及相关会话生命周期管理函数进行了简单的介绍。
class NISession : NSObject
NISession类是整个Nearby Interaction类的核心,所有会话的生成都需要先实例化一个NISession类的对象,该类的实例化对象与用户通过NISessionDelegate
协议与用户进行交互。每个NISession对象仅能和一个配对设备发起UWB会话,如果要和多个设备发起会话则需要分别为每一个配对设备实例化一个NISession对象来发起会话。
class NIDiscoveryToken : NSObject
@NSCopying var discoveryToken: NIDiscoveryToken? { get }
discoveryToken为一个设备的唯身份标识符,Nearby Interaction根据此Token来确定与框架会话的设备的身份,该Token的数值在NISession对象被建立的时候由框架生成,框架在一个UWB会话开始之前通过与配对设备共同加入的网络将此Token发送给配对设备。
@NSCopying var configuration: NIConfiguration? { get }
由框架生成的关于一个特定设备的配置参数类,由框架提供的方法生成。
func run(_ configuration: NIConfiguration)
run函数将启动UWB会话,其输入参数为一个NIConfiguration类,NIConfiguration类根据配件OOB交互信息唯一生成,并根据此NIConfiguration参数确定开启与特定设备的会话。
weak var delegate: NISessionDelegate? { get set }
Nearby Interaction框架与用户交互的协议,实现session等回调函数处理UWB会话数据。
func pause()
暂停发送具体和角度信息给配对设备,暂停后可重新调用run(:)函数恢复会话,但若暂停时间过久,框架则可能会调用 session(:didRemove:reason:)回调函数提示会话中断,并在NINearbyObject.RemovalReason中提示超时错误。
func invalidate()
终止UWB会话,Nearby Interaction会直接调用session(_:didRemove:reason:)方法终止会话。
会话挂起,当app进入后台,将调用该回调。
optional func sessionWasSuspended(_ session: NISession)
当挂起结束之后,将触发Ended回调,此后可以继续使用Session。
optional func sessionSuspensionEnded(_ session: NISession)
class NINearbyObject : NSObject
NINearbyObject是一个测距会话中,每一个具体设备的定位信息,是所有位置信息的封装类。
@NSCopying var discoveryToken: NIDiscoveryToken { get }
与NISession类中的discoveryToken成员作用相同,为特定设备的唯一标识
var distance: Float? { get }
存放一个测距会话中的距离信息,单位为米,如果没有获取到距离信息则值为nil
var direction: simd_float3? { get }
存放一个测距会话中的方位信息,是一个三维的坐标值表示的矢量,如果没有获取到方位信息则值为nil
enum RemovalReason : Int, @unchecked Sendable
一个表明会话断开原因的枚举值,其值为表明配对设备终止会话的peerEnded,默认值为1;以及表明会话超时的timeout,默认值为0。