// New method protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args) { var deferral = args.TaskInstance.GetDeferral(); try { RawNotification notification = (RawNotification)args.TaskInstance.TriggerDetails; // Decrypt the content string payload = await PushManager.GetDecryptedContentAsync(notification); // Show a notification // You'll need Microsoft.Toolkit.Uwp.Notifications NuGet package installed for this code ToastContent content = new ToastContent() { Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = "Push notification received" }, new AdaptiveText() { Text = payload } } } } }; ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(content.GetXml())); } catch (Exception ex) { ToastContent content = new ToastContent() { Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = "Failed decrypting" }, new AdaptiveText() { Text = ex.ToString() } } } } }; ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(content.GetXml())); } deferral.Complete(); }
/// <summary> /// This method hits whenever a background task execution meets the conditions /// </summary> /// <param name="args">BacklgroundActivatedArguments</param> protected override async void OnBackgroundActivated(BackgroundActivatedEventArgs args) { const string PushBackgroundTaskName = "DeskhelpBackgroundNotification"; const string timerRegisterTask = "DeskHelpBackgroundDailyValidation"; const string startupTask = "DeskHelpBackgroundStartupValidation"; var deferral = args.TaskInstance.GetDeferral(); LogTelemetry("OnBackgroundActivated() triggered", SeverityLevel.Information, BuildProperties($"Background Task Name\t{args.TaskInstance.Task.Name}")); if (args.TaskInstance.Task.Name == timerRegisterTask || args.TaskInstance.Task.Name == startupTask) { var result = await validateExpirationDate(); ToastContent visual = showToast("Registration Verification", "Registration was verified succesfully.", null, false); ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(visual.GetXml())); deferral.Complete(); return; } else if (args.TaskInstance.Task.Name == PushBackgroundTaskName) { try { RawNotification notification = (RawNotification)args.TaskInstance.TriggerDetails; // Decrypt the content string payload = await PushManager.GetDecryptedContentAsync(notification); //payload = payload.ToString().Replace(@"\", ""); var payloadJson = JsonObject.Parse(@payload); //dynamic json = JsonConvert.Deserialize<Dictionary<string, string>>(@payload); var applicationData2 = Windows.Storage.ApplicationData.Current; var localSettings2 = applicationData2.LocalSettings; var DeviceInfo = (string)localSettings2.Values["DeviceInfo"]; var deviceDetails = payloadJson.GetObject().GetNamedObject("deviceDetails"); var notificationID = payloadJson.GetObject().GetNamedString("notificationID"); if (deviceDetails["deviceID"].ToString().Replace("{", "").Replace("}", "").Replace("\"", "") == DeviceInfo) { bool inApp = true, inDevice = true; try { inApp = payloadJson["inApp"].ToString() == "true" ? payloadJson.GetObject().GetNamedBoolean("inApp") : false; } catch (Exception ex) { inApp = false; } try { inDevice = payloadJson["inDevice"].ToString() == "true" ? payloadJson.GetObject().GetNamedBoolean("inDevice") : false; } catch (Exception ex) { inDevice = false; } JsonArray buttons = null; try { buttons = payloadJson.GetObject().GetNamedArray("button"); } catch (Exception e) { buttons = null; } //In - Device if (inDevice && !inApp) { var title = payloadJson["title"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); var content = payloadJson["description"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); ToastContent visual = showToast(title, content, buttons, true, notificationID); ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(visual.GetXml())); } else if (inApp && !inDevice) { var userID = payloadJson["userID"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); //var content = payloadJson["description"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); if (Appload == true) { await App.WebView.InvokeScriptAsync("pushNotifications", new string[] { userID }); } } else if (inApp && inDevice) { var title = payloadJson["title"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); var content = payloadJson["description"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); var userID = payloadJson["userID"].ToString().Replace("{", "").Replace("}", "").Replace("\"", ""); if (Appload == false) { ToastContent visual = showToast(title, content, buttons, true, notificationID); ToastNotificationManager.CreateToastNotifier().Show(new ToastNotification(visual.GetXml())); } else { await App.WebView.InvokeScriptAsync("pushNotifications", new string[] { userID }); } } } } catch (Exception ex) { var dontWait = new MessageDialog(ex.ToString()).ShowAsync(); LogException(ex); } } deferral.Complete(); }