【iOS】设备配网所需系统权限

App开发相关产品技术讨论,包括OEM App、App SDK等话题


Post Reply
ZoeTuya
Posts: 11

首先介绍下各类配网所需权限:
蓝牙配网(包含双模配网):
需要系统蓝牙权限、 App 蓝牙权限
需要 Access Wi-Fi Information 权限、地理位置权限 (双模配网需要,WiFi信息获取页面需要展示手机连接WiFi)

AP:
需要 Access Wi-Fi Information 权限、地理位置权限、本地网络权限、Hotspot 权限来获取WiFi信息和配网。

扫二维码配网:
需要相机权限。

HomeKit 配网:
需要 HomeKit 权限。

Matter 配网:
需要本地网络权限、matter.allow-setup-payload 权限。

EZ(不推荐该配网方式,新固件已不包含EZ,请使用AP或者双模配网):
需要 Access Wi-Fi Information 权限、地理位置权限、本地网络权限、多播权限来获取WiFi信息和配网。

Access Wi-Fi Information 权限

从 iOS 12 开始苹果引入权限“Access Wi-Fi Information Entitlement”,用来访问Wi-Fi 信息(获取当前连接 Wi-Fi 网络名称,SSID)。任何想要访问 Wi-Fi 信息的应用程序都需要申请并获得“Access Wi-Fi Information ”。
项目调试时,需要配置 Entitlement:
●在应用的 Xcode 项目 target -> Signing& Capabilities -> +Capability -> 选择 Access Wi-Fi Information。
●或者在项目的 .entitlements 文件中添加 com.apple.developer.networking.wifi-info 键,并设置值为 true。

此权限是涂鸦 App 所必须的,上架证书中必须包含,具体证书制作可参考:https://developer.tuya.com/cn/docs/iot/ ... F%EF%BC%89

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证WiFi获取功能。

地理位置权限
从 iOS 13 开始,获取当前已连接的WiFi名称(SSID)需要用户授予应用程序位置权限。这一改变是苹果公司为了增强用户隐私保护措施而引入的。如果应用程序没有位置权限,获取 Wi-Fi 名称将将返回空数据。

权限配置:
在应用程序的 Info.plist 文件中添加相应的键以支持位置权限请求

Code: Select all

	
	<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
	<string>The app can provide temperature and humidity according to your location. \"Leave or Arrive (beta)\" always requests access to your location.</string>
	<key>NSLocationAlwaysUsageDescription</key>
	<string>The app can provide temperature and humidity according to your location. \"Leave or Arrive (beta)\" always requests access to your location.</string>
	<key>NSLocationTemporaryUsageDescriptionDictionary</key>
	<string>Location permissions will be used for smart device automation, discovery of nearby devices, Wi-Fi lists, and more. Please grant the permission to the app.</string>
	<key>NSLocationUsageDescription</key>
	<string>Location permissions will be used for smart device automation, discovery of nearby devices, Wi-Fi lists, and more. Please grant the permission to the app.</string>
	<key>NSLocationWhenInUseUsageDescription</key>
	<string>Location permissions will be used for smart device automation, discovery of nearby devices, Wi-Fi lists, and more. Please grant the permission to the app.</string>

蓝牙权限
iOS 蓝牙权限包括系统蓝牙权限和应用蓝牙权限。
iOS 应用需要请求蓝牙权限是从 iOS 13 开始引入的。这是为了保护用户的隐私,确保应用程序在访问蓝牙设备时得到用户的明确授权。
●在iOS 13之前,应用程序可以访问蓝牙设备而不需要显式向用户请求权限。
●从 iOS 13 开始,应用程序在使用 CoreBluetooth 框架进行蓝牙操作时需要请求和获得用户的授权。

权限声明:
在应用程序的 Info.plist 文件中添加相应的键,以声明应用需要使用蓝牙功能

Code: Select all

	<key>NSBluetoothAlwaysUsageDescription</key>
	<string>Need permission to access to external bluetooth devices for App to control them.</string>
	<key>NSBluetoothPeripheralUsageDescription</key>
	<string>To add or use Bluetooth devices, enable Bluetooth on your mobile phone.</string>

注意:
Tuya 的蓝牙功能有裁剪能力,如果 App 不需要蓝牙功能时,可以裁剪蓝牙组件,此时无需声明蓝牙权限。

本地网络权限
本地网络权限从 iOS 14 开始引入,该权限用于保护用户隐私,确保应用在访问本地网络上的设备时得到用户的明确授权。应用需要与本地网络上的设备(如智能家居设备、打印机等)进行通信时,需要请求该权限。

访问本地网络的 App 可以收集有关附近设备的信息,以确定用户加入了哪些网络以及是什么时候加入的。这些信息可用于创建你的个人资料。
●轻点“允许”可向 App 授予本地网络的访问权限。
●如果你不想让 App 访问本地网络,或者你不清楚为什么 App 需要进行访问,可以轻点“不允许”。App 仍然可以使用互联网,或者仍可以使用系统服务(例如“隔空打印”、“隔空播放”、“隔空投送”或 HomeKit)与本地网络进行交互。

本地网络权限声明:
●在 Info.plist 文件中,添加键 NSLocalNetworkUsageDescription 以描述为什么应用需要访问本地网络。

Code: Select all

<key>NSLocalNetworkUsageDescription</key>
	<string>The purpose of the app connecting to the local network: enable pairing and control of the devices connected to the local area network</string>

声明需要访问的本地网络服务类型,在 Info.plist 文件中添加 NSBonjourServices,描述需要访问的服务类型。例如matter服务:

Code: Select all

<key>NSBonjourServices</key>
	<array>
		<string>_matter._tcp</string>
	</array>

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证EZ发包功能。

组播网络权限(多播权限)
iOS 14 引入组播网络(Multicast Networking)需要请求的特殊权限,即com.apple.developer.networking.multicast 权限。

Tuya App EZ、有线等配网方式均需要此权限。App 拥有此权限,才能在 iOS 上发送或接收 IP 组播或广播。它还允许你的应用程序浏览和宣传任意的 Bonjour 服务类型。

项目调试时,需要配置 Entitlement:
在项目的 .entitlements 文件中添加 com.apple.developer.networking.multicast 键,并设置值为 true。

要在应用程序中使用此权限,需要获得 Apple 的许可。请从 “组播联网权限申请 ”页面申请权限。
申请流程参考:https://developer.tuya.com/cn/docs/iot/ ... avep9c7wg6

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证EZ发包功能。

Hotspot 权限
在 iOS11 之后,App 可以使用 NEHotspotConfiguration API 来配置和连接 Wi-Fi 热点网络。这种方式不需要用户在设置应用中手动连接 Wi-Fi,可以直接在应用内通过编程方式完成网络连接。
iOS 13 之后,可以在 App 内部连接匹配 Wi-Fi 前缀的网络。

Tuya App 从 5.14.0 版本开始支持热点自动连接功能。因此 5.14.0 版本之后需要添加该权限。

项目调试时,需要配置 Entitlement:
在项目的 .entitlements 文件中添加 com.apple.developer.networking.HotspotConfiguration 键,并设置值为 true。

相关证书制作,参考文档中 Ap 热点自动连接部分:https://developer.tuya.com/cn/docs/iot/ ... F%EF%BC%89

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证热点自动连接功能。

相机权限
Tuya App 扫码配网需要相机权限。
权限声明:
在应用程序的 Info.plist 文件中添加相应的键,以声明应用需要使用相机、

Code: Select all

	<key>NSCameraUsageDescription</key>
	<string>The App can use camera to take new profile and to scan QR Code.</string>

HomeKit 权限
Tuya App 支持 HomeKit 设备配网,需要HomeKit权限。

权限声明:
●在应用程序的 Info.plist 文件中添加相应的键,以声明应用需要使用 home 家庭下设备

Code: Select all

<key>NSHomeKitUsageDescription</key>
<string>You can control all \"Home\" devices in the app.</string>

●在项目的 .entitlements 文件中添加 com.apple.developer.homekit 键,并设置值为 true。

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证热点自动连接功能。
HomeKit不是必须功能,可裁剪,裁减之后无需声明以上权限信息。

Matter 权限
com.apple.developer.matter.allow-setup-payload 是 Apple 提供的一个特殊权限,用于支持 Matter 协议设备的设置和配置。Matter 是一种基于 IP 的开放全球标准,用于智能家居设备的安全和可靠互通。

iOS 16.1 版本之后三方 Matter 设备使用 Tuya App 配网走 Mattersupport 流程,需要此权限。

在项目的 .entitlements 文件中添加com.apple.developer.matter.allow-setup-payload 键,并设置值为 true。

注意:
CI 包和 NG 包证书无此权限,因为需要 tf 包进行验证三方 Matter 设备配网。


Tags:
Post Reply