我的编程空间,编程开发者的网络收藏夹
学习永远不晚

iOS 请求本地网络权限状态

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

iOS 请求本地网络权限状态

////  KdLocalNetworkManager.swift//  ////  Created by bob bob on 2023/4/13.//import Foundationimport Network/// Uses bonjour networking to relialby check if user has granted local network access/// How to use:/// Add LocalNetworkAuthorization class to your project/// Open .plist file and add "_bonjour._tcp", "_lnp._tcp.", as a values under "Bonjour services"/// Call requestAuthorization() to trigger the prompt or get the authorization status if it already been approved/denied/// about the author: https://stackoverflow.com/a/67758105/705761public class KdLocalNetworkManager: NSObject {    private var browser: NWBrowser?    private var netService: NetService?    private var completion: ((Bool) -> Void)?        public func requestAuthorization() async -> Bool {        return await withCheckedContinuation { continuation in            requestAuthorization() { result in                continuation.resume(returning: result)            }        }    }        private func requestAuthorization(completion: @escaping (Bool) -> Void) {        self.completion = completion                    // Create parameters, and allow browsing over peer-to-peer link.        let parameters = NWParameters()        parameters.includePeerToPeer = true                    // Browse for a custom service type.        let browser = NWBrowser(for: .bonjour(type: "_bonjour._tcp", domain: nil), using: parameters)        self.browser = browser        browser.stateUpdateHandler = { newState in            switch newState {            case .failed(let error):                print(error.localizedDescription)            case .ready:                break            case .cancelled:                break            case let .waiting(error):                print("Local network permission has been denied: \(error)")                self.reset()                self.completion?(false)            default:                break            }        }                self.netService = NetService(domain: "local.", type:"_lnp._tcp.", name: "LocalNetworkPrivacy", port: 1100)        self.netService?.delegate = self                self.browser?.start(queue: .main)        self.netService?.publish()    }            private func reset() {        self.browser?.cancel()        self.browser = nil        self.netService?.stop()        self.netService = nil    }}extension KdLocalNetworkManager : NetServiceDelegate {    public func netServiceDidPublish(_ sender: NetService) {        self.reset()        print("Local network permission has been granted")        completion?(true)    }}

1 在 .plist 添加"_bonjour._tcp", “_lnp._tcp.”, 到 “Bonjour services”
2 使用,只有被拒绝时候才会回调回来

    Task.init {            do{                let isOK = try await  KdLocalNetworkManager().requestAuthorization()                print("ok")                 if(!isOK){                    let settingStrUrl = UIApplication.openSettingsURLString//"App-Prefs:root=Bluetooth"                    let alertStr = NSLocalizedString("请打开本地网络权限", comment: "")                     let url = URL(string: settingStrUrl)                        guard let url = url else{return                        }                        if(UIApplication.shared.canOpenURL(url)){UIApplication.shared.open(url)                        }                    }            }catch{                print("exception")            }        }

来源地址:https://blog.csdn.net/bobbob32/article/details/131106416

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

iOS 请求本地网络权限状态

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

云服务器访问本地网络怎么设置权限呢

如果您要访问的是云服务器上的本地网络,可以按照以下步骤进行设置权限:在浏览器中登录云服务器的域名:在网站顶部,点击"关于我们",然后点击左侧的"操作中心"。在操作中心中找到"本地连接",点击进入。在"本地连接属性"中,选择您的本地连接,并找到"Internet协议(TCP/IP)"选项。在"本地连接属性"中,选择"高级"选项。此时,将出现高级设置页面,其中包括您希望使
2023-10-27

云服务器访问本地网络怎么设置权限密码

如果您要访问本地网络中的其他位置,需要设置权限密码。以下是一些可能有用的步骤和指南:检查本地网络是否存在:确保所有可用的网络设置都已经关闭,并且未使用的端口已经关闭。打开浏览器,搜索本地网络:使用浏览器或搜索引擎搜索本地网络,可能会找到您需要的相关选项。找到可用的网络设置:找到您需要的所有网络设置,并根据实际情况进行更改。例如,您可以打开“本地网络”选项卡,查看当前已连接的位置和可用的网络设置。设置权限密码:...
2023-10-27

云服务器访问本地网络怎么设置权限管理

如果您的云服务器是在本地托管的,并且需要访问网络,您可以使用以下步骤设置访问和控制权限:登录到您的云服务器上您可以使用管理员帐户登录到云服务器。登录的方法取决于您的具体情况和您的操作系统。例如,如果您的操作系统是Windows、MacOS或Linux,您可能需要使用Windows帐户登录到服务器。选择要允许访问的应用程序和服务在管理员帐户下,选择您要允许访问的应用程序和服务并点击允许访问。您也可以选择仅允许需要登录才能访...
2023-10-27

浅谈关于如何检测iOS14本地网络权限的一些思路

前戏苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/ wwdc翻译过来凑字数的什么是本地网络?这里的本地网络其实就是我们
2022-05-19

云服务器访问本地网络怎么设置权限密码登录

在云服务器的管理控制台中设置用户账号和密码。管理控制台可以根据需要创建多个用户账号,每个账号需要拥有特定的权限和密码。用户账号和密码应该分别设置,以便用户只能访问自己权限范围内的资源。启用SSL证书。SSL证书是用于加密传输数据的证书。在云服务器的管理控制台中,可以启用SSL证书,以提高安全性。启用SSL证书的方法有多
云服务器访问本地网络怎么设置权限密码登录
2023-10-28

云服务器访问本地网络怎么设置权限管理密码

登录云服务器:用户首先需要登录到云服务器上。通常,云服务器提供了多种登录方法,如用户名、密码、电子邮件、验证码等。用户需要输入用户名和密码以登录到云服务器上,然后使用其他账户登录到该云服务器。配置访问权限:在云服务器上,可以通过配置访问权限来管理访问权限。用户可以根据需要,选择是否允许某些云服务器资源的访问。例如,如果
2023-10-27

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录