iOS UWB——NI框架部分类

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

NI框架关键类

Class NISession

swift 复制代码
class NISession : NSObject

概述

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

主要类成员

· var discoveryToken
swift 复制代码
class NIDiscoveryToken : NSObject
@NSCopying var discoveryToken: NIDiscoveryToken? { get }

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

· var configuration
swift 复制代码
@NSCopying var configuration: NIConfiguration? { get }

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

· func run(_)
swift 复制代码
func run(_ configuration: NIConfiguration)

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

· var delegate
swift 复制代码
weak var delegate: NISessionDelegate? { get set }

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

· func pause()
swift 复制代码
func pause()

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

· func invalidate()
swift 复制代码
func invalidate()

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

Session生命周期相关回调

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

swift 复制代码
optional func sessionWasSuspended(_ session: NISession)

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

swift 复制代码
optional func sessionSuspensionEnded(_ session: NISession)

Class NINearbyObject

swift 复制代码
class NINearbyObject : NSObject

概述

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

主要类成员

· var discoveryToken
swift 复制代码
@NSCopying var discoveryToken: NIDiscoveryToken { get }

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

· var distance
swift 复制代码
var distance: Float? { get }

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

· var direction
swift 复制代码
var direction: simd_float3? { get }

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

· enum RemovalReason
swift 复制代码
enum RemovalReason : Int, @unchecked Sendable

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

相关推荐
EasyNVR2 小时前
基于WebRTC与AI大模型接入EasyRTC:打造轻量级、高实时、强互动的嵌入式音视频解决方案
运维·服务器·微信·小程序·webrtc·p2p·智能硬件
打酱油的工程师2 小时前
w803|联盛德|WM IoT SDK2.X测试|window11|TOML 文件|外设|TFT_LCD|测试任务|(5):TFT_LCD_LVGL示例
单片机·物联网·lcd·tft·w80x
沐欣工作室_lvyiyi4 小时前
基于物联网的家庭版防疫面罩设计与实现(论文+源码)
人工智能·stm32·单片机·物联网·目标跟踪
OKXLIN10 小时前
IOS UITextField 无法隐藏键盘问题
ios·objective-c
日记成书14 小时前
物联网智能项目
物联网·学习
人类群星闪耀时14 小时前
物联网与大数据:揭秘万物互联的新纪元
大数据·物联网·struts
小鸡岛保安15 小时前
学习笔记-8MQTT-韦东山
stm32·物联网
AL.千灯学长18 小时前
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署
人工智能·gpt·ios·ai·苹果vision pro
Freak嵌入式1 天前
开源一款I2C电机驱动扩展板-FreakStudio多米诺系列
嵌入式硬件·嵌入式·智能硬件·开源硬件·micropython·电机驱动·电子模块
车到山前必有“陆”1 天前
智能硬件解决方案
大数据·人工智能·经验分享·科技·产品运营·智能硬件