- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
免责声明:我是 MacOS/Xcode 的新手
我想在 Swift 中构建一个简单的 XPC 启动代理(即:在 ~/Library/LaunchAgents
中)但我找不到太多文档。
我从 Xcode XPC 模板开始,但我不知道这对我的 Swift 项目来说是否是个好主意。
我注意到我还应该有 ~/Library/LaunchAgents/com.demo.myservice.plist
版本:
- 苹果操作系统:10.13.2
-Xcode:9.2
创建 Xcode XPC 项目的说明:
myserviceProtocol.h
、myservice.h
、myservice.m
、main.m
和 Info.plist
myserviceProtocol.swift
import Foundation
@objc(myserviceProtocol) protocol myserviceProtocol {
func ping()
}
myservice.swift
import Foundation
class myservice : NSObject, myserviceProtocol {
func ping() {
print("ping")
}
}
main.swift
import Foundation
class ServiceDelegate : NSObject, NSXPCListenerDelegate {
func listener(_ listener: NSXPCListener, shouldAcceptNewConnection newConnection: NSXPCConnection) -> Bool {
newConnection.exportedInterface = NSXPCInterface(with:myserviceProtocol.self)
let exportedObject = myservice()
newConnection.exportedObject = exportedObject
newConnection.resume()
return true
}
}
// Create the listener and resume it:
//
let delegate = ServiceDelegate()
let listener = NSXPCListener.service()
listener.delegate = delegate;
listener.resume()
Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>com.demo.myservice</string>
<key>ProgramArguments</key>
<array>
<string>myservice</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
我将 Info.plist
复制到 ~/Library/LaunchAgents/中:cp ~/Documents/myservice/myservice/Info.plist ~/Library/LaunchAgents/com.demo .myservice.plist
我使用 id -u
然后我尝试从命令行执行它(因为它似乎没有从 Xcode 执行任何操作):
sudo launchctl debug user/501/com.demo.myservice /Users/olivier/Library/Developer/Xcode/DerivedData/myservice-hbwefcgibyqbajguvblgcmxsnrmd/Build/Products/Debug/myservice.xpc
Configuration failed: 113: Could not find specified service
Could not find service "com.demo.myservice" in domain for uid: 501
我不太确定我在做什么。我使用 XPC
模板来创建我的 swift XPC 是否正确。
最佳答案
如果您希望您的 Agent 提供 XPC 服务,您需要将其公开为 Mach 服务。
您初始化监听器的方式是针对 XPC 服务(注意大写 S),XPC 服务是一个包,它是您应用程序包的一部分,位于 Contents/XPCServices/
目录中.
总而言之,您必须:
1.) 创建一个通过 mach 服务公开 XPC 服务的代理。你的听众看起来像:
let listener = NSXPCListener(machServiceName: "com.rderik.exampleXPC" )
2.) 要使用代理的服务,您需要建立与该 mach 服务的连接。
let connection = NSXPCConnection(machServiceName: "com.rderik.exampleXPC")
希望对您有所帮助。
如果您想阅读更多内容,我在这里写了一篇关于如何做到这一点的教程:
https://rderik.com/blog/creating-a-launch-agent-that-provides-an-xpc-service-on-macos/
关于swift - Xcode+ swift +XPC : How to start and deploy a Swift XPC target on MacOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48412745/
我正在尝试创建 XPC 服务,但似乎没有创建该服务。在我的服务的 main 方法中,我做的第一件事是对 syslog 进行一些调用,以便我可以查看服务是否开始运行。这些日志消息永远不会出现在日志中。
我正在开发一个应用程序,其中我从主应用程序中分离出了两个不同的 XPC 服务。我希望 XPC 服务与其他 XPC 服务进行通信,其他 XPC 服务将进行一些处理并将数据返回到第一个服务,第一个服务将进
我正在开发一个应用程序,其中我从主应用程序中分离出了两个不同的 XPC 服务。我希望 XPC 服务与其他 XPC 服务进行通信,其他 XPC 服务将进行一些处理并将数据返回到第一个服务,第一个服务将进
免责声明:我是 MacOS/Xcode 的新手 我想在 Swift 中构建一个简单的 XPC 启动代理(即:在 ~/Library/LaunchAgents 中)但我找不到太多文档。 我从 Xcode
在我的主应用程序包中,我包含了支持 XPC 服务。应用程序是沙盒的,一切都工作得很好,除了当我从 XPC 服务应用程序调用 [[NSUserDefaults standardUserDefault]
我按照 Apple 推荐的高风险操作实现了 XPC。问题是,当 XPC 崩溃时,它会向用户显示崩溃对话框。我知道这段代码有时会崩溃,这就是我首先实现 XPC 的原因。那么有什么办法可以抑制崩溃报告吗?
我正在尝试将 Wine 1.7.13 移植到现代 Cocoa 中。我正在考虑在 XPC 服务的进程中运行 Windows 二进制文件,以实现安全隔离和防崩溃。然而,有一个问题:据我所知,XPC 服务是
我正在使用 C 接口(interface)来实现 XPC 服务;顺便说一句,除了以下问题之外,我的 XPC 服务运行得非常好。 有一天我尝试通过 XPC 发送一个“大”数组; 200,000 个条目的
这不是一个与代码相关的问题,因为我在过去 2 小时内没有添加任何新代码,但我正在使用这个 cocoapod ( https://github.com/ealeksandrov/EAIntroView)
我正在尝试检测是否通过错误处理程序安装了辅助工具,但错误 block 不会被执行,成功 block 也不会执行。当 helper 已经安装时,它工作正常。它只是在有错误时不捕获错误。在文档中总是执行这
我有一段代码使用 NSURLsession 触发几个请求,有时我在 xcode 的调试器上收到以下消息 received XPC error Connection interrupted for me
是否可以在 XPC 服务中使用 AVFoundation 和 OpenCV?我有这么简单的代码 #include #import @interface AppDelegate(){ cv:
我在从 XPC 服务的 block 回调中传输 NSAttributtedString 时遇到了很大的问题。 我试图将基本字符串返回为: NSDictionary *arrayComa = @{NSF
我有一个 LaunchAgent,使用 HockeyApp 进行崩溃报告。现在我注意到 HockeyApp 没有报告未捕获的异常,就像在普通的 macOS 应用程序中一样。 例如: - (void)u
我的 cocoa 应用程序设计是一个 .app(UI)和三个 XPC 服务。 主应用程序需要文件只读才能显示powerbox并在 UI 中显示所选路径 com.apple.security.app-s
我有一个窗口应用程序,为了添加一些功能,我需要另一个应用程序,该应用程序在登录时启动并将数据同步到服务器(如果可用)。 我尝试过 NSDistributionNotification,但它在沙盒应用程
我成功创建了 XPC 服务并通过从主应用程序发送消息与 XPC 服务进行通信。但我想知道的是,是否可以发起从XPC服务到主应用程序的通信。 Apple documentation说XPC是双向的。如果
我最近升级到 Swift 5、Xcode 版本 10.2 (10E125),在修复了正在进行的应用程序上的一些编译问题后,看到了这个新的、以前从未见过的请求。通过直接搜索,我在我的项目中找不到任何证据
我的应用程序包含一个内核扩展作为关键组件。该内核扩展由系统控制套接字控制。出于安全原因,该系统控制套接字仅接受来自 super 用户的连接。 为了从我的常规非 super 用户应用程序进行通信,我有一
我正在尝试获得一个简单的命令行 Swift 应用程序,稍后将用于与 Chrome\Firefox 进行本地消息传递,以与工作场所的其他应用程序进行通信。 主 UI 应用程序(即 XPC 服务器): /
我是一名优秀的程序员,十分优秀!