2016-10-14 41 views
1

作为使用我的应用程序转换到Sierra(MacOS 10.12)的人,操作系统突然要求他们获得访问其联系人的权限。我不知道为什么这样做;它不会在任何以前的操作系统上执行。为什么Sierra要求联系人(AddressBook)权限?

更重要的是,应用程序无法访问联系人;实际上,我根本没有加载ABAddresssBook框架。我搜索了地址和联系人的来源,但没有任何结果。 Xcode不显示“功能”。我使用的唯一第三方框架是Sparkle。 (我静态链接mp4v2库,它对MacOS一无所知。)仅供参考,此应用程序作为已签名的第三方进行分发,而不是通过App Store分发。它确实有一些嵌入式命令行可执行文件(例如ffmpeg等),而不是OS X特有的。

我试图使用调试器来查看触发通知的是什么。它显示一个后台线程,其中一个块执行以获取[ABAddressBook sharedAddressBook],然后启动用户请求,但不显示谁启动该块。

任何建议在哪里看?

下面是应用程序和Sparkle的otool -L库列表。

<<App>>/Contents/MacOS/app 
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8) 
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 307.4.0) 
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.1.18) 
/System/Library/Frameworks/QTKit.framework/Versions/A/QTKit (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/Quartz.framework/Versions/A/Quartz (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 888.1.2) 
/System/Library/Frameworks/ScriptingBridge.framework/Versions/A/ScriptingBridge (compatibility version 1.0.0, current version 1.0.0) 
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 22.0.0) 
@rpath/Sparkle.framework/Versions/A/Sparkle (compatibility version 1.6.0, current version 1.11.0) 
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1349.0.0) 
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.0.0) 
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1500.0.0) 
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1348.0.0) 
/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1070.0.0) 
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 775.7.0) 
/System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore (compatibility version 1.2.0, current version 1.11.0) 

<<App>>//Contents/Frameworks/sparkle.framework/Sparkle: 
@rpath/Sparkle.framework/Versions/A/Sparkle (compatibility version 1.6.0, current version 1.11.0) 
/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1391.12.0) 
/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1229.0.0) 
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) 
/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5) 
/usr/lib/libxar.1.dylib (compatibility version 1.0.0, current version 1.3.0) 
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5) 
/System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57324.0.0) 
/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 800.0.0) 
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 601.1.43) 
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1225.0.0) 
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0) 
/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1229.11.0) 
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 726.4.0) 

````

回答

1

原来是可可伐木工人日志框架。其中一种方法要求所有类查看是否已启用日志记录,并在日志记录中执行“class_getClassMethod”。如果您使用ABAddressBook执行此操作,则会触发用户访问请求。

相关问题