如何修复 macOS 的 AppStore 拒绝“您的应用程序请求管理员访问权限才能运行”

问题描述

我目前正在开发一个包含嵌入式 xpc 服务的应用。

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()
}

MyHelperxpc.swiftxpc 服务目标)

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)
    }
}

调用“激活”功能时,将显示此对话框:

Accessibility Dialog

用户现在必须解锁安全和隐私首选项并检查我的应用。 在此之后,我的应用程序现在可以毫无问题地移动鼠标了。

Accessibility Check

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 审查委员会上诉后,结果证明使用辅助功能移动鼠标是不合适的。

我了解,以这种方式使用辅助功能会利用最初旨在让人们更容易访问您的应用的功能。

他们还写道,将调查具有相同功能的其他应用,因为它们也可能被认为不合适。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...