5

私のアプリが非アクティブ(つまり、停止中、トゥーンストーンまたは休眠中)の間に、通知された通知チャネルURIが失効することがあります。一定期間使用しないと、WebサービスでチャネルURIを更新するベストプラクティスは何ですか?アプリの非アクティブ後にMPNSチャネルURIを更新する方法

Web上のさまざまな記事では、URIをWebサービスに送信するためにURIを「取得」しています。しかし、私が知る限り、アプリケーションがChannelUriUpdatedイベント(HttpNotificationChannel)を介してアプリを習得する唯一の方法であり、そのイベントを発生させることは自分のコントロール下にありません。私のアプリが非アクティブな間にMPNSがURIを変更した可能性があります。アプリがChannelUriUpdatedに応答できなかった場合、URIは私のアプリと私のWebサービスの両方で古くなります。

おそらくHttpNotificationChannel.Findによって返されるチャンネルは、常に最新のチャンネルURIを持つことが保証されていますか?

+0

明確にするため、私は一般的にチャネルURIをどのように追跡するのか尋ねていません。私は、チャンネルURIが最新のものであることを直ちに知っているかどうかを尋ねています。そのあと、アプリケーションは非アクティブな期間(例えば、墓石のような)から起きています。 – lencharest

+0

あなたのアプリがtombstoningから復帰すると、あなたの現在のチャンネルが無効になった場合、null NotificationChannel.ChannelUriが返されます。その場合は、ウェブサービスに通知し、ChannelUriUpdatedから新しいリンクを取得するのを待ちます。 MPNSから新しいChannel URIを取得する方法はありません。 –

答えて

0

一般的なベストプラクティスは、アプリが起動されるたびに現在のチャンネルUriをリクエストすることです。アプリケーション内では、返された最後の値(アプリケーションの呼び出し間)と、Webサービスにアップロードするために変更された値を記録しておく必要があります。

+0

どのようにチャンネルURIをリクエストしますか? ChannelUriUpdatedイベントは、MPNSがアプリケーションに新しい価値を押し込めるようにしますが、現在のURIをMPNSから「プル」するにはどうすればよいですか?そのためのAPIは表示されません。 – lencharest

+0

私は単にHttp.NotificationChannel.ChannelUriプロパティを取得する必要があるかどうかをさらに詳しく説明します。 – lencharest

+0

@lencharest ChannelUriUpdatedイベントが発生するたびに、別のメモリに新しいURIを格納する必要があると思います。最後に保存されたチャンネルUriが "現在"で、通知イベントに反映された新しいチャンネルが新しいイベントです。比較し、異なる場合は、Webサービスに通知してください。 –

0

この更新されたドキュメントhereに従ってください。それはチャネルURIの挿入時にスクリプトを実行し、チャネルURIが存在するかどうかをチェックし、存在しない場合はレコードを挿入し、そうでなければレコードを挿入します。したがって、デバイスのチャネルuriが期限切れになると、その場合に新しいチャネルuriがデバイスに与えられ、比較ミスマッチおよび新しいチャネルuriが挿入されます。これを行うことで、デバイスは常に通知を送信されます。

注:この機能を利用するには、アプリが起動するたびに送信する必要があります。お役に立てれば。

関連する問題