Beispiel #1
0
        void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
        {
            reader.ReadStartElement(XmlSerializationHelper.GetElementName(this), TaskDefinition.tns);
            while (reader.MoveToContent() == System.Xml.XmlNodeType.Element)
            {
                switch (reader.LocalName)
                {
                case "BootTrigger":
                    XmlSerializationHelper.ReadObject(reader, AddNew(TaskTriggerType.Boot));
                    break;

                case "IdleTrigger":
                    XmlSerializationHelper.ReadObject(reader, AddNew(TaskTriggerType.Idle));
                    break;

                case "TimeTrigger":
                    XmlSerializationHelper.ReadObject(reader, AddNew(TaskTriggerType.Time));
                    break;

                case "LogonTrigger":
                    XmlSerializationHelper.ReadObject(reader, AddNew(TaskTriggerType.Logon));
                    break;

                case "CalendarTrigger":
                    Add(CalendarTrigger.GetTriggerFromXml(reader));
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }
            reader.ReadEndElement();
        }
    public static int RegisterNotification(int id, DateTime fireDate, string body)
    {
        if (fireDate < UnbiasedTime.Instance.Now())              // fire date is in past
        {
            return(-1);
        }

        // notifications are disabled
        if (PreferencesFactory.GetInt(Constants.KeyNotificationsAllowed, 1) == 0)
        {
            return(-1);
        }

#if UNITY_IPHONE
        NotificationCenter.RequestPermissions((result) =>
        {
            PreferencesFactory.SetInt(Constants.KeyNotificationsAllowed, result.IsSucceeded ? 1 : 0);

            //Debug.Log("RequestPermissions callback: err: " + (result.HasError ? result.Error.Message : null) + "; success: " + result.IsSucceeded + "; failed: " + result.IsFailed);
        });

        var content = new NotificationContent();
        content.Body  = body;
        content.Badge = 1;

        var dateComponents = new DateComponents()
        {
            Year   = fireDate.Year,
            Month  = fireDate.Month,
            Day    = fireDate.Day,
            Hour   = fireDate.Hour,
            Minute = fireDate.Minute,
            Second = fireDate.Second
        };

        var trigger = new CalendarTrigger(dateComponents);
        var request = new NotificationRequest(id.ToString(), content, trigger);

        NotificationCenter.AddNotificationRequest(request, (result) => {
            //Debug.Log("AddNotificationRequest callback: err: " + (result.HasError ? result.Error.Message : null) + "; success: " + result.IsSucceeded + "; failed: " + result.IsFailed);
        });
                #endif

                #if UNITY_ANDROID
        TimeSpan delay = fireDate - UnbiasedTime.Instance.Now();
        AndroidNotificationBuilder builder = new AndroidNotificationBuilder(id,
                                                                            GameManager.Instance.GameName,
                                                                            body,
                                                                            (int)delay.TotalSeconds);

        AndroidNotificationManager.Instance.ScheduleLocalNotification(builder);
                #endif

        return(id);
    }