2

В моем приложении мне нужно запланировать уведомление пользователя по указанной дате и времени (например, 1 мая в 10:00). В этот момент уведомление должно быть показано, и когда пользователь нажимает на это уведомление, мое приложение должно быть открытым. Я вижу два способа сделать это:

1. Запланированные уведомления.
Но если я использую класс Alarm, я не могу изменить название уведомления (которое является «Тревога» в английской версии SDK).
Класс напоминания в основном подходит мне, но когда он появляется на экране блокировки, и пользователь щелкает его, мое приложение не открывается.
Может быть, есть ли способ обойти эти моменты?
Также я хотел бы избавиться от listpicker со временем (5 минут, 10 минут, 1 час и т. Д.) И кнопку «отложить», но это не критично.

2. Тост (или плитка) уведомления от фонового агента.
Но я не уверен, что мой фоновый агент работает в нужное время. Насколько я понимаю, фоновые агенты запускаются системой, и их запуск ограничен несколькими факторами (заряд аккумулятора телефона, наличие запущенных приложений или других фоновых агентов). Это может даже не начаться. Существует способ заставить агента в определенное время использовать LaunchForTest, но везде пишут, что этот метод может использоваться только для целей отладки, а перед публикацией приложения он должен быть удален.
Если я не удалю этот метод, будет ли моя заявка сертифицирована? Также мне не нравится, что уведомление тоста открывается только в течение 10 секунд, а затем исчезает без следа. Что-то можно сделать по этому поводу?

Мне нужно, чтобы уведомление было гарантировано показано в нужное время, и когда вы нажимаете на него, мое приложение было открыто. Каков наилучший способ сделать это?
Если это невозможно в Windows Phone 7, есть ли способ сделать это в Windows Phone 8?

Спасибо.Как запланировать уведомление пользователя в указанное время

+0

Вы можете использовать внешний сервер уведомлений и отправлять там уведомление о Toast. – MarcinJuraszek

+0

Да, но насколько я знаю, push-уведомления не всегда приходят в нужное время (могут быть задержки). И кроме того, у пользователя может не быть интернет, тогда push-уведомление не придет к нему. – Lumen

ответ

3

Я думаю, вы должны использовать напоминания для этого. Когда вы нажмете на них, ваше приложение откроется. Что-то вроде:

var reminder = ScheduledActionService.Find("MyAppReminder"); 
if (reminder != null) 
{ 
    ScheduledActionService.Remove("MyAppReminder"); 
} 

reminder = new Reminder("MyAppReminder") 
{ 
    Title = "Bla", 
    BeginTime = DateTime.Now.AddDays(2), 
    Content = message, 
    NavigationUri = new Uri("/Start.xaml", UriKind.Relative), 
    RecurrenceType = RecurrenceInterval.None 
}; 

ScheduledActionService.Add(reminder); 

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

+0

Да, вы правы в безопасности, но Toast Notifications открывает свои приложения, когда пользователь нажимает на них. Но я не люблю их из-за их короткого срока службы (10 секунд и никакого центра уведомлений для их хранения. Я действительно разочарован этим). – Lumen

Смежные вопросы