如何向桌面应用程序发送推送通知

Posted

技术标签:

【中文标题】如何向桌面应用程序发送推送通知【英文标题】:How to send a push notification to desktop application 【发布时间】:2012-05-11 23:56:46 【问题描述】:

我有一个驻留在系统托盘中的应用程序,而不是标准的“轮询”方法(以 X 秒间隔检查服务器是否有更新)我希望使用推送通知系统。因此,当有更新时,所有客户端都会收到一条消息,他们将完成他们的任务。网络服务器将是带有 Apache 和 php 的 Debian。

我的目标平台是 .NET 3.5,那该怎么做呢? Observer Design Pattern 将不起作用(因为它是 .NET 4.0 或更高版本)。

【问题讨论】:

Observer Design Pattern 将无法工作(因为它是 .NET 4.0 或更高版本)。当我必须使用 .NET 1.1 时,我讨厌它,因为 @ 987654323@ 模式直到 .NET 2.0 才设计 “观察者设计模式将不起作用(因为它是 .NET 4.0 或更高版本)。” - 杰作LOL 【参考方案1】:

您必须创建两个接口及其派生的具体类。您的服务将创建 IObservable、IObserver 和 ApplicationErrorState。

您的客户端将创建类并从 IObserver 派生 ErrorMessageSync。

这是我的示例,它显示错误并使用 .Net 3.5 创建。

附注您也可以使用委托

/// It will store observers and will push the message
public interface IErrorObservable

  void Attach(IErrorObserver observer);

  void Detach(IErrorObserver observer);

  void Notify();


public interface IErrorObserver

  void Update(string message);


///It is concrete class to push message
public sealed class ApplicationErrorState : IErrorObservable

  private List<IErrorObserver> _observers = new List<IErrorObserver>();
 
  ///constructor
  public ApplicationErrorState()
  
  

  public void Attach(IErrorObserver observer)
  
     _observers.Add(observer);
  

  public void Detach(IErrorObserver observer)
  
     _observers.Remove(observer);
  

  public void Notify()
  
     foreach (IErrorObserver observer in _observers)
     
        observer.Update(/*Logic*/);
     
  

  public void SetError()
  
     Notify();
  


  ///COncrete subject 
  private class ErrorMessageSync : IErrorObserver
  
     private MyClass _parent;
     
     public ErrorMessageSync(MyClass parent)
     
        _parent = parent;
     

     public void Update(string message)
     
            //This work will be done
     
  

这是这种方法的 UML。

【讨论】:

以上是关于如何向桌面应用程序发送推送通知的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在登录后向特定用户发送桌面推送通知吗?

如何向 Apple 和 Android 发送推送通知?

向 Parse 发送推送通知,如何在设备中接收它

如何向 ios 应用程序发送 Firebase 推送通知

如何从 SDK/框架向父应用发送推送通知?

Web 应用程序如何向 iOS 设备发送推送通知? [关闭]