【macOS】swiftプログラムからmacOSの通知センターへ表示する簡単な方法

【macOS】swiftプログラムからmacOSの通知センターへ表示する簡単な方法のイメージ applescript

Xcodeを利用したmacOS用アプリで通知を利用したい場合があります。

Macの通知センターでは、見逃した通知を確認したり、ウィジェットを使って予約、誕生日、天気、最新ニュースのヘッドラインなどをデスクトップから直接確認したりできます。
https://support.apple.com/ja-jp/guide/mac-help/mchl2fb1258f/mac

目につきやすいメリットがあります(見逃すことは当然ありますね☺️)。

UserNotifications(詳しくは→ https://developer.apple.com/documentation/usernotifications)を使う方法が正当です。タイトルやアイコンを自由に設定できるメリットがありますが、デメリットも感じています。

  1. Xcodeのアップデートで利用方法が変わることがある。
  2. セキュリティが強化され、追加の許可設定が必要なことがある

AppStoreに登録して公開するようなアプリではなく、自分用プログラムですので、もっと簡単な方法がない?あります

osascript(Apple Script)を使うことで通知できます。
この方法にはデメリットがあります。通知表示のアイコンやタイトルはスクリプトエディタです。
これを回避したい場合は、Swift標準方法のUserNotificationsを使うしかありません。

【macOS】swiftプログラムからmacOSの通知センターへ表示する簡単な方法のソース例

以下のようなメソッドを用意して呼び出すだけです。

    func macOSへ通知(_ message: String){
        let task = Process();
        task.executableURL = URL(fileURLWithPath: "/usr/bin/osascript")
        task.arguments = ["-e", "display notification \""+message+"\""]
        do{try task.run()}
        catch{print("exception")}

    }
  • osascriptはmacOS標準のコマンドです。man osascriptでマニュアルを読むことができます。
  • macOSへ通知(“メッセージ”)と呼び出すことで通知センターにメッセージが表示されます。
  • macOSへ通知(“メッセージ\nメッセージ”)でメッセージを改行できます。
  • 簡単に通知できました☺️
  • コメント

    タイトルとURLをコピーしました