Windows 10 UWP アプリケーションを開発していますが、生の通知の送信と処理に問題があります。
PHPで記述されたサーバーから通知を送信しています。アプリが開いていると、送信された生の通知を受け取ることができます。以下は私の通知のテンプレートです。
<toast launch='args'>
<visual>
<binding template = 'ToastGeneric'>
<text> başlık </text>
<text> Açıklama </text>
</binding>
</visual>
</toast>
上記のテンプレートを生の通知として送信しました。
また、以下の方法をバックグラウンドタスクとして使用しています
public void Run(IBackgroundTaskInstance taskInstance)
{
// Get the background task details
ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;
string taskName = taskInstance.Task.Name;
Debug.WriteLine("Background " + taskName + " starting...");
// Store the content received from the notification so it can be retrieved from the UI.
RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
settings.Values[taskName] = notification.Content;
Windows.Data.Xml.Dom.XmlDocument doc = new XmlDocument();
var toast = new ToastNotification(doc);
var center = ToastNotificationManager.CreateToastNotifier();
center.Show(toast);
Debug.WriteLine("Background " + taskName + " completed!");
}
appmanifest にタスク エントリ ポイントを設定しましたが、デバッガーでテストできませんでした。
以下のコードでバックグラウンド タスクを登録します。
private void RegisterBackgroundTask()
{
BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder();
PushNotificationTrigger trigger = new PushNotificationTrigger();
taskBuilder.SetTrigger(trigger);
// Background tasks must live in separate DLL, and be included in the package manifest
// Also, make sure that your main application project includes a reference to this DLL
taskBuilder.TaskEntryPoint = SAMPLE_TASK_ENTRY_POINT;
taskBuilder.Name = SAMPLE_TASK_NAME;
try
{
BackgroundTaskRegistration task = taskBuilder.Register();
task.Completed += BackgroundTaskCompleted;
}
catch (Exception ex)
{
// rootPage.NotifyUser("Registration error: " + ex.Message, NotifyType.ErrorMessage);
UnregisterBackgroundTask();
}
}
最後に、私の pushreceived イベント:
private async void OnPushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs e)
{
if (e.NotificationType == PushNotificationType.Raw)
{
e.Cancel = false;
Windows.Data.Xml.Dom.XmlDocument doc = new Windows.Data.Xml.Dom.XmlDocument();
var t = @" <toast launch='args'>
<visual>
<binding template = 'ToastGeneric'>
<text> başlık </text>
<text> Açıklama </text>
</binding>
</visual>
</toast> ";
doc.LoadXml(t);
var toast = new ToastNotification(doc);
var center = ToastNotificationManager.CreateToastNotifier();
center.Show(toast);
}
}
メソッドの内部はテスト専用です。
さて、私の構造のどこが間違っているか、または間違っているかを尋ねたいと思いますか? 提案、例、またはヘルプをいただければ幸いです。
前もって感謝します。