Статьи

31 Дней Манго | День № 3: Сигналы и напоминания

Эта статья является Днем № 3 в серии под названием « 31 Дней Манго» .

Day3-Напоминания

Сегодня мы собираемся обсудить, как мы можем установить сигналы тревоги и напоминания на телефоне пользователя. Этими напоминаниями может полностью управлять наше приложение, что означает, что мы можем создавать, редактировать и удалять их по мере необходимости.

Как работают напоминания

Напоминания о Windows Phone — это способ предупредить пользователя о том, что нужно что-то сделать. Очевидное применение напоминания — будильник, календарь или список дел. Тем не менее, напоминания могут быть использованы для различных приложений, и даже являются удобным инструментом для напоминания вашему пользователю о необходимости вернуться в свое приложение. Вот пример напоминания, которое вы можете запустить на телефоне вашего пользователя:

образ

Как создать напоминание

Создать напоминание относительно просто. Вы создаете новый объект Reminder, привязываете свойства, которые важны для вас, а затем добавляете его в ScheduledActionService, который работает на телефоне вашего пользователя. Ниже приведен исходный код полностью функционального напоминания (тот, что на скриншоте выше). После кода я подробно расскажу о каждой части. Обратите внимание, что в верхней части моей страницы я добавил дополнительный оператор использования: Microsoft.Phone.Scheduler.

using System;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Scheduler;

namespace Day3_Reminders
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();

            Reminder r = new Reminder("testreminder");
            r.Title = "A Special Reminder";
            r.Content = "Jeff Blankenburg's Reminder";
            r.NavigationUri = new Uri("/ReminderPage.xaml", UriKind.Relative);
            r.BeginTime = DateTime.Now.AddSeconds(15);
            r.ExpirationTime = DateTime.Now.AddDays(7);
            r.RecurrenceType = RecurrenceInterval.Daily;

            ScheduledActionService.Add(r);
        }
    }
} 

Называя Ваше Напоминание

В первой строке кода напоминания необходимо указать имя напоминания. В приведенном выше примере мы назвали наш «testreminder». Каждое напоминание (и будильник, который мы рассмотрим позже) должно иметь имя, и мы будем использовать это имя для управления нашими событиями в будущем. Каждое напоминание / будильник должно иметь уникальное имя, так что имейте это в виду при создании приложения. Если имя не имеет значения для вас, или вы не планируете управлять этими событиями, вы можете использовать простую временную метку в качестве имени, которая каждый раз должна гарантировать уникальное имя.

Название приложения, название и содержание

Эти два текстовых значения представляют сообщения, которые вы увидите в поле, которое появляется на экране пользователя. На изображении ниже я пометил каждое из значений текста, чтобы вы точно знали, как будет выглядеть ваш текст.

textvalues

Как видите, мы не можем контролировать отображение текста, но у нас достаточно места для его написания. Если пользователь касается какой-либо части этих текстовых значений, у нас есть возможность вернуть их обратно в наше приложение, используя свойство NavigationUri.

NavigationUri

NavigationUri — это относительный путь к странице вашего приложения. В приведенном выше примере кода мы отправляем пользователя в ReminderPage.xaml. Эта концепция называется «глубокая связь», и вы увидите, что она используется во многих новых API, доступных нам в Windows Phone 7.5. Возможность запуска приложения на определенной странице окажется невероятно полезной как для вас, так и для ваших пользователей, и использование этой возможности настоятельно рекомендуется.

BeginTime, ExpirationTime и RecurrenceType

BeginTime, очевидно, является очень важным значением, поскольку оно определяет, когда наше напоминание будет запущено на устройстве пользователя. Он принимает значение DateTime, как и ExpirationTime. Значение ExpirationTime не является обязательным, но становится более актуальным и полезным, когда мы добавляем концепцию повторения в наши напоминания. Возможно, вы создаете приложение, которое напоминает вашему пользователю о необходимости проверять уровень сахара в крови в 13:00 каждый день, но вы хотите делать это только в течение одной недели. Вы можете установить ExpirationTme равным одной неделе от первоначального напоминания и установить RecurrenceType = RecurrenceInterval.Daily. Это будет отправлять одно и то же напоминание пользователю в одно и то же время каждый день. Для нескольких напоминаний в день вы можете создавать несколько разных напоминаний одновременно. В конечном итоге это приведет вас к следующей задаче: управлению всеми различными напоминаниями на устройстве.

Управление существующими напоминаниями

Создание одного напоминания — простая задача. Однако управление множеством напоминаний и сигналов тревоги может быть довольно сложным. Если вы использовали приведенный выше пример кода в своем собственном проекте, вы, скорее всего, столкнулись с InvalidOperationException, который сообщает вам, что напоминание с таким именем уже существует. Вот почему при создании напоминания на телефоне вашего пользователя важно проверить и убедиться, что вы еще не создали его для них. Для этого мы можем найти существующее имя напоминания и удалить его, если оно существует. Следующий код точно такой же, как мой предыдущий пример, за исключением того, что я проверяю, существует ли уже напоминание с таким именем, и удаляю его.

if (ScheduledActionService.Find("testreminder") != null)
{
    Reminder r = ScheduledActionService.Find("testreminder") as Reminder;
    r.Title = "This has been edited.";
    r.Content = "This is updated content.";
    r.BeginTime = DateTime.Now.AddSeconds(15);

    ScheduledActionService.Replace(r);
} 

Эта способность находить конкретные напоминания и сигналы тревоги становится очень полезной, когда вам нужно отредактировать или изменить созданное напоминание. Чтобы редактировать напоминание, вам просто нужно использовать метод Find () для создания новой ссылки на него и метод Replace () для его сохранения, как в примере ниже:

if (ScheduledActionService.Find("testreminder") != null)
{
    Reminder r = ScheduledActionService.Find("testreminder") as Reminder;
    r.Title = "This has been edited.";
    r.Content = "This is updated content.";
    r.BeginTime = DateTime.Now.AddSeconds(15);

    ScheduledActionService.Replace(r);
} 

Как создать будильник

Аварийные сигналы почти идентичны напоминаниям, с несколькими исключениями. Во-первых, Alarms не может указать свойство Title, и они также не могут использовать свойство NavigationUri. Однако они могут воспроизводить собственный звук, чего не могут делать напоминания. В остальном, Тревоги и Напоминания идентичны. Мы управляем ими одинаково (используя ScheduledActionService), что позволяет нам добавлять, редактировать и удалять их по мере необходимости. Вот пример кода для создания Alarm, используя уроки, которые мы уже изучили о напоминаниях:

if (ScheduledActionService.Find("testalarm") != null)
ScheduledActionService.Remove("testalarm");

Alarm a = new Alarm("testalarm");
a.Content = "Jeff Blankenburg's Alarm";
a.Sound = new Uri("button-8.mp3", UriKind.Relative);
a.BeginTime = DateTime.Now.AddSeconds(15);
a.ExpirationTime = DateTime.Now.AddDays(7);
a.RecurrenceType = RecurrenceInterval.Daily;

ScheduledActionService.Add(a);
 

Как видите, даже синтаксис идентичен напоминанию. Для свойства Sound я ссылаюсь на файл MP3, который я включил в свой проект.  День № 20 из моей серии « 31 день Silverlight » рассказывает, как именно включить аудиофайл в проект и даже как его вызвать из событий щелчка. Обязательно прочитайте это, если вам нужна дополнительная информация по этому вопросу.

Резюме

В заключение, Напоминания и Сигналы тревоги — отличный способ уведомить вашего пользователя, что пришло время что-то сделать. Хотя они очень похожи, важно помнить, что напоминания позволяют вам предоставить ссылку обратно в ваше приложение, даже на определенную страницу, если вам это нужно. Это важный и эффективный способ вернуть вашего пользователя в ваше приложение, и он значительно упрощает поиск того, что ему нужно.

Чтобы увидеть готовое работающее приложение, которое использует весь код и концепции из этой статьи, нажмите на изображение «Скачать код» ниже.

скачать

Завтра я собираюсь пройти через недавно доступный датчик в телефонах Windows: Компас. Я даже покажу, как магниты могут сильно на это повлиять. Увидимся позже!

toolsbutton

Источник: http://www.jeffblankenburg.com/2011/11/03/31-days-of-mango-day-3-alarms-and-reminders/