Ejemplo n.º 1
0
 private void Awake()
 {
     _transform            = transform;
     OnNotificationOpened += HandleOpenedNotification;
     OnNotificationClosed += HandleClosedNotification;
     ScanForNotificationEntries();
 }
        public void OnBackgroundActivated(BackgroundActivatedEventArgs args)
        {
            var deferral = args.TaskInstance.GetDeferral();

            switch (args.TaskInstance.Task.Name)
            {
            case "ToastBackgroundTask":
                var details = args.TaskInstance.TriggerDetails as ToastNotificationActionTriggerDetail;
                if (details != null)
                {
                    string arguments = details.Argument;
                    var    userInput = details.UserInput;
                    NotificationResponse notificationResponse;
                    PushNotificationResponseEventArgs notificationArgs;
                    // Perform tasks
                    if (userInput.Any())
                    {
                        var input = userInput.FirstOrDefault();
                        var dict  = new Dictionary <string, object>()
                        {
                            { NotificationArgumentKey, details.Argument },
                            { NotificationInputsKey, details.UserInput.ToDictionary(d => d.Key, d => d.Value) }
                        };
                        notificationArgs     = new PushNotificationResponseEventArgs(dict, input.Key, result: $"{input.Value}");
                        notificationResponse = new NotificationResponse(dict, input.Key, result: $"{input.Value}");
                    }
                    else
                    {
                        var dict = new Dictionary <string, object>()
                        {
                            { NotificationArgumentKey, details.Argument }
                        };
                        notificationArgs     = new PushNotificationResponseEventArgs(dict);
                        notificationResponse = new NotificationResponse(dict);
                    }


                    OnNotificationAction?.Invoke(this, notificationArgs);

                    CrossPushNotification.Current.NotificationHandler?.OnAction(notificationResponse);
                }
                break;
            }

            deferral.Complete();
        }