Objective c PyObjC“;此应用程序不允许发送通知”;

Objective c PyObjC“;此应用程序不允许发送通知”;,objective-c,python-3.7,macos-mojave,pyobjc,Objective C,Python 3.7,Macos Mojave,Pyobjc,我正在尝试测试一个简单的Python脚本以发送macOS通知: import UserNotifications def notif_callback(err): print("Error in notification callback:",err) def auth_callback(granted, err): print("Granted: ",granted,) print("Error in authori

我正在尝试测试一个简单的Python脚本以发送macOS通知:

import UserNotifications

def notif_callback(err):
    print("Error in notification callback:",err)

def auth_callback(granted, err):
    print("Granted: ",granted,)
    print("Error in authorization request: ",err)

content=UserNotifications.UNMutableNotificationContent.alloc().init()
content.setTitle_("Test")
r=UserNotifications.UNNotificationRequest.requestWithIdentifier_content_trigger_('test_notification',content,None)


c=UserNotifications.UNUserNotificationCenter.currentNotificationCenter()

c.requestAuthorizationWithOptions_completionHandler_(0b111111,auth_callback)

c.addNotificationRequest_withCompletionHandler_(r,notif_callback)
但是,当我试图运行该程序时,它会出现以下错误

Granted: False
Error in authorization request:  Error Domain=UNErrorDomain Code=1 "Notifications are not allowed for this application" UserInfo={NSLocalizedDescription=Notifications are not allowed for this application}
Error in notification callback: Error Domain=UNErrorDomain Code=1 "Notifications are not allowed for this application" UserInfo={NSLocalizedDescription=Notifications are not allowed for this application}

我没有看到任何来自我的系统的通知授权,操作系统似乎自动拒绝了请求。在系统首选项中,Python已被授予所有通知权限。我在这里遗漏了什么?

只有代码签名的应用程序才有权通过
联合国通知中心
发送用户通知。我认为此要求是新的,不适用于
NSUserNotificationCenter


编辑:这实际上很容易实现。您只需要一个经过签名的Python框架构建,由官方安装程序提供。通过自制或大多数其他渠道安装的AFAIK未经签名。

谢谢您提供的信息。我在哪里可以找到你提到的关于这条规则的内容?我不确定这是否在任何地方都有记录。使用Xcode构建的应用程序通常都是经过签名的,即使只有一个特别的证书,所以在苹果开发者论坛上它可能不会成为一个问题。在所有位置的中都有一条注释:“对于MacOS应用程序,要显示权限对话框,您必须对MacOS应用程序进行签名,即使在调试模式下本地构建。”这是正确的。示例OP从Python.org在MacOS Python上发布了“just works”,如果有人有有效答案,请发布: