2016-05-05 1 views
0

私はPushNotificationChannelの保存に大きな問題があります。タイプ自体はLocalSettingsに格納することはできません。アプリケーションで古いPushNotificationChannelを閉じる方法は?

新しいチャンネルを取得した後にチャンネルを閉じる必要があります。私はアプリが起動するたびに新しいチャンネルをリクエストしています(ドキュメンテーションの説明のように)、以前のstilが動作している間に新しいチャンネル(以前とは異なるチャンネル)を取得することがあります。だから私は新しいチャンネルを取得するときに私は古いものを閉じて前にしたい。

私も使ってストリーミングすることをシリアライズしようとしている:

var serializer = new DataContractSerializer(typeof(PushNotificationChannel)); 
MemoryStream ms = new MemoryStream(); 
serializer.WriteObject(ms, channel); 

しかし、私はエラーを取得する:

'Windows.Networking.PushNotifications.PushNotificationChannel' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. Alternatively, you can ensure that the type is public and has a parameterless constructor - all public members of the type will then be serialized, and no attributes will be required.

はPushNotificationChannelを格納するためにそこの方法であるか、私は唯一のURIを格納し、何とかチャンネルを作成することができますウリからの物体?

EDIT:

[OK]を私は私のPushNotificationReceivedでチャンネルを得ることができます。しかし、私はBackgroundTaskで送信者のPushNotificationChannelを取得する方法がわかりません - 可能でしょうか?

答えて

1

はい、バックグラウンドでPushNotificationChannelを取得できます。プッシュ通知チャンネルUriを取得するには、バックグラウンドタスクでこれとヒットAPIのバックグラウンドタスクを作成する必要があります。 see this tutorial.

+0

私はバックグラウンドタスクと一緒にバックノートタスクを作成するために、私はバックグラウンドタスクのPushNotificationトリガーを持っています。しかし、バックグラウンドタスクでAPIをヒットするとどういう意味ですか?私はイベントPushNotificationReceivedのようなPushNotificationChannelの送信者が必要です –

+0

あなたが新しいチャネルを要求するたびに、uriはハンドラではなく変更することができます。だからあなたはそれを自分で閉じる必要はありません。あなたはあなたのデータベースのuriを更新する必要があり、古いものは動作しません。またAPIヒットは、あなたの新しいChannel Uriをあなたのサーバ上でアップデートすることの一部です。 – Rohit

+0

Uriが変更されるたびに古いものをサーバーから削除して新しいものを追加します。しかし、何度か(1回か2回)うまくいきませんでした。そして2回通知が終わりました(私は新しいチャンネルを取得しましたが、だから私はいくつかの方法は、(このエラーを回避するために)密接なチャネルを強制的にしたい - アプリケーションが実行されているときに動作しますが、このメカニズムは、バックグラウンドタスクだけが動作している場合でも動作するようにします。 –

関連する問題