В моем приложении для Windows Phone 10 у меня есть длительная фоновая задача, запускаемая RfcommConnectionTrigger. Эта задача будет выполняться, пока мое устройство Bluetooth Rfcomm подключено.
Теперь я хочу достичь следующего:
- Устройство Bluetooth отправляет некоторые данные в приложение на телефоне (работает)
- Телефон ищет значение с помощью HTTP-запроса (не работает)
- Телефон отправляет результат обратно к устройству Bluetooth (работающему)
Проблема с №2 в том, что как только я блокирую устройство, все HTTP-запросы по какой-то причине перестают работать. Я просто использую System.Net.Http.HttpClient
для выполнения запроса, там ничего особенного не происходит. В частности, исключение создается в HttpClient.SendAsync
.
Как обойти это ограничение?
Я нашел решение. Кажется, это полностью недокументированная «функция» — вам нужно добавить условие SystemConditionType.InternetAvailable
к вашей фоновой задаче, чтобы разрешить ей использовать Интернет, когда устройство заблокировано. Я надеюсь, что это не означает, что когда телефон теряет доступ к Интернету, фоновая задача прекращается.
Это также означает, что теперь телефон должен быть подключен к Интернету, чтобы запустите фоновую задачу, которая все еще раздражает, но я думаю, что смогу с этим жить.