iOS UWB——NI框架部分类介绍
  fgEzWBuBS8L1 2023年11月02日 57 0

前文介绍iOS中NI框架的实现流程以及简单的应用示例,本文中针对NI框架中的部分类以及相关会话生命周期管理函数进行了简单的介绍。


NI框架关键类

Class NISession

class NISession : NSObject

概述

NISession类是整个Nearby Interaction类的核心,所有会话的生成都需要先实例化一个NISession类的对象,该类的实例化对象与用户通过NISessionDelegate协议与用户进行交互。每个NISession对象仅能和一个配对设备发起UWB会话,如果要和多个设备发起会话则需要分别为每一个配对设备实例化一个NISession对象来发起会话。

主要类成员

· var discoveryToken
class NIDiscoveryToken : NSObject
@NSCopying var discoveryToken: NIDiscoveryToken? { get }

discoveryToken为一个设备的唯身份标识符,Nearby Interaction根据此Token来确定与框架会话的设备的身份,该Token的数值在NISession对象被建立的时候由框架生成,框架在一个UWB会话开始之前通过与配对设备共同加入的网络将此Token发送给配对设备。

· var configuration
@NSCopying var configuration: NIConfiguration? { get }

由框架生成的关于一个特定设备的配置参数类,由框架提供的方法生成。

· func run(_)
func run(_ configuration: NIConfiguration)

run函数将启动UWB会话,其输入参数为一个NIConfiguration类,NIConfiguration类根据配件OOB交互信息唯一生成,并根据此NIConfiguration参数确定开启与特定设备的会话。

· var delegate
weak var delegate: NISessionDelegate? { get set }

Nearby Interaction框架与用户交互的协议,实现session等回调函数处理UWB会话数据。

· func pause()
func pause()

暂停发送具体和角度信息给配对设备,暂停后可重新调用run(:)函数恢复会话,但若暂停时间过久,框架则可能会调用 session(:didRemove:reason:)回调函数提示会话中断,并在NINearbyObject.RemovalReason中提示超时错误。

· func invalidate()
func invalidate()

终止UWB会话,Nearby Interaction会直接调用session(_:didRemove:reason:)方法终止会话。

Session生命周期相关回调

会话挂起,当app进入后台,将调用该回调。

optional func sessionWasSuspended(_ session: NISession)

当挂起结束之后,将触发Ended回调,此后可以继续使用Session。

optional func sessionSuspensionEnded(_ session: NISession)

Class NINearbyObject

class NINearbyObject : NSObject

概述

NINearbyObject是一个测距会话中,每一个具体设备的定位信息,是所有位置信息的封装类。

主要类成员

· var discoveryToken
@NSCopying var discoveryToken: NIDiscoveryToken { get }

与NISession类中的discoveryToken成员作用相同,为特定设备的唯一标识

· var distance
var distance: Float? { get }

存放一个测距会话中的距离信息,单位为米,如果没有获取到距离信息则值为nil

· var direction
var direction: simd_float3? { get }

存放一个测距会话中的方位信息,是一个三维的坐标值表示的矢量,如果没有获取到方位信息则值为nil

· enum RemovalReason
enum RemovalReason : Int, @unchecked Sendable

一个表明会话断开原因的枚举值,其值为表明配对设备终止会话的peerEnded,默认值为1;以及表明会话超时的timeout,默认值为0。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
fgEzWBuBS8L1