Доступ в Интернет в длительной фоновой задаче

В моем приложении для Windows Phone 10 есть длительная фоновая задача, запускаемая RfcommConnectionTrigger. Эта задача будет выполняться до тех пор, пока мое устройство Bluetooth Rfcomm подключено.

Теперь я хочу добиться следующего:

  • Устройство Bluetooth отправляет некоторые данные в приложение на телефоне (работает)
  • Телефон ищет значение с помощью HTTP-запроса (не работает)
  • Телефон отправляет результат обратно на устройство Bluetooth (работает)

Проблема с #2 в том, что как только я блокирую устройство, все HTTP-запросы почему-то начинают давать сбой. Я просто использую System.Net.Http.HttpClient для выполнения запроса, ничего особенного там не происходит. В частности, исключение выдается в HttpClient.SendAsync.

Как мне обойти это ограничение?


person Size43    schedule 12.05.2016    source источник
comment
Может чего-то не хватает в манифесте приложения? (просто предположение)   -  person Pedro G. Dias    schedule 13.05.2016
comment
@PedroG.Dias Возможно, я не уверен. Что я должен искать? -- У меня есть очевидные возможности, такие как Интернет (клиент), все включено.   -  person Size43    schedule 13.05.2016
comment
А как насчет фоновых задач? Я видел, что фоновые задачи используют настенные часы в общей сложности 30 секунд, что бы это ни значило — может быть, вы истекли по какой-то странной причине? msdn.microsoft. com/en-us/windows/uwp/launch-resume/   -  person Pedro G. Dias    schedule 13.05.2016
comment
Определенно нет - я могу запустить приложение, и как только я заблокирую экран, запросы начинают завершаться с ошибкой, даже через 5 секунд. Кроме того, ошибка говорит Exception thrown: 'System.Runtime.InteropServices.COMException' in mscorlib.ni.dll WinRT information: The server name or address could not be resolved, что, я думаю, не указывает на то, что задача BG истекла. время.   -  person Size43    schedule 13.05.2016


Ответы (1)


я нашел решение. Кажется, это совершенно недокументированная «функция» — вам нужно добавить условие SystemConditionType.InternetAvailable к вашей фоновой задаче, чтобы разрешить ей использовать Интернет, когда устройство заблокировано. Я надеюсь, что это не означает, что когда телефон теряет доступ в Интернет, фоновая задача уничтожается.

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

person Size43    schedule 13.05.2016