【发布时间】:2018-06-05 07:50:55
【问题描述】:
我有一个可以在 iOS 和 Android 设备上安装和运行的 Meteor Cordova 应用程序。但是,仅在 iOS 上,并且只有当 iPhone 没有插入 xCode 时,所有的图形资源都会从应用程序中消失并显示为空 -- 没有损坏的图片或框轮廓或不同的颜色,只是背景的颜色,好像什么都没有。当您盯着当前屏幕时,它们不会消失,您必须转到另一个屏幕或离开并返回应用程序,但一旦发生,所有图形都消失了。它甚至不影响页面内容的格式。只是噗,没有更多的图形。
由于它仅在设备上并且插入 xCode 时不会发生,因此我无法获得任何可能的错误消息。另外,该应用程序仍然可以正常工作。如果我杀死应用程序并重新启动它,图标都会回来。
也许这是 Cordova 为解决 WKWebView-no-local-assets 问题所做的内部 Web 服务器的一种行为?也许这是一个代码问题(我遇到了另一个仅限 iOS 的问题,即 iOS 和 Android 行为方式不同的字符串与数字问题)。但由于我只能在设备上重现它,而无需连接调试,我希望有人知道答案。
如果有线索,我会将所有图形保存在 /public/images 中。但它不会在 Android 上发生的事实确实是一个难题。
更新:
更多信息。我使用 Xcode 检查了控制台日志,发现这些日志条目清楚地表明图像资源正在被成功检索。
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6275] <Notice>: TIC TCP Conn Event [162:0x12bd42470]: 1 Err(0)
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6275] <Notice>: TIC TCP Conn Connected [162:0x12bd42470]: Err(0)
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6275] <Notice>: TIC TCP Conn Cancel [162:0x12bd42470]
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6275] <Notice>: TIC TCP Conn Destroyed [162:0x12bd42470]
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.WebContent(WebKit)[6276] <Notice>: 0x10e2f1148 - WebResourceLoader::didReceiveResponse: (pageID = 2, frameID = 1, resourceID = 239, status = 200)
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.WebContent(WebKit)[6276] <Notice>: 0x10e2f1148 - WebResourceLoader::didReceiveData: Started receiving data (pageID = 2, frameID = 1, resourceID = 239)
Jan 4 15:06:00 Andys-iPhone-7 com.apple.WebKit.WebContent(WebKit)[6276] <Notice>: 0x10e2f1148 - WebResourceLoader::didFinishResourceLoad: (pageID = 2, frameID = 1, resourceID = 239)
但是当问题发生时,日志是这样的:
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6252] <Notice>: TIC TCP Conn Event [141:0x159e0d9f0]: 3 Err(61)
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6252] <Error>: TIC TCP Conn Failed [141:0x159e0d9f0]: 1:61 Err(61)
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6252] <Notice>: TIC TCP Conn Cancel [141:0x159e0d9f0]
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6252] <Notice>: TIC TCP Conn Destroyed [141:0x159e0d9f0]
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(WebKit)[6252] <Notice>: 0x103184b40 - NetworkResourceLoader::start: Retrieving resource from cache (pageID = 2, frameID = 1, resourceID = 224, isMainResource = 0, isSynchronous = 0)
Jan 4 14:31:00 Andys-iPhone-7 com.apple.WebKit.Networking(CFNetwork)[6252] <Error>: HTTP load failed (error code: -1004 [1:61])
-1004 错误是无法连接到主机。所以,这个应用程序成功地从内部现有的内容服务器获取图像,但几分钟后就中断了。
有人有什么想法吗? Meteor 1.6,最新的 xCode,iOS 10,顺便说一句。谢谢!
【问题讨论】:
-
我添加了日志信息,这使得这看起来像是 Meteor 内部内容服务器中的故障,该服务器允许提供本地资产。
-
另外,如果你在meteor中安装了一个非标准版本的插件,然后删除它(就像我在meteor 1.6.1被报道修复它之后所做的那样),meteor不会注意缺少并安装插件的新默认版本。我采取了为流星显式安装所有科尔多瓦插件的方法。 1.6.0版本的meteor-webapp确实解决了这个问题,如果你能安装标准版的插件,下面的答案就不应该使用了。