我正在编写OS X应用程序,并希望在连接特定USB设备时打开应用程序(特别是 相机)。
根据我的研究,一个解决方案是利用launchd在USB时自动打开应用程序 通过创建具有特定条件的plist文件来连接。我什么时候能够打开应用程序 任何USB设备连接如(iPhone或Pen Drive),但无法找到方法 连接相机时打开应用程序。下面是我用于launchd的plist快照:
<key>LaunchEvents</key>
<dict>
<key>com.apple.iokit.matching</key>
<dict>
<key>com.apple.device-attach</key>
<dict>
<key>bDeviceClass</key>
<integer>0</integer>
<key>bDeviceSubClass</key>
<integer>0</integer>
<key>bDeviceProtocol</key>
<integer>0</integer>
<key>IOProviderClass</key>
<string>IOUSBDevice</string>
<key>IOMatchStream</key>
<true/>
<key>IOMatchLaunchStream</key>
<true/>
</dict>
</dict>
</dict>
我的问题是:
提前感谢您的帮助。
答案 0 :(得分:1)
分享我的研究和工作解决方案,以便其他人可以根据需要使用。
在我进一步研究之后,似乎OS X ImageCapture将设备映射到com.apple.ImageCapture2 plist文件中的自动打开应用程序路径。
如果您在终端上运行defaults -currentHost read com.apple.ImageCapture2
,您将获得类似的列表(如果该应用没有使用自动打开功能,则可能为空):
"00000000-0000-0000-0000-000004A93AAA" = {
ICADeviceTypeKey = ICADeviceTypeCamera;
autolaunchApplicationPath = "";
};
HotPlugActionArray = (
);
HotPlugActionPath = "";
LastHotPlugActionPath = "";
此处HotPlugActionPath是密钥,分配给此密钥的任何应用程序路径将在连接到系统时打开。您还可以使用persistentID字符串(00000000-0000-0000-0000-000004A93AAA)和autolaunchApplicationPath将特定应用程序分配给特定设备。我以编程方式编辑了这个plist文件并在此处指定了我的应用程序路径,它的工作原理和我一样。