更新:情節變濃。我改變了我的頻道名稱,它突然工作(這意味着它不是我的推送服務的問題,因爲我從Microsoft推送通知服務器獲得相同的HTTP響應)。Windows Phone 7推送通知不顯示在我的電話上
但是,對我而言,這不是一個解決方案。我如何能夠測試這一點,並知道我的用戶正在得到他們的推送通知,如果我得到相同的響應時,它不工作,因爲我現在這樣做?
[原帖]
我一直試圖讓推送到我的Windows Phone 7設備的通知,但我有非常大的問題,我無法找到任何答案。我將從C#代碼開始。
我使用以下C#代碼設置了推送通知。
private HttpNotificationChannel channel;
private static string PUSH_CHANNEL = "MySpecialPushChannel";
private Uri PushUri = null;
private bool IsPushRegistered = false;
public void StartPushSubscription()
{
try
{
channel = HttpNotificationChannel.Find(PUSH_CHANNEL);
}
catch
{}
if (channel != null)
{
PushUri = channel.ChannelUri;
if (!channel.IsShellTileBound)
channel.BindToShellTile();
}
else
{
channel = new HttpNotificationChannel(PUSH_CHANNEL);
channel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(channel_ChannelUriUpdated);
channel.HttpNotificationReceived += new EventHandler<HttpNotificationEventArgs>(channel_HttpNotificationReceived);
channel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(channel_ErrorOccurred);
try
{
channel.Open();
channel.BindToShellTile();
}
catch (Exception err)
{
channel = null;
IsPushRegistered = false;
// Code to try again
}
}
}
void channel_ChannelUriUpdated(object sender, NotificationChannelUriEventArgs e)
{
PushUri = e.ChannelUri;
IsPushRegistered = true;
}
我按照標準的WP7推結構:
- 找到HttpNotificationChannel(或啓動一個新的)
- 註冊事件處理程序來獲取推送通知URI回
- 開放通道
- 綁定到瓦片
- 處理通道Uri(我們發送給我們的服務等待t當我們發送推送通知時,他很高興的一天
好的...迄今爲止這麼好。沒有錯誤,我得到我的Uri,把它發送給我的服務就好了。我將我的應用程序綁定到開始屏幕,我的服務向Uri發送一個推送請求(只發送計數,以便我在右上角獲得一個小推數)。我得到一個HTTP 200狀態有以下幾點:
DeviceConnectionStatus =>連接
NotificationStatus =>收到
SubscriptionStatus =>活動
然後什麼都沒有。沒有推送狀態顯示在我的應用程序。我現在已經在我的設備,模擬器,另一臺設備上以及多臺服務器上嘗試過了,結果總是一樣的。一切看起來都在起作用,除非它不起作用。
如何格式化發送的通知?我希望看到您使用的XML和標題。 – 2011-05-12 17:46:33
我在這裏使用PHP WP7 push notifcation系統:http://phpwindowsphonepush.codeplex.com/ 但是這不是一種沒有意義的觀點嗎?我的意思是......如果我從Microsoft推送通知服務器獲得成功消息,這是否意味着推送請求成功?或者有沒有「你做錯了什麼,但我們會給你一個成功的消息」的答覆版本? – MatthiasS 2011-05-12 18:03:00
不熟悉PHP,但看看這裏的C#實現:http://dotnet.dzone.com/articles/sending-tile-push至少當我嘗試傳遞一個圖像,如果它不符合規則(80KB/15秒),狀態將被接收,但通知將失敗。 – 2011-05-12 19:01:28