我使用分布式通知中心在 safari 扩展应用程序和 MacOS 应用程序之间传输数据。 我使用DistributedNotificationCenter.default().addObserver和特定的通知名称,并使用相同的名称从 MacOS 应用程序发布通知DistributedNotificationCenter.default().postNotificationName

我不断attempt to post distributed notification 'nameofnotification' thwarted by sandboxing.

我在苹果文档中看到

沙盒应用程序只有在不包含字典时才能发送通知。 如果发送应用程序在应用沙盒中,则 userInfo 必须为零。

我的用户信息不是零,但这在以前版本的 Mac 上运行良好。 我错过了什么? 这是相对较新的吗?

在扩展程序和应用程序之间进行通信的替代方法是什么? XPC 服务会起作用吗?

更新

我已经按照苹果的文档实现了一个 XPC 服务,但是当我从 safari 扩展中调用它时,我收到此错误Couldn't communicate with a helper application. 我可以从嵌入 XPC 服务的应用程序中毫无问题地调用它。

我试图:

  • 将服务复制到扩展的Contents/XPCServices
  • 添加一个应用程序组,并使用let connectionXPC = SXPCConnection.init(serviceName:"XXXXXXX.com.bundlename.XPCService")而不是let connectionXPC = NSXPCConnection.init(serviceName: "com.bundlename.XPCService")其中 XXXXXXX 是应用程序组。

关于如何从扩展应用程序正确使用 XPC 服务的任何想法,或任何其他方式在沙盒扩展程序和应用程序之间进行通信和发送数据。

#1楼 票数:0 已采纳

在这种情况下 XPC 将不起作用。 与新型 Safari 扩展的通信应通过SFSafariExtensionHandler子类执行。

建议通过 Xcode 对应的模板创建 Safari Extension,所有重要的设置、Info.plist 字段和基础结构都会为您设置。

请参阅官方构建 Safari 应用程序扩展中的良好文档详细信息

  ask by enzo translate from so

未解决问题?本站智能推荐:

1回复

最小化的macOS应用程序+分布式通知中心(macOS上的后台模式)

我已经实现了一个 macOS 应用程序 + 扩展。 扩展程序可能会通过 DistributedNotificationCenter.default() 和 postNotificationName(_ name: ...) 向应用程序发送通知。 问题与 macOS 上的应用程序生命周期有关 - 如果
2回复

新项目使用SwiftUI、XCode12和Catalina失败

我正在尝试创建一个新的 XCode 项目,全新的,我可以在模拟器上运行它,但在画布上它说: Cannot preview in this file - active scheme does not build this file如果在Cannot preview in this file - act
1回复

将macOS更新为Catalina后,cocoapods中的pod安装无法正常工作

在特定的xcode工作区文件夹执行$pod install时, 终端显示: ... usr/bin/ruby: bad interpreter: No such file or directory ... 无法更新Podfile列表中列出的任何Pod。 这与可可足类问题有关吗?
1回复

尝试使用Swift在macOS中自定义通知

我正在使用 macOS 10.5.6 并且我正在尝试显示自定义通知。 我正在使用UNNotificationAction为通知设置一个下拉菜单,并使用UNNotificationCategory来保存它。 我可以正确收到通知。 显示标题和正文,但通知的弹出菜单显示在标记为“操作”的按钮下。 我想要发
1回复

Swift:如何使用SwiftUI将“acceptsFirstMouse”应用于应用构建?

假设我有一个MacOS(Catalina)应用程序。 此应用未隐藏。 但是又激活了另一个应用程序(位于最前/最前) 我想单击按钮/任何其他视图(我正在使用swiftUI,因此都是视图) ,以防单击我的应用程序。 我怎样才能做到这一点? UPD:如何使用SwiftUI将“ acceptsFirstM
1回复

NSDistributedNotifications不分布在(相同)应用程序的实例之间

在10.7.2上,我很难使标准的NSDistributedNotifications开箱即用。 即使回到刚才的简单代码( https://github.com/dirkx/Example-NSDistribtuedNotification-Failing的完整XCode版本),我也会得到如下
1回复

Bootstrap导航栏下拉菜单不适用于Catalina?

我们正在使用引导程序作为带有下拉菜单的导航栏,它在其他浏览器中运行良好,但在 Catalina 上的 Safari 13 中运行良好(但它在具有早期操作系统的 Safari 13 中运行!)。 光标看到一个链接,但单击时没有任何反应,菜单未打开。 仅供参考,这不是一个在线网站,html 文件存储在本
1回复

MysqldResource不适用于MacOSCatalina

自从将我的操作系统升级到 Mac Catalina 后,在尝试运行以下命令时出现以下错误: 看起来问题的根源在于依赖“mysql-connector-mxj-db-files”具有 32 位格式的二进制文件,而 catalina 停止支持它。 这是我得到的错误: 有谁知道 mysql-connect