我在iPad上使用iOS 8.3的Safari 8.0.6,通过Web Inspector在我的Mac(10.10.3)上进行调试时,连接不断中断(在断开连接后,在“开发”菜单下看不到设备名称),但如果我退出Safari并重新启动它,然后我能够刷新并再次远程检查。
我在iPad上使用iOS 8.3的Safari 8.0.6,通过Web Inspector在我的Mac(10.10.3)上进行调试时,连接不断中断(在断开连接后,在“开发”菜单下看不到设备名称),但如果我退出Safari并重新启动它,然后我能够刷新并再次远程检查。
有几个尝试的方法:
在Xcode中打开iPhone模拟器,并使用Safari Web检查器进行调试。
附注:也许您需要下载Safari Technology Preview
设置 > 通用 > 重置 > 重置位置和隐私
使用这个配置,它似乎现在可以工作了。
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检查器连接。切换它后,它可以工作。
对于其他设备/版本,请继续阅读(也许您可以减小构建大小)。
编辑:2018.09.20
@Chet发现,Web检查器因太大的JS文件和映射文件而不断断开连接
https://dev59.com/9l0Z5IYBdhLWcg3wnBb_#52338231
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 网页检查器总是保持连接。
但对于开发构建则不然:
在 Safari 更新之前,我的网络检查器很少工作,常常停止工作但仍处于打开状态。更新后,网络检查器会立即打开并关闭。如果遇到此类问题...
请参考以下步骤:
Safari: 11.1 (12605.1.33.1.2)
https://developer.apple.com/safari/download
适用于 macOS Sierra 和 OS X El Capitan(我假定 macOS High Sierra 也受支持)
可能需要下载 Safari 技术预览版
在您的设备上前往:
设置 > 通用 > 重置 > 重置位置与隐私
来源:https://forums.developer.apple.com/thread/87181
在 OS X 上打开 Safari。如果您已经使用USB线连接了您的iPhone设备,请先断开连接。 现在插上它。
在OS X Safari中,前往:
开发 > 设备名称 > 申请开发
现在,在您的手机上会出现一个权限问题。选择信任,现在您可以选择在设备Safari上打开选项卡并进行调试。
现在Web检查器保持连接状态。
你的iPhone上运行了很多后台应用程序吗? 关闭它们然后再试一次。
我们在WWDC向Apple开发人员展示了这个问题,他们怀疑这是由于iPhone的内存限制引起的。确实,关闭大多数后台应用程序解决了我们的问题。
经过多次尝试并打开成千上万个博客文章来找到解决方案,我成功地使其工作,没有任何失败的情况。
对于我来说,这一直是我Ionic+Cordova应用程序的问题。
当我看到运行简单的Cordova或Ionic应用程序时不存在此问题(Safari断开连接问题)时,我的潜意识开始思考这个问题。然后突然间,我尝试了另一件事情,它奏效了。
基本上,当任何文件的大小太大时(不确定限制),Safari Web检查器会断开连接。也许是某些图像、某些脚本和CSS。在我的情况下,这是由于JavaScript及其源映射文件。
因此,当我开始在没有源映射的情况下运行我的iOS应用程序时,问题就解决了。为此,我只需要通过以下方式将--source-map=false
传递给我的ionic cordova commands
:
ionic cordova run ios --source-map=false
ionic cordova run ios -lc --source-map=false
这里列出的大多数答案对我有用,但是几个小时后它们也停止工作了,我的Safari网络控制台再次断开连接。
其他几个对我有用的选项:
Safari on MacOS -> Develop -> Empty Cache
On iOS Device -> Settings -> Developer -> Clear Trusted Computers
然后重新连接USB电缆,然后尝试再次调试
这个解决方案已经很长时间了。由于这是与iOS和Mac之间的连接相关的问题,因此我打开了我的Console应用程序,并保持我的iPhone被选中。(这样可以让我的iOS设备连接到我的Mac)
然后,在Safari上打开开发人员控制台对我而言没有断开连接的问题。
ionic cordova prepare ios
准备您的iOS应用程序,然后使用Xcode运行该应用程序并将其部署到您的iPhone上。这只适用于物理设备。如果设备电池已经充满,Safari 可以强制断开物理设备连接。(“电池充满了?那么,既然你不需要充电了,我们就断开你的连接——您的调试会话也将结束……”)
您需要在 Develop > [设备]
中选择 通过网络连接,然后将调试器附加到要调试的页面上。如果您在 Safari 中没有开发菜单,请转到 Safari > 偏好设置 > 高级
并选择 在菜单栏中显示“开发”菜单。
如果这不起作用,您可以先尝试通过 App Store 升级您的操作系统/ Safari。
如果仍有问题,请断开 iOS 设备的连接。进入 iOS 设备的 设置 > Safari > Web 检查器,并关闭然后再打开。强制退出 Safari。重新插入您的 iOS 设备并重新启动 Safari,然后通过 Safari > 开发菜单重新附加您的 iOS 设备。
听起来很奇怪,但可能是由于电池充满引起的断开连接:
https://forums.developer.apple.com/thread/92290似乎在Iphone电池充满时发生了断开连接。(所以我们暂时打开闪光灯和相机来消耗电池,同时检查...)
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
。听起来像是某个地方的低级错误。不确定该向哪里提交这个问题……这个神奇的解决方案对我有效:
更新Mac Safari和iOS - 我发现只有在两个版本都是最新的情况下,Web检查器才开始工作,因为Safari之间可能存在调试不兼容性。
检查iOS中的Web检查器是否已启用 - 升级后已知该设置可能会关闭,请在设置> Safari>高级> Web检查器中进行检查。
检查您连接的端口 - 我的设备连接到一个廉价的集线器 / 通过苹果键盘/显示器集线器,发现直接连接到Mac上效果更好。
您使用的电缆质量如何? - 我发现质量更好/官方电缆在调试时可靠性更高,而且没有磨损。
其他值得注意的观察 - 其他人评论说,在Safari中确保启用Cookie、启用私密模式并在Xcode打开时尝试可能会影响此功能的可靠性,尽管我自己没有看到这一点,但可能会帮助其他人尝试。
2020年09月07日
在最新的MacOS(Catalina 10.15.5)上,在Safari(13.1.1)上仍然存在此问题。
Ionic / Capacitor的解决方案:
ionic cap run ios -l --external --source-map=false