APNS 推送通知服务器返回抑制作为通知状态

Posted

技术标签:

【中文标题】APNS 推送通知服务器返回抑制作为通知状态【英文标题】:MPNS Push notification server returns supressed as notification status 【发布时间】:2013-10-31 11:38:21 【问题描述】:

我正在尝试将推送通知发送到我的寡妇手机 8 应用程序(平铺通知)。这是来自 MPNS 的响应:通知状态:抑制 notificationChannelStatus :Active, deviceConnectionStatus:Connected。我查看了服务器响应码,发现如下解释:

Push 收到并删除了推送通知 通知服务。如果 通过调用 BindToShellTile 或未启用通知类型 客户端应用程序中的 BindToShellToast

这是我在客户端的代码,我正在调用 BindToShellTile 方法 - 它在第一次安装应用程序时被调用。

HttpNotificationChannel pushChannel;
string channelName = "TileSampleChannel";
pushChannel = HttpNotificationChannel.Find(channelName);
if (pushChannel == null) 
    pushChannel = new HttpNotificationChannel(channelName);
    // Register for all the events before attempting to open the channel.
    pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
    pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);  
    pushChannel.Open();               
    pushChannel.BindToShellTile();
 else           
    pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
    pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);                    
    System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
    MessageBox.Show(String.Format("Channel Uri is 0",
    pushChannel.ChannelUri.ToString())); 

而且我能够成功获取频道 URI。为什么我总是处于抑制状态?我已经在设备上对此进行了测试,并且检查了电池电量是否不足。磁贴也固定在开始屏幕上。

这是我的 XML

 string tileMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
                "<wp:Notification xmlns:wp=\"WPNotification\">" +
                    "<wp:Tile>" +
                      "<wp:BackgroundImage>" + TextBoxBackgroundImage.Text + "</wp:BackgroundImage>" +
                      "<wp:Count>" + TextBoxCount.Text + "</wp:Count>" +
                      "<wp:Title>" + TextBoxTitle.Text + "</wp:Title>" +
                      "<wp:BackBackgroundImage>" + TextBoxBackBackgroundImage.Text + "</wp:BackBackgroundImage>" +
                      "<wp:BackTitle>" + TextBoxBackTitle.Text + "</wp:BackTitle>" +
                      "<wp:BackContent>" + TextBoxBackContent.Text + "</wp:BackContent>" +
                   "</wp:Tile> " +
                "</wp:Notification>";

【问题讨论】:

你能显示你的 XML 消息吗? @kubakista 我已经添加了我的 XML .. 【参考方案1】:

验证您的通知内容长度、内容类型和标题是否正确。

对于 Tile 通知,您需要以下标题:

sendNotificationRequest.Headers.Add("X-WindowsPhone-Target", "token");
sendNotificationRequest.Headers.Add("X-NotificationClass", "1");

在标题之前,设置内容长度和类型如下:

sendNotificationRequest.ContentLength = notificationMessage.Length;
sendNotificationRequest.ContentType = "text/xml";

如果您没有正确指定可以将通知状态设置为已抑制的标题。这可能很有用。

【讨论】:

谢谢.. 问题出在 notificationMessage.Length,我不确定使用的编码.. 搞定了! 你能告诉我那里出了什么问题吗?我也在纠结编码类型

以上是关于APNS 推送通知服务器返回抑制作为通知状态的主要内容,如果未能解决你的问题,请参考以下文章

为 Apple 推送通知服务 (APNS) 设置 linux 提供程序

应用程序运行时在 iOS 中抑制/隐藏推送通知

无需使用互联网、wifi、APNS 和苹果推送通知服务器即可推送通知

FCM 是直接发送推送通知还是向 APNS 发送消息?

如何使用 java 编写 APNS 反馈服务?

Apple 推送通知服务 (APNS):反馈服务响应缺少字节?