2013-05-14 1 views
1

Я хочу реализовать уведомления о Toast и Tile. Мое уведомление должно соответствовать некоторым критериям, например, оно должно выполняться, когда мое приложение закрыто. Например, напоминание о дне рождения может работать в фоновом режиме, когда приложение закрыто.Как уведомлять тосты, когда приложение win закрыто в WP8?

образца я нашел:

ShellToast toast = new ShellToast(); 
toast.Title = "Toast Title: "; 
toast.Content = "TEST"; 
toast.Show(); 

Приведенный выше пример работает, когда приложение работает. Вот мой код:

private void StartPeriodicAgent() 
    { 
     // Variable for tracking enabled status of background agents for this app. 
     agentsAreEnabled = true; 

     // Obtain a reference to the period task, if one exists 
     periodicTask = ScheduledActionService.Find(periodicTaskName) as PeriodicTask; 

     // If the task already exists and background agents are enabled for the 
     // application, you must remove the task and then add it again to update 
     // the schedule 
     if (periodicTask != null) 
     { 
      RemoveAgent(periodicTaskName); 
     } 

     periodicTask = new PeriodicTask(periodicTaskName); 

     periodicTask.ExpirationTime = System.DateTime.Now.AddDays(1); 

     // The description is required for periodic agents. This is the string that the user 
     // will see in the background services Settings page on the device. 
     periodicTask.Description = "This demonstrates a periodic task."; 

     // Place the call to Add in a try block in case the user has disabled agents. 

     ScheduledActionService.Add(periodicTask); 
    } 

    private void RunBackgroundWorker() 
    { 
     //PhoneCallTask calltask = new PhoneCallTask(); 
     //calltask.PhoneNumber = "03336329631"; 
     //calltask.DisplayName = "arslan"; 
     //calltask.Show(); 


     BackgroundWorker backroungWorker = new BackgroundWorker(); 

     backroungWorker.DoWork += ((s, args) => 
     { 
      Thread.Sleep(10000); 
     }); 

     backroungWorker.RunWorkerCompleted += ((s, args) => 
     { 
      this.Dispatcher.BeginInvoke(() => 
      { 
       var toast = new ToastPrompt 
       { 
        Title = "Simple usage", 
        Message = "Message" 
       }; 
       toast.Show(); 




      } 
     ); 
     }); 
     backroungWorker.RunWorkerAsync(); 
    } 

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

+0

Вы должны выполнить свой код внутри OnInvoke, который будет содержать логики для отправки уведомлений тоста. –

+0

Rohith вы можете дать мне некоторые подробности? – programmerist

ответ

2

BackgroundWorker отличается от запланированной задачи, которую вы планируете для периодического запуска.

Добавить агент Windows Phone Scheduled Task Agent и в этом проекте написать логику кода, чтобы вызвать необходимые вызовы для производства тоста.

protected override void OnInvoke(ScheduledTask task) 
{ 
    ------------------------------------------------ 
    Your code for scheduled task running. 
} 

После того, как ваш код был завершен, вы можете вызвать NotifyComplete(), чтобы указать, когда работа Запланированные задачи закончена.

Принимая во внимание, что backgroundworker просто запускает ваш код в отдельном потоке, и нет никакой корреляции с запланированной задачей, кроме того факта, что; вы можете использовать фоновый поток в запланированной задаче.

Для того чтобы ваша логика делилась между основным приложением и запланированной задачей: - Создайте отдельный проект и поместите в него многоразовый/общий код. Обратитесь к главному приложению и запланированной задаче для обмена/доступа к переменным.

использования делают из IsolatedStorageFile и Mutex в отдельном проекте и поделиться DLL через оба

* Случайные ссылки для примера Расписание задачи: http://wildermuth.com/2011/9/6/Periodic_Agents_on_Windows_Phone_7_1 *

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