问题描述
App 在后台启动并与 xpc Service 通信以使该服务不时移动鼠标。
Apple 对我的应用程序进行了审核:
指南 2.4.5(v) - 性能
您的应用需要管理员权限才能运行。
- 应用程序需要辅助功能才能运行。
资源
我们的 WWDC 2019 会议提供了有关请求用户访问的信息视频。观看 macOS 安全性进展视频。
AppDelegate.swift
func applicationDidFinishLaunching(_ aNotification: Notification) {
connection = nsxpcconnection(serviceName: "com.some.ServiceName")
connection?.remoteObjectInterface = NSxpcInterface(with: MyHelperxpcProtocol.self)
connection?.resume()
}
import Foundation
import Cocoa
@objc class MyHelperxpc: NSObject,MyHelperxpcProtocol {
func terminateHelper() {
}
/* This function triggers the dialog informing that the app would like
to control this computer using accessibility features. */
func activate(duration: TimeInterval) {
CGEvent(mouseEventSource: nil,mouseType: CGEventType.mouseMoved,mouseCursorPosition: point,mouseButton: CGMouseButton.left)?.post(tap: CGEventTapLocation.cghidEventTap)
}
}
用户现在必须解锁安全和隐私首选项并检查我的应用。 在此之后,我的应用程序现在可以毫无问题地移动鼠标了。
xpc Service Info.plist 包含:
com.apple.security.app-sandBox = 1
App Info.plist 包含:
应用程序仅在后台 = 是
问题是,我怎样才能更好地理解这个 App Store 拒绝并修复它?
我的应用程序和 xpc 服务已使用 Developer ID 应用程序签名。
我使用的是 Xcode 12.4、macOS Big Sur 和 swift 5,没有使用框架。
解决方法
在向 Apple 审查委员会上诉后,结果证明使用辅助功能移动鼠标是不合适的。
我了解,以这种方式使用辅助功能会利用最初旨在让人们更容易访问您的应用的功能。
他们还写道,将调查具有相同功能的其他应用,因为它们也可能被认为不合适。