问题描述
我正在尝试从 macOS 上的 JavaFX 应用程序中访问 UNUserNotificationCenter
以发送用户通知。因此,我使用 jfa 它是 jna 的包装器来与苹果基础框架进行交互。有了这个,我的代码基本上如下所示:
NSBundle nsBundle = NSBundle.bundleWithPath("/System/Library/Frameworks/UserNotifications.framework");
nsBundle.load();
ID unUserNotificationCenter = nsBundle.classNamed("UNUserNotificationCenter");
// This call fails:
ID currentNotificationCenter = Foundation.invoke(unUserNotificationCenter,"currentNotificationCenter");
访问和加载 UserNotifications 框架运行良好,但是我无法获得 currentNotificationCenter
,因为此调用失败并出现以下错误:
2021-02-10 21:35:50.346 java[76301:37176563] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException',reason: 'bundleProxyForCurrentProcess is nil: mainBundle.bundleURL file:///Users/jan/.sdkman/candidates/java/11.0.8-amzn/bin/'
*** First throw call stack:
(
0 CoreFoundation 0x00007fff38d5cb57 __exceptionPreprocess + 250
1 libobjc.A.dylib 0x00007fff71ba15bf objc_exception_throw + 48
2 CoreFoundation 0x00007fff38d85d08 +[NSException raise:format:arguments:] + 88
3 Foundation 0x00007fff3b477ead -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 191
4 UserNotifications 0x00007fff468a7a66 __53+[UNUserNotificationCenter currentNotificationCenter]_block_invoke + 911
5 libdispatch.dylib 0x00007fff72cf0658 _dispatch_client_callout + 8
6 libdispatch.dylib 0x00007fff72cf17de _dispatch_once_callout + 20
7 UserNotifications 0x00007fff468a76d5 +[UNUserNotificationCenter currentNotificationCenter] + 101
8 jna10020548276359543057.tmp 0x000000010c3c0e74 ffi_call_unix64 + 76
9 ??? 0x0000700008150ca8 0x0 + 123145437908136
)
我尝试在不同的时间访问通知中心,例如应用程序启动时或例如当用户单击按钮以确保(希望)应用程序已完全加载时。
然而,一切都导致了同样的错误。我在 Objective-c 的原生 macOS 应用程序中尝试了相同的代码,一切都运行良好。
这是 100% 可重现的,所以我猜我在这里做错了什么或遗漏了一些必需的步骤。有没有人知道可能导致这种情况的原因?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)