小编byb*_*byb的帖子

如何避免 MV3 Chrome 扩展中同时存在多个 Service Worker?

我正在将 Chrome 扩展程序从清单版本 2 (MV2) 转换为清单版本 3 (MV3)。在MV2版本中,后台页面脚本在扩展中具有突出的作用:启动时,后台脚本从IndexedDB读取大量数据到RAM,然后(在运行期间)处理注入到页面中的内容脚本的查询用户访问的。要迁移到 MV3,MV2 后台脚本提供的功能现在需要转换为由 MV3 Service Worker 执行。

由于将数据从 IndexedDB 读取到 RAM 的速度很慢(相对而言),因此根据内容脚本的查询动态执行此操作是不可行的;相反,它必须由服务工作线程执行一次,然后保留数据,以便为来自内容脚本的传入请求提供服务。因此,Service Worker 应该是持久的(并且不会被浏览器终止);为此,至少存在一种解决方案:/sf/answers/4663278861/

然而,在某些情况下(我无法准确指出在什么情况下),当内容脚本向 Service Worker 发送消息时,Chrome 会启动 Service Worker 的第二个副本,即使第一个副本仍在运行。活着,并且两个服务人员共存了一段时间。是否有某种方法可以避免这种情况,并确保如果服务工作人员仍然活着(在内存中),则任何活动(通过内容脚本)都不会导致创建服务工作人员的第二个副本,而是创建内容的所有请求因此,脚本将由先前存在的服务工作者处理?

谢谢你的帮助!

google-chrome-extension service-worker chrome-extension-manifest-v3

9
推荐指数
0
解决办法
1285
查看次数

Mac App Store 出现 SKPaymentTransactionStateFailed 并出现未知错误的原因?

我正在制作一个 Mac OSX 应用程序,可以通过 Mac App Store 下载。该应用程序使用应用程序内购买来购买单个非消耗品(解锁该应用程序的专业版)。购买机制在我所有的机器上运行良好(无论是在测试还是在生产中,我什至花了自己的钱在商店中测试该应用程序!)许多客户成功购买了专业版。

然而,一些客户在尝试购买时也报告了问题,并且查看可用的匿名使用数据表明很大一部分客户可能遇到了麻烦。几乎在所有情况下,似乎

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
Run Code Online (Sandbox Code Playgroud)

被调用并transaction.transactionState设置SKPaymentTransactionStateFailed为 相应的transaction.error设置为Domain=SKErrorDomain Code=0 "Unknown Error." NSLocalizedDescription=Unknown Error.

应该如何调试这个?哪些情况可能导致此错误?最好有一份清单,这样人们就知道可以做什么。

例如,在我的机器上,尝试购买,然后在提示输入 Apple ID 密码时,如果单击“取消”,则会导致上述错误。还有哪些其他原因?(既然有几个用户报告了问题,想必他们并没有简单地决定取消购买......)

更新:使用“Little Snitch 3”软件,我观察到我的应用程序(从 Mac App Store 安装的生产应用程序)联系了服务器 sandbox.itunes.apple.com(通过 storeinappd 或类似的东西),此外还有一堆其他苹果服务器。生产应用程序是否应该尝试连接到沙箱?这是否表明出现了问题?

谢谢你的帮助!我是新来的,但我会尽力提供更多信息(如果需要)并回复评论和答案!

in-app-purchase mac-app-store

5
推荐指数
0
解决办法
675
查看次数