【问题标题】:Bring other running app's window to front将其他正在运行的应用程序的窗口置于前面
【发布时间】:2019-02-13 15:07:25
【问题描述】:

我想要实现的目标:当用户在我的应用中按下“购买”时,App Store 窗口应该会出现,其中包含我的应用 url。

当 App Store 未运行时,这可以正常工作:[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"macappstore://..."]];

但是当 App Store 已经在运行并且在 Dock 中最小化时,它的窗口不会显示。它变得活跃,是的,但窗口没有出现。

我已经尝试过:使用NSRunningApplication 获取应用程序并尝试unhideactivateWithOptions: 它,但这不起作用。

我在NSWorkspaceNSRunningApplication 中没有看到更多选项,所以如果有人对此有一些解决方案,我们将不胜感激。

【问题讨论】:

    标签: objective-c swift macos cocoa


    【解决方案1】:

    嗯,我想不出任何不涉及 Applescript 或可访问性 API 的方法,然后要求用户授予您的应用访问权限,这更糟。 (我的意思是,你可以退出并重新启动 App Store,但这很不和谐。)老实说,这在 App Store 中是不好的行为,所以你应该向 Apple 提交一份报告,指出窗口没有出现在前面。不过,它现在对你没有帮助。

    【讨论】:

    • 我一定会填写报告,但也许有人在这里有一些解决方法。
    • 我已经为 Apple 填写了报告,关于 Mac App Store 的行为,如果他们有回应,我会通知你们。
    【解决方案2】:

    但是即使最小化了,这不是把它带到最前面吗?

    NSWorkspace.shared.launchApplication("App Store")
    

    【讨论】:

    • 这个解决方案在 macOS 11 上对我有用。以前我使用 activateWithOptions(pid: 123, options: NSApplication.ActivationOptions.activateIgnoringOtherApps),但是在 BigSur 中,这会将所有应用程序窗口带到前台,而使用 launchApplication 会将应用程序带到前景并保持窗口分层。
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2017-06-17
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多