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。

相关推荐
兔云程序2 小时前
消息称苹果iPhone系列将完全放弃LCD屏幕
ios·iphone
JackLee184 小时前
Metal 之旅之MTLLibrary
ios·metal·图形绘制·视频渲染·mtllibrary
千千道4 小时前
STM32 实现 UDP 广播通信
stm32·单片机·物联网·网络协议·udp
神一样的老师6 小时前
基于工业物联网的能源监控系统:边缘数据处理的应用
物联网·能源
唐Sun_数智人10 小时前
IIOT工业物联网的数据分析与预测维护_SunIOT
物联网·数据挖掘·数据分析
芯橦1 天前
【瑞昱RTL8763E】音频
单片机·嵌入式硬件·mcu·物联网·音视频·visual studio code·智能手表
Evand J1 天前
物联网智能设备:未来生活的变革者
人工智能·物联网·智能手机·智能家居·智能手表
missmisslulu1 天前
电容笔值得买吗?2024精选盘点推荐五大惊艳平替电容笔!
学习·ios·电脑·平板
GEEKVIP1 天前
手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
android·macos·ios·智能手机·电脑·手机·iphone
GEEKVIP1 天前
如何在 Windows 10 上恢复未保存/删除的 Word 文档
macos·ios·智能手机·电脑·word·笔记本电脑·iphone