84

我在我的 iPad 上安装了带有iOS 8.3的Safari 8.0.6 ,在我的Mac (10.10.3)上通过 Web Inspector 进行调试时,连接一直断开(断开时我在“开发”菜单下看不到设备名称)但可以如果我退出 safari 然后重新启动,则恢复,然后我可以再次远程刷新和检查。

4

17 回答 17

73

有几件事可以尝试:

1. 在 Xcode 模拟器上测试:

在 Xcode 中打开 iPhone 模拟器并使用 Safari Web Inspector 进行调试。

旁注:也许您需要下载Safari 技术预览版

2. 在您的设备上重置您的位置和隐私设置。

设置 > 通用 > 重置 > 重置位置和隐私

3.在真机上调试

使用此配置,它似乎现在可以工作。

iPhone X、iOS 版本 12.1.3 macOS Mojave 版本 10.14.2 (18C54) Safari 版本 12.0.2 (14606.3.4)

编辑 2019.08.13

设置 -> Safari -> 高级 -> 检查 Web 信息是否已打开。

它突然关闭,我无法通过 Web Inspector 连接。打开后,它起作用了。

对于其他设备/版本,请进一步阅读(也许您可以减小构建大小)。


编辑:2018.09.20

@Chet 发现,Web Inspector 因 JS 文件和地图文件过大而不断断开连接

https://stackoverflow.com/a/52338231/4641479

Github 上的问题:

https://github.com/google/ios-webkit-debug-proxy/issues/275

https://github.com/google/ios-webkit-debug-proxy/issues/274

我可以在具有生产版本(1.8 MB + 2.4 MB 文件)的真实设备上确认这一点,Safari Web Inspector 始终保持连接。

在此处输入图像描述

由于对于开发版本,它不是:

在此处输入图像描述


在我的网络检查员很少工作并且经常只是停止工作之前 - 但仍然是开放的。Safari 更新后,网络检查器会立即打开和关闭。如果遇到这样的问题..

这将起作用:

步骤 1. 获取最新的 Safari 浏览器

野生动物园:11.1 (12605.1.33.1.2)

https://developer.apple.com/safari/download

macOS Sierra 和 OS X El Capitan(我假设 macOS high Sierra 也受支持)

也许您需要下载Safari 技术预览版


第 2 步:重置您的位置和隐私设置

在您的设备上转到:

设置 > 通用 > 重置 > 重置位置和隐私

来源:https ://forums.developer.apple.com/thread/87181


第 3 步。连接您的设备

在 OS X 上打开 Safari 如果您使用 USB 数据线连接了 iPhone 设备,请先断开它。现在插入。

在 OS X Safari 上,转到:

开发 > 设备名称 > 申请开发

现在在您的手机上有一个权限问题。选择信任,现在您可以选择设备 safari 上的打开选项卡并进行调试。


调试愉快!

现在网络检查器保持连接。

于 2018-03-28T15:49:44.160 回答
47

您是否在 iPhone 上运行了很多后台应用程序?杀了他们再试一次。

我们在 WWDC 上向 Apple 开发人员展示了这个问题,他们怀疑这是由于 iPhone 的内存限制造成的。果然,杀死我们的大多数后台应用程序为我们解决了这个问题。

于 2019-06-12T17:19:28.013 回答
31

工作解决方案(截至 2020 年 3 月 24 日)

好吧,经过如此多的试验并打开了数千篇博客文章以找出解决方案,我设法让它工作,没有一个失败案例。

对我来说,这一直是我的 Ionic+Cordova 应用程序的问题。

当我运行一个简单的 Cordova 或 Ionic 应用程序时,当我看到这个问题(Safari 断开连接)不存在时,我的潜意识开始思考这个问题。然后突然间,我尝试了另一件事,它奏效了。

基本上,当任何文件的大小太大(不确定限制)时,Safari 网络检查器会断开连接。也许,一些图像、一些脚本和 CSS。就我而言,它曾经是因为 JavaScript 及其源映射文件。

因此,当我开始在没有源映射的情况下运行我的 iOS 应用程序时,问题就消失了。为此,我所要做的就是传递--source-map=false给我ionic cordova commands喜欢的人:

ionic cordova run ios --source-map=false
ionic cordova run ios -lc --source-map=false

我写了一篇关于这个的小文章来详细阐述这个https://medium.com/wizpanda/a-small-tip-to-speed-up-development-with-angular-or-ionic-d5764f639c0c

原始答案

此处列出的大多数答案对我有用了一段时间,但几个小时后它们也停止了工作,并且我的 Safari Web 控制台在打开时再次断开连接。

其他一些对我有用的选项:

选项 1 - 从 Safari 清空缓存

Safari on MacOS -> Develop -> Empty Cache

选项 2 - 清除受信任的计算机

On iOS Device -> Settings -> Developer -> Clear Trusted Computers然后重新连接USB线,然后再次尝试调试

选项 3 - 让调试器成为傻瓜(截至 2019 年 1 月 14 日)

这个解决方案现在已经工作了很长时间。由于这是与 iOS 和 Mac 之间的连接相关的问题,所以我打开了我的控制台应用程序并保持我的 iPhone 处于选中状态。(这以某种方式让我的 iOS 设备连接到我的 Mac)

然后在 Safari 上打开开发人员的控制台对我来说很好,无需断开连接。

选项 4 - 通过 Xcode 运行

这也是一种解决方法,也是一种查看其功能的技巧。您基本上可以准备您的 iOS 应用程序ionic cordova prepare ios,然后使用 Xcode 运行该应用程序并将其部署到您的 iPhone。

至少,我可以看到控制台日志,有时,它甚至可以与 Safari 网络检查器一起使用。

选项 5 - 在 iPhone 模拟器上运行

我认为这是最有效的解决方案。当您的系统没有运行太多应用程序时,此选项适用,因为启动模拟器会占用大量系统资源。

基本上,不是在真实设备上运行您的应用程序,而是通过 Xcode 在 iPhone 模拟器中运行您的应用程序并在您的 Safari Web 检查器中正常调试它,并且不会发生此问题。

这可能是因为传输到 Safari 检查器的文件来自系统本身。

于 2018-07-07T16:20:13.633 回答
10

听起来很奇怪,但可能是由于电池已满触发断开连接:https ://forums.developer.apple.com/thread/92290

当 Iphone 的电池充满时,似乎会发生断开连接。(所以目前我们在检查时打开闪光灯和相机以杀死电池......)

于 2018-04-18T10:06:46.380 回答
9

这仅对物理设备是必需的。如果设备的电池已满,则 Safari 可以强制断开物理设备的连接。(“电池满了?那么,让我们断开你的连接,因为你不再需要充电了——你的调试会话也开始了……”)

您需要在 中选择通过网络连接Develop > [device]然后将调试器附加到要调试的页面。如果您在 Safari 中没有开发菜单,请转到Safari > Preferences > Advanced并选择在菜单栏中显示开发菜单

在此处输入图像描述

如果这不起作用,您可以先尝试通过 App Store 升级您的 OS/Safari。

如果问题仍然存在,请断开您的 iOS 设备。进入您的 iOS 设备,进入 Settings > Safari > Web Inspector,然后将其关闭然后重新打开。强制退出 Safari。重新插入您的 iOS 设备并再次启动 Safari,然后通过 Safari > Develop 菜单重新连接您的 iOS 设备。

于 2018-06-26T21:20:33.880 回答
3

关闭 XCode 首先对我有帮助。

于 2018-10-21T17:50:30.027 回答
2

我不能说我有一个解决方案,而是朝着正确方向迈出的一步。

我尝试使用ios-webkit-debug-proxy,这样我就可以使用 Chrome 开发工具而不是 Safari 开发工具。

注意,为了让它工作,我可以将我的 iOS 升级到最新的 11.4.1 和 MacOS 10.13.65,然后重新安装最新版本:

brew update
brew install ios-webkit-debug-proxy
brew reinstall --HEAD libimobiledevice
brew reinstall -s ios-webkit-debug-proxy

ios_webkit_debug_proxy

运行后ios_webkit_debug_proxy,我能够尝试连接chrome://inspect并立即再次断开连接:

Listing devices on :9221
Connected :9222 to Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)
Invalid packet header 0x1ffffff91ffffffa0ffffff9d == .... == 26321053
Disconnected :9222 from Chet's Phone (6a028994cf281be807bf80c5557c3f2eb3fbb8b0)

但是,我们有一个线索!Invalid packet header. 听起来像是某个地方的较低级别的错误。不知道在哪里提交这个,但虽然......

于 2018-09-14T19:32:30.983 回答
2

09-07-2020

在 Safari (13.1.1) 上的最新 MacOs (Catalina 10.15.5) 上仍然存在这个问题

离子/电容器解决方案:

ionic cap run ios -l --external --source-map=false
于 2020-07-08T21:47:55.283 回答
2

神奇的解决方案对我有用:

  1. 重新启动你的 MAC
  2. 重新启动你的 iPhone
于 2019-03-11T23:15:43.657 回答
2

这以非常不一致的行为困扰了我很长时间,这里有一些我发现有帮助的东西,我还在这里写了一篇关于此的博客文章。

  1. 更新 mac safari 和 ios - 我发现在它开始为我工作的两个版本中的最新版本后,Safari 之间可能存在调试不兼容性。

  2. 检查 ios 中的网络检查器是否已启用 - 众所周知,升级后可以关闭此设置,请检查设置 > Safari > 高级 > 网络检查器。

  3. 检查您连接的端口 - 我已经将我的端口插入一个便宜的集线器/通过苹果键盘/显示器集线器,发现直接进入 mac 效果更好。

  4. 您使用的是优质电缆吗?- 我发现在调试时,没有磨损的质量更好/官方电缆具有更好的可靠性。

  5. 其他值得注意的观察 - 其他人评论说,确保在 safari 中启用 cookie、启用私有模式并在 Xcode 打开时尝试影响了它的可靠性,尽管我自己没有看到它可能有助于其他人尝试。

于 2018-02-09T10:13:28.520 回答
1

在您的 iOS 设备上使用内容拦截器(例如 1Blocker)时,请确保它对您要调试的域禁用。

禁用 1Blocker 会阻止 Web Inspector (Mac) 在打开后立即关闭,并让我重新开始工作。

于 2020-01-31T13:29:30.323 回答
1

最新的 Safari 技术预览似乎为我解决了这个问题。

https://developer.apple.com/safari/technology-preview/

于 2017-07-07T18:26:57.367 回答
1

MacOS Mojave / Catalina 解决方案

对我来说,这个问题在我升级到新的 macOS Mojave 后就开始了,这可能已经在上面的某个地方提到过,但对我来说,我只需要下载为 Mojave 构建的新的“Safari 技术预览”应用程序。

Safari 下载页面

https://developer.apple.com/safari/download/

直接下载 Mojave

https://secure-appldnld.apple.com/STP/041-71285-20190604-6d0dcb17-07e5-40a0-b418-dba732cefe64/SafariTechnologyPreview.dmg

于 2019-06-12T19:40:42.273 回答
1

对我来说,使用不同的适配器和电缆解决了这个问题。每次连接时,它都应要求“信任此设备”,如智能手机上的提示,如果没有,则为电缆/适配器问题。

于 2019-12-11T02:09:39.767 回答
0

电容器,离子,科尔多瓦

rm -rf platforms/ios/**/*.map

于 2021-12-05T13:07:52.663 回答
0

离子应用的工作解决方案:

ionic cordova build ios --source-map=false
于 2021-08-31T07:34:49.263 回答
0

我知道已经有很多答案,但我想发布,因为它们现在都不适合我。但是,我的手机电池处于“低电量模式”......但由于我正在为开发而插电,我认为这没什么大不了的。但是,进入手机设置并关闭低电量模式解决了我的问题。现在 safari 不会断开连接。

只是想发布它,以防有人遇到电池电量不足的情况。

于 2019-05-24T14:16:42.143 回答