上传图片时iOS应用WKWebView错误

Posted

技术标签:

【中文标题】上传图片时iOS应用WKWebView错误【英文标题】:iOS app WKWebView error when uploading image 【发布时间】:2019-10-04 19:50:18 【问题描述】:

WKWebView 中,当我通过 Ajax 使用 FormData 将图像上传到我们的服务器时,我收到了这个警告。整个过程顺利完成。

任何人都可以建议缺少的权利是什么。我已查看与 WKWebView 相关的权利

在控制台中,我看到 pid 与“webkit.uploads”相关联

“缺少必要的客户端授权” 请求原因:FinishTaskUnbounded;原因:FinishTaskUnbounded;标志:PreventTaskSuspend>

// xcode debug console on submit   
MyDomain[3002:428982] [ProcessSuspension]  0x104be68a0 - ProcessAssertion() PID 3002 Unable to acquire assertion for process with PID 3002
MyDomain[3002:427999] [ProcessSuspension] 0x104be68a0 - ProcessAssertion::processAssertionWasInvalidated()
MyDomain[3002:428982] [assertion] Error acquiring assertion: <NSError: 0x281b3b6f0; domain: RBSAssertionErrorDomain; code: 2; reason: "Required client entitlement is missing"> 
    userInfo = 
        RBSAssertionAttribute = <RBSLegacyAttribute: 0x100f2ee40; requestedReason: FinishTaskUnbounded; reason: FinishTaskUnbounded; flags: PreventTaskSuspend>;
    



// javascript upload code
var formData=new FormData();
formData.append("action", 'save');

var fileInput = document.getElementById('addImage');
if (fileInput.files && fileInput.files[0]) 
    var file = fileInput.files[0
    formData.append('messageImage', file);
    hasFile = true;


if(hasFile)
    $.ajax(
       type: "POST",
       url: "/images/save",
       data: formData,
       dataType: 'json',
       contentType: false,
       processData: false,
       success: function(result)
    );

【问题讨论】:

我确实面临同样的问题。请在找到修复程序时更新。谢谢 我无法识别缺失的权利。显然,此警告与将文件附加到 javascript FormData 对象并提交的行为有关。我测试的其他变体,例如在没有文件的情况下提交,没有产生这个警告。尽管有这个警告,我还是能够毫无问题地在应用商店上发布该应用。如上所述,上传完成没有问题。 好的。谢谢。在更安全的方面,我使用 base64 字符串并发布到服务器。 这里有同样的问题。有时应用程序似乎会被此卡住。 我在 iosandroid 上的 Ionic 应用程序中看到了同样的问题。 Android 版本在完全相同的时间点失败,但显示不同的消息。文件已上传,但某些内容阻止读取响应,导致引用为空。 【参考方案1】:

我有预感来自 wkWebView 的这个和其他错误,我想我证明了这一点。它与文件上传时间过长有关,iOS 抱怨它,并且 wkWebView 被“释放”(根据另一个线程)。就我而言,我的上传需要 5 到 13 秒。

我在 Web Worker 中实现了我的上传,结果证明这在 Cordova 上有点棘手,但是一旦我这样做了,所有问题都消失了。

【讨论】:

【参考方案2】:

所以我的修复似乎只在我使用 iOS 13.3 的开发机器上的模拟器中解决了这个问题。当我在运行 iOS 13.7 的“生产”机器上构建时,错误返回。在将文件上传到 Worker 之前,这两种环境都发生了这种情况。

Apple 似乎正在向 iOS 添加一些触发这些但尚未记录或解释的东西。这是我的新理论。

【讨论】:

以上是关于上传图片时iOS应用WKWebView错误的主要内容,如果未能解决你的问题,请参考以下文章

通过邮寄上传图片时 iOS AFNetworking 内部服务器错误 (500)

关于本地安装discuz,上传图片sever(IO) error错误

使用 Firebase 和 Swift (iOS) 上传图片

IOS设备上传图片,使用ImageIO.write 图片翻转纠正(JAVA)

使用 AFNetworking、ios 上传图片

转载JAVA秒会技术之图片上传基于Nginx及FastDFS,完成图片的上传及展示