美文网首页
iOS 网络授权检测组件(适配iOS16以上)

iOS 网络授权检测组件(适配iOS16以上)

作者: lanlinxl | 来源:发表于2022-12-14 17:54 被阅读0次

    目录

    1.需求背景
    2.需要解决的问题
    3.核心代码部分
    4.使用示例
    5.组件地址

    1. 需求背景

    • 随着iOS16.0更新,现在app首次安装启动,第一件事就是提示网络授权,但是很多用户会不小心点击到仅限无限局域网/不允许(有很多用户并不像互联网工作者对APP很熟悉,可能都不知道发生了什么),近期也是有很多用户反馈手机有网络但是无法登录问题,针对这方面问题本文将详细讲解如何解决
    • 组件Swift和OC版本都有,本文使用swift作为示例:
    Snipaste_2022-12-15_17-37-43.png

    2. 需要解决的问题

    1. 点击不允许,会返回未授权状态,引导用户去设置
    2. 点击仅无线局域网,设备如果是wifi状态能正常使用,切换到蜂窝状态则提示未授权
    3. 能判断网络不可用是设备无网/飞行模式还是因为未授权网路
    4. 能实时监控授权状态变化
    5. 进入前后台检测授权状态
    6. 提示框设置引导

    3. 核心代码部分

    • 主要设计思路使用一个单例类去实现,并对外有如下方法:
    Snipaste_2022-12-15_17-53-18.png
    Snipaste_2022-12-15_17-52-58.png
    • 下面看看start方法里面做了什么
    Snipaste_2022-12-15_17-52-19.png

    从上图可以看出,除了一些基本配置,主要调用了两个方法startReachabilityNotifier,startCellularDataNotifier,主要是对网络切换、授权切换的监听

    • 我们看看startReachabilityNotifier方法做了什么:
    Snipaste_2022-12-15_17-51-10.png

    主要也是用户网络出现动态切换的时候,会有一个回调,然后接着调用startCheck方法

    • 再看看startCellularDataNotifier方法:
    Snipaste_2022-12-15_17-50-22.png

    CTCellularData对象监听用户授权的状态,也会调用startCheck方法

    • 看看startCheck方法主要做了啥
    Snipaste_2022-12-15_17-48-47.png

    如上图主要有3个方法:

    • 先判断用户当前网络是否可用:
    • currentReachable() 方法实现: Snipaste_2022-12-15_17-44-03.png
    • 当授权状态为restricted时,表示当前网络已经不可用了,但是不能判断时飞行模式真的没网还是因为用户没授权导致的,所以需要使用下面两个方法结合判断:
    • isUseWifiConnect()方法实现:能获取到wifi地址 表示当前在wifi状态 Snipaste_2022-12-15_17-43-23.png
    • isUseWWANConnect()方法实现: Snipaste_2022-12-15_17-44-49.png
    • 进入前台和和退到后台也会再次检测当前的授权情况和网络情况:
    Snipaste_2022-12-15_17-42-20.png
    • 当检测到未授权时,弹出提示框让用户去设置:

    我这里自定义了一个弹框,需要注意的是我没有使用rootViewController去present出来,因为APP启动就会present一个协议弹框或者其他弹框,这时候后面需要展示的授权弹框present不出来了,直接将view加在window上应该更好

    Snipaste_2022-12-15_17-41-21.png

    4. 使用示例

    • 外部调用:
    Snipaste_2022-12-15_17-40-27.png
    • Demo测试效果:
    86d5e41e6ae9783b4f695aea9054bbc7.gif

    5. 组件地址

    我在github上传了两种语言的组件,已集成cocopods ,可以直接通过pod导入项目中:

    Swift版本:
    LLNetworkAccessibility-Swift

    OC版本:
    LLNetworkAccessibility-OC

    相关文章

      网友评论

          本文标题:iOS 网络授权检测组件(适配iOS16以上)

          本文链接:https://www.haomeiwen.com/subject/zdrlqdtx.html