是否可以从Matlab向OSX中的通知中心发送通知?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以从Matlab向OSX中的通知中心发送通知?相关的知识,希望对你有一定的参考价值。

我想在Matlab代码完成运行到通知中心时发送通知。我在山狮10.8.3并且有Matlab 2012b。这可能吗?如果是这样,怎么样?

答案

这是一个完整的功能。它显示了Matlab作为名称和图标,点击通知将带您进入Matlab:

function notify(message)
  escaped_message = strrep(message, '"', '"');
  [~, ~] = system(['/usr/local/bin/terminal-notifier ' ...
                   '-title Matlab ' ...
                   '-group com.mathworks.matlab ' ...
                   '-activate com.mathworks.matlab ' ...
                   '-sender com.mathworks.matlab ' ...
                   '-message "' escaped_message '"']);
end
另一答案

terminal-notifier是“从命令行在Mac OS X 10.8上发送用户通知”的工具。 Matlab可以使用system!将命令发送到Mac OS X命令行。把这些放在一起,你可以在你的m文件中写这样的东西:

!terminal-notifier.app/Contents/MacOS/terminal-notifier -message "Testing..."

为了简化操作,您可能希望创建自己的函数,以便可以像这样调用它:

notify("Notifications from Matlab!")
另一答案

要添加到解决方案中,可以通过Matlab的system函数和从命令行执行AppleScript的终端命令osascript来完成此操作。下面的函数采用message参数和可选的titlesubtitlealert声音参数。还完成了输入的一些原油逃逸。 alert声音参数可以是“系统偏好设置”的“声音”窗格的“声音效果”选项卡中的任何命名声音,例如'Sosumi'

function status=notify(msg,titl,subtitl,alert)
%NOTIFY  Display OS X notification message window
%   NOTIFY(MESSAGE,TITLE,SUBTITLE,SOUND)

rep = @(str)strrep(regexprep(str,'["\]','\$0'),'''','"');
cmd = ['osascript -e ''display notification "' rep(msg)];
if nargin > 1 && ischar(titl)
    cmd = [cmd '" with title "' rep(titl)];
    if nargin > 2 && ischar(subtitl)
        cmd = [cmd '" subtitle "' rep(subtitl)];
        if nargin > 3 && ischar(alert) && ~isempty(alert)
            cmd = [cmd '" sound name "' rep(alert)];
        end
    end
else
    cmd = [cmd '" with title "Matlab'];
end
status = system([cmd '"''']);

您可以下载此函数from my GitHub的更完整版本。与基于terminal-notifier的解决方案不同,我不相信通知菜单的图标可以更改。但是,该功能应该适用于任何OS X 10.8或10.9系统,并且不需要安装/下载任何内容。该代码在OS X 10.9.3和10.11.4下进行了测试。

另一答案

使用两个功能:

  1. 从bash运行matlab
  2. say donesay errorread more) matlab -nojvm -nodesktop -r“run .m”&& say done ||说错误

以上是关于是否可以从Matlab向OSX中的通知中心发送通知?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从Azure通知中心获取通知的状态?

通过通知中心向所有用户发送推送通知

osx进程间通信之NSDistributedNotificationCenter

如何在通知中心向特定用户发送推送通知?

使用通知中心将有效负载发送到特定客户端

从通知中心恢复