代码之家  ›  专栏  ›  技术社区  ›  Andrey Tarantsov

将Cocoa实用程序应用程序拆分为助手二进制+主应用程序二进制的利弊?

  •  3
  • Andrey Tarantsov  · 技术社区  · 6 年前

    有两种方法:

    LSUIElement=YES ,使用 TransformProcessType 根据需要显示和隐藏停靠图标。

    B助手工具执行实际的应用程序功能,管理菜单图标,并始终在中运行 LSUIElement 背景模式。主应用程序显示配置UI,仅在必要时启动。

    该应用程序目前不支持。我注意到许多长期运行的实用程序应用程序都有单独的助手二进制文件,基本上都是B。我的Mac电脑上的例子包括 Paste Helper , TimingHelper , Discord Helper , CCC Helper 1Password Extension Helper

    因此:

    1. A和B的优缺点是什么,即为什么有些人选择B而不是A?现在需要获得一些功能吗?

    2. 一个人使用什么API来创建这样的助手?旧式授权API似乎已被弃用,XPC似乎不允许助手应用程序在启动时启动(甚至比主应用程序还长可能有黑客行为)?

    1 回复  |  直到 6 年前
        1
  •  2
  •   James Bucanek    6 年前

    我怀疑这么多开发人员选择选项B的原因是因为这种安排现在通过“登录项”功能被烘焙到macOS中。

    简而言之,您的主应用程序嵌入了第二个(助手)应用程序,该应用程序被配置为“登录项”。macOS检测到这一点,并自动将您的助手应用程序添加到用户的登录项目中。您可以使用 SMLoginItemSetEnabled(...)

    Daemons and Services Programming Guide .

    我自己从来没有这样做过(我现在安装后台应用程序作为用户代理,我可以这样做,因为我没有沙盒应用程序),但我为另一个项目做了研究,我知道很多应用程序都这样做。