プッシュ通知を利用する Windows Phone 7 アプリケーションを作成しており、MS Notification Server とクラウド内のサービスとの間のやり取りを管理するクラスがあります。ただし、デバイスでチャネルを開こうとすると、HttpNotificationChannel は「チャネルを開くことができませんでした」というメッセージで InvalidOperationException をスローしています。MSDNによると 、チャネルをもう一度開いてみる必要があります。
プッシュ通知を開くための私のコード スニペットは、次の標準パターンに従っています。
public class HttpNotification {
private const string kChannelName = "MyApp.PushNotification";
private HttpNotificationChannel _Channel;
public void Register() {
try {
_Channel = HttpNotificationChannel.Find(kChannelName);
if (_Channel == null) {
_Channel = new HttpNotificationChannel(kChannelName);
InstallEventHandlers();
// This line throws
_Channel.Open();
} else {
InstallEventHandlers();
};
} catch (InvalidOperationException ex) {
MessageBox.Show(string.Format("Failed to initialise Push Notifications - {0}", ex.Message));
};
}
}
MSDN の「チャンネルをもう一度開いてみてください」という言葉が何を意味するのか正確にはわかりません。Open() の呼び出しを try/catch でラップし、試行の間に 5 秒間スヌーズしましたが、成功しません。また、メソッド全体で同じアプローチを試みました (つまり、スローするたびに HttpNotificationChannel.Find() を呼び出します) が役に立ちませんでした。
私はこれが少し曖昧であることを知っています - しかし、誰かがこれを処理するための提案を持っているかどうか疑問に思っていました? この同じコードはエミュレーターでは問題なく動作しますが、アプリケーションをアンインストールして再インストールした後でも、実際のデバイスでは毎回失敗します。これが私の実際の電話であることを考えると、この問題が解決されることを期待してハードウェアのリセットを行うのは少し気が進まない.
更新: 追加のポイントとして、認証されていないチャネルを使用しているため、クラウドベースのサービス用に証明書がインストールされていません。
更新 #2: さらに、Microsoft Phone Push Recipe を自分のデバイスに展開しようとしたところ、同じ例外がスローされました。