【问题标题】:How to bring Xamrin MAC app to foreground programmatically?如何以编程方式将 Xamarin MAC 应用程序带到前台?
【发布时间】:2020-08-14 21:05:33
【问题描述】:

如何通过单击本地通知以编程方式将 Xamarin MAC 应用程序置于前台?我怎样才能实现它?我为本地通知编写了以下代码。单击该本地通知时,我想将我的应用置于前台。

NSUserNotificationCenter center = NSUserNotificationCenter.DefaultUserNotificationCenter;

    NSUserNotification notification = new NSUserNotification();
    notification.Title = title;
    notification.Subtitle = content;
    notification.InformativeText = "TEST";
    notification.SoundName = NSUserNotification.NSUserNotificationDefaultSoundName;
    notification.DeliveryDate = NSDate.FromTimeIntervalSinceNow(1);  

    center.ScheduleNotification(notification);

    center.DidDeliverNotification += (s, e) =>
    {
        Console.WriteLine("Notification Delivered");              
    };

    center.DidActivateNotification += (s, e) =>
    {
        Console.WriteLine("Notification Touched");                
    };

提前谢谢你, 维韦克

【问题讨论】:

    标签: macos xamarin xamarin.forms xamarin-studio xamarin.mac


    【解决方案1】:

    您可以使用NSWorkspace.SharedWorkspace.LaunchApp 来“启动”您的应用,无论该应用是否已经在运行,您可以使用NSWorkspaceLaunchOptions.HideOthers 来提前该应用的最后一个活动窗口。

    center.DidActivateNotification += (s, e) =>
    {
        Console.WriteLine("Notification Touched");
        NSWorkspace.SharedWorkspace.LaunchApp(NSBundle.MainBundle.BundleIdentifier, NSWorkspaceLaunchOptions.HideOthers, new NSAppleEventDescriptor(), IntPtr.Zero);
    };
    

    【讨论】:

    • 非常感谢。它对我有用。应用您的解决方案后,我注意到(1)当应用程序已经打开并且没有焦点并且我单击收到的通知时,应用程序获得焦点并出现在屏幕前 - 这很棒。 (2) 当应用程序被最小化并且我点击收到的通知时,它从后台启动了应用程序,但应用程序没有关注它。那么有没有什么方法可以让后台启动后专注于应用呢?
    猜你喜欢
    • 1970-01-01
    • 2020-12-14
    • 2011-10-22
    • 2023-03-10
    • 2011-05-30
    • 1970-01-01
    • 2014-06-25
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多