求助:完全离线的 iOS App 在首次弹出键盘时触发系统的联网许可弹窗

VrianC 2026-07-30 09:10 1

我开发了一个完全离线的 iOS App ,源码中没有任何网络请求代码,也没有链接 Network.framework 或 CFNetwork 。


但全新安装后,当一个 TextField 首次获得焦点并弹出系统键盘时,系统会弹出“是否允许此 App 使用无线数据”的弹窗。


真机日志显示,文本框成为 First Responder 后,UIKit 开始初始化文本输入系统,随后 App 进程内出现:



  • com.apple.assistant.dictation

  • com.apple.SystemConfiguration.NetworkInformation

  • <NULL> genericnw_path_evaluator_start


紧接着,CommCenter 将这些东西都归属到 App 的 PID ,并显示首次联网许可。


日志中没有 nw_connection,也没有域名、URL 、数据传输记录这些内容。使用系统原生键盘和第三方键盘也都能复现


前天和昨天分别和 Claude 还有 GPT 排查到凌晨一两点,人都快疯了,思来想去也许是 iOS 版本的问题呢?我现在测试环境是 iOS 27 Beta 4 ( 24A5390f )


想问问有人在正式版 iOS 或其他系统版本上遇到过类似情况吗?就是文本输入框获得焦点后系统自动触发联网询问的弹窗。这是 iOS 27 Beta 的 Bug ,还是 iOS 真的会把 UIKit/听写组件在 App 进程内进行的网络路径检查算作 App 自身的联网行为?不至于这么神经病吧???

最新回复 (25)
  • sevenyangcc 07-30 09:21
    1
    27 的 bug
  • vzyw 07-30 09:40
    2
    国行手机的特色项目。 好几年前就有了。
  • taochang 07-30 10:07
    3
    配置文件会不会有明确不联网的配置?
  • RayJiang9 07-30 10:08
    4
    创建个新工程,就放一个 UITextField 试试呗,如果也有问题就是系统 bug
  • RayJiang9 07-30 10:13
    5
    @RayJiang9 测了一下,iOS 27 和 iOS 26.5 都复现了...
  • Danswerme 07-30 10:14
    6
    @RayJiang9 这不会是国行特色吧
  • RayJiang9 07-30 10:17
    7
    @Danswerme 网络弹窗是国行才有的,但是唤起键盘就触发这个弹窗应该是系统 bug
  • VrianC 楼主 07-30 10:44
    8
    @taochang 这是何物🤔
    怎么配置呀,我就是希望绝对的不联网,这个可以在 project 配置中声明吗?
  • VrianC 楼主 07-30 10:45
    9
    @RayJiang9 对的,我前天晚上就做了个四十多行的空壳 App ,内容是等待五秒后激活键盘,然后 App 会在激活键盘的那一瞬间弹出网络请求弹窗
    我就是想看看 iOS 26 会不会也这样。。没想到怎么也会这样啊。
  • deplives 07-30 10:46
    10
    正常现象
  • VrianC 楼主 07-30 10:46
    11
    @RayJiang9 我感觉多少有点离谱了。你 UIKit 刺探“听写是否有网”这件事为什么会算到我 App 头上,明明是你初始化组件自己的内部请求
  • bao3 07-30 11:04
    12
    有点神奇的 bug ,弹键盘和网络没什么关联。
    难道是进程间监听用了网络通信,所以弹网络权限。
  • bao3 07-30 11:06
    13
    问了一下 AI…… 清楚了,就不贴 AI 答案了。这也太搞笑了。
  • taochang 07-30 11:08
    14
    @VrianC 问下 AI Info.plist 中禁止联网配置呢?
  • loveuqian 07-30 11:15
    15
    @bao3 #13 你的答案是什么?键盘里面的听写吗?
  • RayJiang9 07-30 11:16
    16
    @VrianC #10 我目前测试下来好像和听写没关系。
    和 AI 跑了好多测试,已经能排除:
    业务网络代码
    听写
    候选词/联想
    UITextField 单一实现
    textInputMode
    某个具体输入框配置。
    只要返回一个 1pt 的 inputView ,首次成为 first responder 就触发弹窗; 0pt 不触发。

    唯一绕过成功的是完全不用系统文本输入链路:不用 UITextField/UITextView/UIKeyInput/inputView/inputAccessoryView/becomeFirstResponder ,改成普通 UIView/UIControl 自己画输入框和键盘按钮,手动维护文本,这样不会弹。(就是有点太蠢了...等于自己造一个键盘 view
  • f5a599 07-30 11:20
    17
    会不会是输入联想之类的问题
  • lichdkimba 07-30 11:28
    18
    估计美国总部的开发都不怎么测国行特供内容
  • laoyur 07-30 11:29
    19
    审核人员又不用国行手机,怕啥
  • myderr 07-30 11:37
    20
    会不会是右下角有个语音转写,他也认为是输入法的了。
  • VrianC 楼主 07-30 11:38
    21
    @RayJiang9 这也太离谱了。。。
  • ttsh 07-30 13:21
    22
    正常,我点了不允许之后,再重新打开又弹了一次呢
  • frankilla 07-30 13:32
    23
    什么?网络弹窗是国行独有?那怎么说呢,我觉得这个挺好的啊
  • everfly 07-30 14:00
    24
    已知问题: https://developer.apple.com/forums/thread/822198
  • VrianC 楼主 07-30 15:05
    25
    @everfly 这么看来还算个挺新的 Bug 啊,猜猜可能是为了检查是否有网络以决定某些组件(如听写等)是只使用端侧端侧内容还是一些云端内容(?)
    感觉真的大概率是因为美国那边忘记国行有这么个东西了()完全没考虑到
* 帖子来源V2EX
返回