问题标签 [xpc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
454 浏览

xcode - XPC remoteObjectWithErrorHandler 不会抛出错误

我正在尝试检测是否通过错误处理程序安装了辅助工具,但错误块不会被执行,成功块也不会执行。当助手已经安装时,它工作正常。它只是不会在有错误时捕获错误。在文档中,这两个块中的一个总是被执行

0 投票
4 回答
3021 浏览

objective-c - 使用 NSXPCConnection 时如何同步等待回复块

我正在使用 NSXPCConnection 并且我的一个接口调用有一个回复块,如下所示:

我这样称呼:

我的理解是回复块异步运行,并且可能在方法返回之后运行。

我想同步测试返回码,最好的方法是什么?


为了进一步阐明上面的代码片段:对象是使用该方法proxy从对象获得的远程对象。这是一个重要的细节,因为这会影响调用回复块的队列。NSXPCConnectionremoteObjectProxy

0 投票
0 回答
75 浏览

swift - 将具有循环引用的对象传递给 XPC 服务

我想将带有循环的对象传递给 XPC 服务。

假设我有一个对象类Course a Teacher和一个Student数组。学生对老师也有参考。

XPC 协议签名包含三个对象的任意组合。NSSecureCoding处理此类引用时如何实施?

0 投票
0 回答
287 浏览

swift - XPC 长期运行服务

我正在为 OS X 编写一个客户端-服务器应用程序。该服务需要永远运行,或者至少尽可能接近。:-)

过去,我在 Objective-C 应用程序中使用“经典”分布式对象相当成功,但这次我想使用 Swift 和新的闪亮 IPC 技术,XPC!

所以,这是我的问题:

当我创建一个 XPC Mach 服务(它需要 root 权限)并通过 launchd 启动它时,该过程似乎会为每个新的传入连接重新启动。我之前已经通过 launchd 编写过服务,但从未遇到过这个问题。是否有特定于使用 XPC 导致这种情况的原因?

我的偏好是使用高级 IPC 机制,而不是像 Unix 域套接字这样更基本的机制,但如果有必要,我很乐意降到那个级别。

0 投票
1 回答
1202 浏览

swift - macOS XPC 服务未启动

我有一个桌面 Swift 应用程序,其中包含一个已停止工作的 XPC 服务。从那以后我设法让它工作了一次,但它又被打破了。我尝试将代码简化为最简单的情况,但感觉好像有一个我不明白的因素。

初始化代码:

测试功能:

如果我打印uploaderRemoteObject我得到<_NSXPCDistantObjectWithError: 0x618000083980>这可能是正常的,但实际的 XPC 进程永远不会启动(当然也不会调用远程方法)。

服务协议是:

XPC main.swift 的内容是:

请注意,我确信这XPCBundleID是正确的,并且我正在为 Mac App Store 签署所有内容。有任何想法吗?

0 投票
1 回答
1512 浏览

ios - 崩溃:XPC API 滥用:连接过度恢复

Crashlytics报告了我们的 iOS 应用程序崩溃:

设备:iPhone 6+
iOS:10.0.1

堆栈跟踪是:

关于如何重现它的任何想法?
关于什么会造成崩溃的任何想法?

0 投票
0 回答
671 浏览

swift - 如何使辅助应用程序与主包中的 XPC 服务通信

我制作了一个 osx 应用程序,其中包含一个普通应用程序、一个存储在“Contents/Library/LoginItems”目录中的登录项和一个存储在“XPC Services”目录中的 XPC 服务。

我的主应用程序可以与 XPC 服务进行通信,如下所示。

它工作正常。

但是登录代理应用程序无法工作。它报告它无法与帮助应用程序通信。我以为它找不到 XPC 服务。

在将 XPC Service 二进制文件嵌入到代理程序包中后,我发现它确实有效。但是同一个包中会有两个 xpc 二进制包。我认为这可能不是一个优雅的解决方案。

有没有其他方法可以解决这个问题?

0 投票
0 回答
1011 浏览

swift - iOS 10 App XPC 连接中断(在模拟器中工作正常)

我们刚刚更新到 swift 3 并正在尝试运行 ios 10 的代码。一切正常,但现在我们遇到了一个有趣的错误。该代码可以在模拟器上找到,但是当我们尝试构建到设备时,在视图之间切换时会出现以下错误:

2016-10-11 23:04:23.574944 Glancer[6526:2174852] XPC 连接中断 2016-10-11 23:04:23.575269 Glancer[6526:2174950] [Common] 由于没有系统应用程序而终止。

任何想法如何解决这个问题?

0 投票
2 回答
1729 浏览

synchronization - Finder Sync Extension 和 Main App 应该如何通信?

我的用例:我有一个用于同步文件的“MainApp”。我希望“MainApp”处理所有有关同步的服务器调用和其他 REST API 调用,例如文档共享等。

另一方面,我会有一个 Finder 同步扩展,它会显示同步状态图标覆盖。它还将有一个文件上下文菜单项“共享”,它将显示一个共享对话框,用户可以在其中选择与谁共享文件。

问题:

  1. FinderSyncExtension 和 MainApp 应该如何通信?是否应该使用 XCP,如果是,是否可以使用两种方式进行通信?例如 MainApp 通知 Finder 它应该刷新,因为一些文件已经同步,Finder 通知 MainApp 它应该执行“共享”操作。

  2. 谁应该展示“分享”对话框?单击 FinderSyncExtension 的“共享”菜单项时,应显示共享表单。这应该由 finder 扩展程序或 MainApp 显示(假设 FinderExtension 通知它单击了“共享”项)。

如果 Finder 扩展应该呈现表单,那么 FinderExtension 还应该从服务器检索数据(例如用于共享的联系人和组),我不确定 Finder 扩展是否应该对服务器执行任何网络调用。

研究这个话题,我发现了几种方法:

  1. FinderSyncExtension 和 MainApp 不直接通信。相反,FinderExtension 从数据库中读取数据以正确显示徽章。在这种情况下,尚不清楚 FinderExtension 在同步完成时应该如何更新,或者它应该如何通知 MainApp 执行某些操作。
  2. XPC 通讯。我猜 FinderExtension 可以发起对 MainApp 的调用,但预期的方向相反吗?
  3. macOS 进程之间是否存在某种 NotificationCenter?我尝试使用NSWorkspace.sharedWorkspace.notificationCenter并使用,NSDistributedNotificationCenter.defaultCenter但它们似乎没有在 MainApp 中传递通知。
  4. 像 Seafile 项目中的 mach_ports?
0 投票
2 回答
1207 浏览

macos - XPC 到 XPC 通信

我正在开发一个应用程序,我从主应用程序中分离出两个不同的 XPC 服务。我希望 XPC 服务与其他 XPC 服务进行通信,该服务将进行一些处理并将数据返回给第一个服务,第一个服务将进行自己的处理,然后将数据返回给主应用程序。我什至尝试过这个,但是服务之间的通信给出了“无法与帮助应用程序通信”的错误。

我的问题是这是否可能?如果是,那需要什么?

任何帮助,将不胜感激。