您好,感谢您的宝贵时间。
我正在开发一个 iOS 应用程序,它具有内容拦截器作为其功能之一。为此,我们有一个用户可以随意启用/禁用的预定义规则列表,以及输入自定义规则的选项。
每当发生更改(启用、禁用、添加或删除)时,我都会获取所有规则并重新创建 JSON 文件,每 150K 规则一个文件(我们有多个内容阻止程序)。大多数用户只需要一个 JSON 文件。
问题
大多数时候,它运作良好。内容阻止程序重新加载,我可以在 Safari 中验证它是否正常工作。
但是,有时在调用时SFContentBlockerManager.reloadContentBlocker(withIdentifier:completionHandler:)
,它会返回以下错误:
Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.apple.SafariServices.ContentBlockerLoader" UserInfo={NSDebugDescription=connection to service named com.apple.SafariServices.ContentBlockerLoader}
本地化描述:Couldn’t communicate with a helper application
.
找不到发生这种情况的原因。以前的一些研究表明这可能与应用程序组有关,但我验证了它们并且它们设置正确(即使因为阻止程序重新加载大部分时间都有效)。
我在生产中看到了许多这样的错误(添加了一个日志)。
谢谢您的帮助。
更新
不确定,但我认为这可能与扩展中的内存有关。当 JSON 文件大约 12mb 时,我会更频繁地收到错误。
现在,如果我限制为 10mb,我不会再收到错误(到目前为止)。