控制推送通知

Posted

技术标签:

【中文标题】控制推送通知【英文标题】:Controlling Push notification 【发布时间】:2016-05-19 04:53:51 【问题描述】:

我想在来自 WNS 服务器的推送通知(toast)显示在屏幕上之前对其进行控制。我可以在 android 中执行此操作,但我可以在 Windows Phone 中执行此操作..??

【问题讨论】:

您打算执行哪种类型的操作? 在 toast 出现在屏幕上之前,我想将其参数与某个值进行比较,如果它满足条件,那么我想显示通知....这是我通过推送通知发送的字符串........" + 主题+ "" + 正文 + " 【参考方案1】:

您可以在您的情况下使用 toast 通知。 Toast 通知由操作系统处理。您可以在 App 的 OnLaunched 事件的启动参数中获取有效负载。

Client sample

Server app,您可以使用它进行测试。您也可以使用模拟器进行推送测试。

【讨论】:

OnLaunched 事件中的代码将在应用程序启动后运行..但在屏幕上出现该通知之前...我不想要那个..我想在通知出现之前捕获数据并决定显示与否..... 那么在这种情况下使用原始通知。添加后台任务并在运行中添加您的逻辑并在那里显示自己的吐司。 如果对您有帮助,请接受答案。干杯!【参考方案2】:

我相信您想要一个原始通知,这是您的手机在应用程序运行时处理的通知。

当您创建推送通道时,您可以使用 OnPushNotificationRecieved 事件在接收通知时执行逻辑。

这样,您的逻辑将在通知出现在屏幕上之前触发如果应用程序正在运行

如果应用程序 正在运行,它将是常规 Toast。

例子:

    _channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
    _channel.PushNotificationReceived += OnPushNotificationReceived;

   private void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
    
        switch (args.NotificationType)
        
            case PushNotificationType.Badge:
                this.OnBadgeNotificationReceived(args.BadgeNotification.Content.GetXml());
                break;

            case PushNotificationType.Tile:
                this.OnTileNotificationReceived(args.TileNotification.Content.GetXml());
                break;

            case PushNotificationType.Toast:
                this.OnToastNotificationReceived(args.ToastNotification.Content.GetXml());
                break;

            case PushNotificationType.Raw:
                this.OnRawNotificationReceived(args.RawNotification.Content);
                break;
        

        args.Cancel = true;
    

    private void OnBadgeNotificationReceived(string notificationContent)
    
        // Code when a badge notification is received when app is running
    

    private void OnTileNotificationReceived(string notificationContent)
    
        // Code when a tile notification is received when app is running
    

    private void OnToastNotificationReceived(string notificationContent)
    
        // Code when a toast notification is received when app is running

        // Show a toast notification programatically

        var xmlDocument = new XmlDocument();
        xmlDocument.LoadXml(notificationContent);
        var toastNotification = new ToastNotification(xmlDocument);

        //toastNotification.SuppressPopup = true;
        ToastNotificationManager.CreateToastNotifier().Show(toastNotification);
    

    private void OnRawNotificationReceived(string notificationContent)
    
        // Code when a raw notification is received when app is running
    

【讨论】:

我有一个问题,我想你的答案在哪里会很好,我稍后会测试它。与您的解决方案相比,我只有一个额外的问题。但你可以看看我的问题并得到一些分数:) ***.com/questions/35460872/…

以上是关于控制推送通知的主要内容,如果未能解决你的问题,请参考以下文章

控制“允许推送通知”警报

收到推送通知时推送视图控制器 iOS

有效处理推送通知

控制屏幕上显示的 OneSignal 推送通知时间

控制 App 内的推送通知声音

当用户点击推送通知时导航到特定的视图控制器