私はこれが何度も提起されたことを知っていますが、それに対する答えを見つけることができませんでした.
以下のコードを使用してアプリでプッシュ通知を設定しようとしていますが、チャネル uri の null 問題が発生しています。
同じネットワーク条件 (Work WiFi - Home WiFi - 3G) で 4 つの異なるデバイス + エミュレーターでアプリを試しましたが、2 つのデバイスは Lumia 920 で、どちらもチャネル uri を取得できませんでしたが、他の 2 つのデバイスは HTC 8X であり、 Lumia 820 は、チャネル uri を正常に取得し、プッシュを登録できます。
エミュレーターは、チャネル uri を正常に取得することもできます。
Lumia 920 の 1 つでチャンネル uri を取得できましたが、アプリをアンインストールしてから再度インストールしたところ、チャンネル uri を取得できませんでした。
以下は私のシナリオです:
1- 3G にインストールされた Lumia 920 Black は正常に動作し、アンインストール/再インストールするとどの接続でも動作しなくなりました (3G - Work WiFi - Home WiFi) 2- 3G にインストールされた Lumia 920 Yellow - Work WiFi - Home WIfi はチャネル uri を取得できませんでした 3 - 3G 上の HTC 8X - 動作する WiFi - ホーム WiFi は 3 つのネットワークすべてで正常に動作しました 4- HTC 8X と同じ Lumia 820 は正常に動作しました
他のアプリのプッシュ通知は、4 つのデバイスすべてで正常に機能していることに注意してください。
チャネル null uri に関するフィードバックやアドバイスをいただければ幸いです。
以下は私が使用したコードです。これはMSDNが提供するものと同じコードです
public MainPage()
{
/// Holds the push channel that is created or found.
HttpNotificationChannel pushChannel;
// The name of our push channel.
string channelName = "ToastSampleChannel";
InitializeComponent();
// Try to find the push channel.
pushChannel = HttpNotificationChannel.Find(channelName);
// If the channel was not found, then create a new connection to the push service.
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);
// Register for this notification only if you need to receive the notifications while your application is running.
pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);
pushChannel.Open();
// Bind this new channel for toast events.
pushChannel.BindToShellToast();
}
else
{
// The channel was already open, so just register for all the events.
pushChannel.ChannelUriUpdated += new EventHandler<NotificationChannelUriEventArgs>(PushChannel_ChannelUriUpdated);
pushChannel.ErrorOccurred += new EventHandler<NotificationChannelErrorEventArgs>(PushChannel_ErrorOccurred);
// Register for this notification only if you need to receive the notifications while your application is running.
pushChannel.ShellToastNotificationReceived += new EventHandler<NotificationEventArgs>(PushChannel_ShellToastNotificationReceived);
// Display the URI for testing purposes. Normally, the URI would be passed back to your web service at this point.
System.Diagnostics.Debug.WriteLine(pushChannel.ChannelUri.ToString());
MessageBox.Show(String.Format("Channel Uri is {0}",
pushChannel.ChannelUri.ToString()));
}
}