0

Я работаю над «функцией» триггера push-уведомления, доступного в телефоне Windows 8.1. Моя цель - сделать эту работу с проектом Windows Silverlight 8.1. Насколько я знаю, он должен работать на основе моего чтения.Push Notification Trigger на Windows Phone 8.1 Silverlight

Через 2 дня я полностью застрял. Независимо от того, что я пытаюсь. Когда я отправляю необработанное уведомление в мое приложение, мое приложение отменяется, и я возвращаюсь в меню Windows.

Выход: Программа '[1852] BACKGROUNDTASKHOST.EXE' вышла с кодом 1 (0x1). Программа '[2712] AgHost.exe' вышла с кодом 1 (0x1).

Состояние:

  • приложение получает уведомление. Он вызывает OnPushNotificationReceived. (После этого события приложение отменено)
  • Объявлено задание Push Notification, а точка входа определена как Push.Notification.
  • Я создаю компонент Windows Runtime для телефона Windows 8.1 для запуска фоновой задачи.
  • Фоновая задача хорошо зарегистрирована.

private async void RegisterBackgroundTask() 
{ 
    UnregisterBackgroundTask(taskName); 
    BackgroundAccessStatus backgroundStatus = await BackgroundExecutionManager.RequestAccessAsync(); 
    if (backgroundStatus != BackgroundAccessStatus.Denied && backgroundStatus != BackgroundAccessStatus.Unspecified) 
    { 
     try 
     { 
      BackgroundTaskBuilder taskBuilder = new BackgroundTaskBuilder(); 
      taskBuilder.Name = taskName; 
      PushNotificationTrigger trigger = new PushNotificationTrigger(); 
      taskBuilder.SetTrigger(trigger); 
      taskBuilder.TaskEntryPoint = "Push.Notification"; 
      BackgroundTaskRegistration task = taskBuilder.Register(); 
     } 
     catch (Exception ex) 
     { } 
    } 
} 
  • фоновая задача:

public sealed class Notification 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     Debug.WriteLine("Background starting..."); 
     Debug.WriteLine("Background completed!"); 
    } 
} 

Я не имею ни малейшего понятия о том, что я делаю неправильно. Есть ли кто-нибудь, кто работает? (Не в теории) Для получения дополнительной информации, у меня есть 2 предупреждения, что меня беспокоит:

  • у меня есть несоответствие в архитектуре процесса в моих 2 проектов. Мой проект в Windows Phone использует «Any CPU» (не могу изменить это). Мой проект компонента «Проживающие» в Windows использует «ARM» .Если я использую «Любой процессор», помните мой WinRT, у меня есть ошибка: /platform: anycpu32bitpreferred can быть использован только с/т: ех,/т: winexe и/т:. appcontainerexe
  • Существует конфликт на зависимое собрании 2 проектов Кажется

Найденных конфликты между различными версиями одна и та же зависимая сборка. В Visual Studio дважды щелкните это предупреждение (или выберите его и нажмите Enter), чтобы исправить конфликты, в противном случае добавьте следующие переадресации привязки к узлу «runtime» в файле конфигурации приложения:

Заранее благодарен

+0

Почему бы не использовать рамку SignalR, чтобы сделать push-уведомления? – Flaugzig

ответ

1

В конце концов я сделал это.

Был ошибку в моем исходном коде я забыл реализовать IBackgroundTask:

public sealed class Notification : IBackgroundTask 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     Debug.WriteLine("Background starting..."); 
     Debug.WriteLine("Background completed!"); 
    } 
} 

И я должен был сделать мою задачу асинхр ...

public async void Run(IBackgroundTaskInstance taskInstance) 
{ 
    BackgroundTaskDeferral deferral = taskInstance.GetDeferral(); 
    // perform your async task and then call deferral complete 
    await Test(); 
    deferral.Complete(); 
} 

private static async Task Test() 
{ 
    //TODO with an await 
} 

Надеюсь, это поможет кому-то.

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