Ejemplo n.º 1
0
        // 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();
        }
Ejemplo n.º 2
0
        /// <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();
        }