美文网首页iOS 的那些事儿日常收录
关于Local Network(本地网络)权限审核被拒的解决方案

关于Local Network(本地网络)权限审核被拒的解决方案

作者: 雨天多久就 | 来源:发表于2020-10-28 14:57 被阅读0次

    问题:

    前几天提交的新包审核被拒。原因是iOS 14系统,新增的本地网络权限
    具体如下(图片是盗用):

    image.png 至于为什么新增了这个权限,以及这个权限带给用户的意义,这个文章写的很好。传送门:https://sspai.com/post/61223

    解决方案:

    • 添加对应的描述文案
      在项目对应的info.plist文件中添加权限为NSLocalNetworkUsageDescription的描述:
      image.png
    • 列举具体使用的服务列表
      有些开发者已经遇到这个坑点了。只添加权限描述并不会通过审核。
      需要在info.plist文件中添加服务列表:
      image.png

    Xcode12可能不一样,因为我自己并未升级,所以上面的只是我自己的项目配置。
    下面是我盗的Xcode12的图:


    image.png

    解决坑点:

    哪里用到了这个服务,怎么列举服务列表?

    很多开发表示,我自己并未使用这个什么网络服务,这个提示莫名其妙。
    根据我这边的项目情况猜测,这个权限应该是机器扫描到的。因为我的项目里只是存在对应的代码,但是并没有去使用。

    要列举服务列表,就需要去项目里搜索对应的代码。
    可以在Xcode里搜索关键词:._tcp._udp
    也可以通过检查项目里哪些地方使用到了: NSNetService (这个类一般都是用来创建服务的),着重去看一下。

    下面是我项目里用到的地方:

    image.png
    如果引入的地方是静态库怎么办?怎么搜索?

    我这边项目还好,用到的地方正好是通过pod源码引入的。如果不幸你用到的是.a库,那就只能通过命令行来搜索了。
    具体方式可以如下:
    grep -r _tcp .
    或者
    find . -type f | grep -e ".a" -e ".framework" | xargs grep -s _tcp

    更新

    最近在删除项目里无用的代码,发现删除了上面说的那个库后仍然出现了本地网络权限弹窗。最终定位到,是因为使用了旧版本的高德SDK导致的。更新高德SDK即可。

    通过这个印证了上面的说法有错误。这个权限不是被机器扫到的。虽然上面的解决方式是正确的。但是服务列表里的内容写的其实不对,只能说是用不太正确的方式侥幸解决了问题。

    相关文章

      网友评论

        本文标题:关于Local Network(本地网络)权限审核被拒的解决方案

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