我在我的 iPad 上安装了带有 iOS 8.3 的 Safari 8.0.6,在我的 Mac(10.10.3)上通过 Web Inspector 进行调试时,连接一直断开(断开时我在“开发”菜单下看不到设备名称)但可以如果我退出 safari 然后重新启动,则恢复,然后我可以再次远程刷新和检查。
有几件事可以尝试:
1. 在 Xcode 模拟器上测试:
在 Xcode 中打开 iPhone 模拟器并使用 Safari Web Inspector 进行调试。
旁注:也许您需要下载 Safari Technology Preview
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 始终保持连接。
https://i.stack.imgur.com/iEbMg.png
由于对于开发版本,它不是:
https://i.stack.imgur.com/Oox3U.png
在我的网络检查员很少工作并且经常只是停止工作之前 - 但仍然是开放的。 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 Technology Preview
第 2 步:重置您的位置和隐私设置
在您的设备上转到:
设置 > 通用 > 重置 > 重置位置和隐私
来源:https://forums.developer.apple.com/thread/87181
第 3 步。连接您的设备
在 OS X 上打开 Safari 如果您使用 USB 数据线连接了 iPhone 设备,请先断开它。现在插入。
在 OS X Safari 上,转到:
开发 > 设备名称 > 申请开发
现在在您的手机上有一个权限问题。选择信任,现在您可以选择设备 safari 上的打开选项卡并进行调试。
调试愉快!
现在网络检查器保持连接。
您是否在 iPhone 上运行了很多后台应用程序?杀了他们再试一次。
我们在 WWDC 上向 Apple 开发人员展示了这个问题,他们怀疑这是由于 iPhone 的内存限制造成的。果然,杀死我们的大多数后台应用程序为我们解决了这个问题。
工作解决方案(截至 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 运行
这也是一种解决方法,也是一种查看其功能的技巧。您基本上可以通过 ionic cordova prepare ios
准备您的 iOS 应用程序,然后使用 Xcode 运行该应用程序并将其部署到您的 iPhone。
至少,我可以看到控制台日志,有时,它甚至可以与 Safari 网络检查器一起使用。
选项 5 - 在 iPhone 模拟器上运行
我认为这是最有效的解决方案。当您的系统没有运行太多应用程序时,此选项适用,因为启动模拟器会占用大量系统资源。
基本上,不是在真实设备上运行您的应用程序,而是通过 Xcode 在 iPhone 模拟器中运行您的应用程序并在您的 Safari Web 检查器中正常调试它,并且不会发生此问题。
这可能是因为传输到 Safari 检查器的文件来自系统本身。
听起来很奇怪,但可能是由于电池已满触发断开连接:https://forums.developer.apple.com/thread/92290
当 Iphone 的电池充满时,似乎会发生断开连接。 (所以目前我们在检查时打开闪光灯和相机以杀死电池......)
这仅对物理设备是必需的。如果设备的电池已满,则 Safari 可以强制断开物理设备的连接。 (“电池满了?那么,让我们断开你的连接,因为你不再需要充电了——你的调试会话也开始了……”)
您需要在 Develop > [device]
中选择 通过网络连接,然后将调试器附加到要调试的页面。如果 Safari 中没有开发菜单,请转到 Safari > Preferences > Advanced
并选择在菜单栏中显示开发菜单。
https://i.stack.imgur.com/vqugl.png
如果这不起作用,您可以先尝试通过 App Store 升级您的 OS/Safari。
如果问题仍然存在,请断开您的 iOS 设备。进入您的 iOS 设备,进入 Settings > Safari > Web Inspector,然后将其关闭然后重新打开。强制退出 Safari。重新插入您的 iOS 设备并再次启动 Safari,然后通过 Safari > Develop 菜单重新连接您的 iOS 设备。
关闭 XCode 首先对我有帮助。
这一直困扰着我很长一段时间的行为非常不一致,这里有一些我发现有帮助的东西,我还在这个 here 上写了一篇博客文章。
更新 mac safari 和 ios - 我发现在它开始为我工作的两个版本中的最新版本后,Safari 之间可能存在调试不兼容性。检查 ios 中的网络检查器是否已启用 - 众所周知,升级后可以关闭此设置,请检查设置 > Safari > 高级 > 网络检查器。检查您连接的端口 - 我已经将我的端口插入一个便宜的集线器/通过苹果键盘/显示器集线器,发现直接进入 mac 效果更好。您使用的是优质电缆吗? - 我发现在调试时,没有磨损的质量更好/官方电缆具有更好的可靠性。其他值得注意的观察 - 其他人评论说,确保在 safari 中启用 cookie、启用私有模式并在 Xcode 打开时尝试影响了它的可靠性,尽管我自己没有看到这可能有助于其他人尝试。
我不能说我有一个解决方案,而是朝着正确方向迈出的一步。
我尝试使用 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
。听起来像是某个地方的较低级别的错误。不知道在哪里提交这个,但虽然......
神奇的解决方案对我有用:
重启你的 MAC 重启你的 iPhone
09-07-2020
在 Safari (13.1.1) 上的最新 MacOs (Catalina 10.15.5) 上仍然存在这个问题
离子/电容器解决方案:
ionic cap run ios -l --external --source-map=false
最新的 Safari 技术预览似乎为我解决了这个问题。
https://developer.apple.com/safari/technology-preview/
Safari Technology Release 42 (Safari 11.1, WebKit 12605.1.10)
开始似乎问题已解决
MacOS Mojave / Catalina 解决方案
对我来说,这个问题在我升级到新的 macOS Mojave 后就开始了,这可能已经在上面的某个地方提到过,但对我来说,我只需要下载为 Mojave 构建的新的“Safari 技术预览”应用程序。
Safari 下载页面
https://developer.apple.com/safari/download/
直接下载 Mojave
对我来说,使用不同的适配器和电缆解决了这个问题。每次连接时,它都应要求“信任此设备”,如智能手机上的提示,如果没有,则为电缆/适配器问题。
在您的 iOS 设备上使用内容拦截器(例如 1Blocker)时,请确保它对您要调试的域禁用。
禁用 1Blocker 会阻止 Web Inspector (Mac) 在打开后立即关闭,并让我重新开始工作。
我知道已经有很多答案,但我想发布,因为它们现在都不适合我。但是,我的手机电池处于“低电量模式”......但由于我正在为开发而插电,我认为这没什么大不了的。但是,进入手机设置并关闭低电量模式解决了我的问题。现在 safari 不会断开连接。
只是想发布它,以防有人遇到电池电量不足的情况。
离子应用的工作解决方案:
ionic cordova build ios --source-map=false
电容器,离子,科尔多瓦
rm -rf platforms/ios/**/*.map
在 macOS Monterey 上构建 Ionic Angular 项目并在 iPhone Xs 上进行预览时,我在 Capacitor 中使用实时预览时遇到了这个问题。这里有一些方法可以让我克服这个错误并继续开发......
确保您使用的是 Safari Technology Preview,而不是普通版本的 Safari。如果继续,请关闭并重新打开 Safari Technology Preview。您也可以在安装 Safari Technology Preview 后尝试使用普通版本的 Safari 进行检查。它几乎也可以用于调试。在您的设备上,打开应用程序切换器并关闭所有后台应用程序,然后再开始开发您的应用程序。在计算机上的 Safari 中切换“通过网络连接”,方法是使用:Safari 菜单中的开发 > 设备名称 > 通过网络连接。断开并重新连接设备的避雷线。确保它与计算机的连接稳定牢固。非品牌电缆可能会导致间歇性开发问题。退出您的应用程序,转到应用程序切换器并通过将其滑开来强制关闭您的应用程序。然后使用启动器中的应用程序图标重新打开它。尝试再次检查它。尝试重新启动您的计算机并再次渲染您的应用程序。经过大量的正常运行时间后,可能会有一些需要转储的累积日志数据。
不定期副业成功案例分享