【问题标题】:How to get icon for network computer ( smb/afp ) on macOS based on type如何根据类型在 macOS 上获取网络计算机 (smb/afp) 的图标
【发布时间】:2017-11-14 17:49:08
【问题描述】:

是否可以在 macOS 下获取网络计算机/IP 地址的图标,以便 iMac 具有 iMac 图标等?

我正在使用NSNetServiceBrowser 获取可用服务,但我不知道如何像官方 Finder 应用程序那样获取图标。 Finder 识别 iMac、MacBookPro 等的图标。谢谢。

【问题讨论】:

  • 我不知道 Finder 是如何做到的,但一种解释是 Finder 可以将 MAC 地址映射到设备类型。但此信息仅供 Apple 使用。
  • 我已经研究了从 MAC 地址获取类型的可能性,但它看起来很复杂。 apple.stackexchange.com/a/50678我希望一些“隐藏”的api可以解决这个问题。

标签: objective-c macos


【解决方案1】:

我没有适合您的有效解决方案,但我发现您的问题还没有引起太多关注,所以也许我可以为您指明正确的方向。

Finder 查找服务,它会检查找到的服务是否有与之关联的“设备信息”。这是通过 Bonjour 完成的,寻找 _device-info._tcp 伪服务。查找设备信息可能会返回指示 Gizmo 模型 ID 的 Bonjour TXT 记录。如果 Finder 成功获取此信息,则它会相应地分配一个图标,否则,它会选择一个通用图标。

图标本身似乎存储在这里:/System/Library/CoreServices/CoreTypes.bundle(至少在我的 10.13 机器上)。检查该捆绑包上的 Info.plist 以及其中包含的其他捆绑包,您可以找到设备类型和图标之间的映射。

有一些帖子讨论了如何自定义为某些设备显示的图标:

Add custom network device icons in Mac OS X Finder?

Can you use Bonjour for Windows to broadcast a different icon than the Bluescreen?

我尝试按照this post 中的步骤检查网络上某些 Apple 硬件所宣传的型号名称,但无法使其正常工作(使用dig 工具或NSNetService)(尽管我承认我对NSNetService 并不十分努力,因为我不熟悉它)。

This thread 讨论了潜在的问题和解决方案,但是尽管启用了 SMB 和基于 TCP 的 AFP,dig 工具对我不起作用。

所有这些线程都相当老了,尽管链接的 SO 帖子中的评论表明这至少在 Sierra 时仍然有效。

祝你好运!

【讨论】:

  • 谢谢,这正是我想要的。不幸的是,我没有查找关于 _device-info._tcp 的旧答案,真可惜。
猜你喜欢
  • 2022-07-14
  • 2021-12-19
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 2011-02-03
  • 1970-01-01
  • 2011-11-04
相关资源
最近更新 更多