2016-12-08 3 views
0

Я пытаюсь проверить подключение к Интернету в проекте PCL, который используется проектами Xamarin.iOS и Xamarin.Android. Я собираюсь из своих исследований, что WebClient не может использоваться в PCL, но я не смог найти удовлетворительное решение, которое не использует WebClient. Вот код, который я бы хотел использовать:C#: Как проверить доступ в Интернет в проекте PCL

try 
{ 
    using (var client = new WebClient()) 
    { 
     using (var stream = client.OpenRead("http://www.google.com")) 
     { 
      return true; 
     } 
    } 
} 
catch 
{ 
    return false; 
} 

Кто-нибудь знает о хорошем решении, которое так же просто?

ответ

2

Самый простой способ заключается в использовании плагин Connectivity от Джеймса Montemagno:

https://github.com/jamesmontemagno/ConnectivityPlugin

Вы устанавливаете это, тогда звоните:

CrossConnectivity.Current.IsConnected 

с вашего PCL. Вы даже можете подписаться на событие, чтобы узнать, когда произойдёт изменение связи:

CrossConnectivity.Current.ConnectivityChanged += <handler> 

Это работает на iOS и Android.

+0

Я получаю необработанное исключение при попытке реализовать плагин в PCL: «System.NotImplementedException: Эта функция не реализована в портативной версии этой сборки. Вы должны ссылаться на пакет NuGet из основного проекта приложения, чтобы ссылаться на реализацию конкретной платформы ». Я следил за этим советом и просто реализовал его отдельно в каждом конкретном проекте, и это работает. – Jonathan

+0

Спасибо @JimBobBennet! Я думаю, что вы, возможно, только что спасли мою жизнь ... – Jonathan

+1

Рад, что он работает, и не благодарите меня - спасибо Джеймсу Монтеманьо - его плагины фантастичны! – JimBobBennett

-2

Использование кросс плагин подключения Джеймсом Montemagno

+0

Вы знаете, что уже есть принятый ответ, говорящий точно, что вы только что сказали, что было опубликовано 11 месяцев назад, правильно? – louisfischer

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