Как стать автором
Обновить

Проверка интернета в игре — Unity + Zenject

Доброго времени суток. Возникла задача сделать проверку интернета в игре на движке Unity. Нашел много старых и новых статей с использованием WWW и других примочек.

Попробовал организовать код для удобного использования, практически без зависимостей.

Использовал плагины:

  • Zenject – для инициализации скрипта через IInitializable и c последующей возможностью взять данную связь

  • UniRx – вместо эвенов для отслеживания изменения интернета

Для использования интерфейса, положил в контейнер класс -

public class ProjectInstaller : MonoInstaller
{
	public override void InstallBindings()
  {
  	Container.BindInterfacesTo<InternetReachabilityService>().AsSingle();
  }
}

При проверке интернета ссылаюсь на "https://www.google.ru/", но желательно чтобы был определенный собственный сервер доступный по всему миру. Есть сайты которые не доступны в некоторых странах и игроки играя в Ваше приложение получат сообщение об отсутствие интернета, хотя будет все в порядке.

Как использовать?

https://github.com/Vladimir465/InternetReachabilityService - на github выложен пример с готовым кодом, при отключении интернета появится соответствующее сообщение.

Для проверки со своим кодом вы можете -

  1. в класс с MonoBehaviour создать переменную - [Inject] private IInternetReachabilityService _internet;

  2. Сделать проверку на кнопку

    if (_internet.IsInternetReachable.Value) { //Интернет true }

  3. Подписаться на событие :

_internet.IsInternetReachable.Subscribe(_ =>
{
	//При каждом изменении свойства на false/true будет проверяться этот код 
});

Github

Спасибо за внимание.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Изменить настройки темы