- Проверка интернет-соединения во время выполнения в Unity
- 3 ответа
- Проверьте подключение к Интернету от Unity
- ОТВЕТЫ
- Ответ 1
- Ответ 2
- Ответ 3
- Ответ 4
- Проверьте подключение к Интернету от Unity
- 3 ответа
- noosxe / test.cs
- I’m a coder. Welcome to my blog. Here are some of the records on my job.
- Categories
- Check Unity Internet Connectivity
Проверка интернет-соединения во время выполнения в Unity
Как я могу проверить интернет-соединение внутри функции обновления в единстве? Я хочу знать, подключен ли пользователь или нет, и исходя из этого просто отключить некоторые функции моей игры.
Похоже, что нет вопросов, как это было задано здесь ранее, или, если это так, он просто проверяет соединение в функции Start. Вот код, который у меня есть:
3 ответа
Вам необходимо периодически запускать функцию Update .
@mjwills правильное решение, и оно работает нормально, но никто не заставляет вас проверять соединение в каждом отдельном кадре вашей игры. Вам не нужно этого делать.
Лучшим решением является проверка соединения при нажатии кнопки или при возникновении события в вашей сцене.
Unity’s Application.internetReachability не является лучшим решением для обнаружения в Интернете, поскольку оно не было разработано для этой цели (как указано в документации).
Надлежащим способом является внедрение метода, называемого Captive Portal Detection, который используется всеми основными ОС для определения их статуса в Интернете. При правильной реализации он может даже определять, когда сеть ограничена (отели или аэропорты), так как он опирается на HTTP-запросы известного контента. Поэтому это гораздо надежнее.
Это не так сложно реализовать. Вам необходимо сделать HTTP-запрос к известной «проверочной странице» и проверить, было ли возвращено правильное содержимое.
Однако, если вы хотите получить законченное, готовое к использованию решение, вы можете проверить ресурс Eazy NetChecker, который я создал для этой цели. У этого также есть события и пользовательский редактор. Это не бесплатно, но это супер дешево!
Источник
Проверьте подключение к Интернету от Unity
У меня есть проект Unity, который я создаю для платформ Android и iOS. Я хочу проверить подключение к Интернету на устройствах Desktop, Android и iOS. Я читал о трех разных решениях:
Пинг что-то (например, Google) — мне совершенно не нравится такое решение, и я читал об ошибках на Android.
Application.internetReachability — Согласно документации Unity, эта функция будет определять только то, что у меня есть ВОЗМОЖНОСТЬ подключения к Интернету (это не гарантирует реального соединения).
Network.TestConnection() — Если у меня нет подключения к Интернету, мое приложение не работает. Так что это неверно.
Как определить, есть ли у меня интернет-соединение внутри Unity?
ОТВЕТЫ
Ответ 1
На самом деле я не верю, что Network.TestConnection() является подходящим инструментом для этой работы. Согласно документации, мне кажется, что она предназначена для проверки работоспособности NAT и доступности вашего клиента по IP, но вы хотите проверить, есть ли у вас общее подключение к Интернету.
Вот решение, которое я нашел в Unity ответы пользователя pixel_fiend, которое просто тестирует веб-сайт, чтобы определить, есть ли у пользователя подключение. Одним из преимуществ этого кода является то, что он использует IEnumerator для асинхронной работы, поэтому тест подключения не будет задерживать остальную часть вашего приложения:
Вы можете изменить веб-сайт на любой другой или изменить код так, чтобы он возвращал успех, если любой из нескольких сайтов доступен. На самом деле, нет способа проверить подлинность интернет-соединения, не пытаясь подключиться к определенному сайту в интернете, поэтому «пинг» одного или нескольких веб-сайтов, подобных этому, вероятно, будет лучшим выбором для определения интернет-соединения.
Ответ 2
я знаю, что это старо, но, возможно, может помочь вам.
Ответ 3
Ответ 4
Правильный способ проверить «гарантированное» подключение к Интернету — это сделать обнаружение портативного портала с помощью HTTP-запроса на место с известным содержимым. Это то, как сами операционные системы проверяют, должны ли они предоставить пользователю экран входа в wifi.
Простой пинг или проверка состояния ошибки/успеха запроса www не достаточно, например. страница входа в систему гостиницы/аэропорта wifi может быть возвращена без кода ошибки (вместо желаемой страницы).
Дополнительно, например, на iOS есть новые дополнительные ограничения (безопасность транспорта приложений, позволяющая использовать http только при явном разрешении белого).
Мой актив — простое решение, хотя и не бесплатное: Проверка доступности Интернета в хранилище активов.
Источник
Проверьте подключение к Интернету от Unity
У меня есть проект Unity, который я создаю для платформ Android и iOS. Я хочу проверить подключение к Интернету на устройствах Desktop, Android и iOS. Я читал о трех разных решениях:
Пинг что-то (например, Google) — мне совершенно не нравится такое решение, и я читал об ошибках на Android.
Application.internetReachability — Согласно документации Unity, эта функция будет определять только то, что у меня есть ВОЗМОЖНОСТЬ подключения к Интернету (это не гарантирует реального соединения).
Network.TestConnection() — Если у меня нет подключения к Интернету, мое приложение не работает. Так что это неверно.
Как определить, есть ли у меня интернет-соединение внутри Unity?
3 ответа
Я действительно не верю, что Network.TestConnection() является правильным инструментом для этой работы. Согласно документации, мне кажется, что он предназначен для тестирования работы NAT, и ваш клиент публично доступен по IP, но то, что вы хотите для проверки есть ли у вас общая доступность в Интернете.
Вот решение, которое я нашел в Unity Answers пользователем pixel_fiend, который просто проверяет веб-сайт, чтобы узнать, имеет ли пользователь подключение. Одним из преимуществ этого кода является то, что он использует IEnumerator для асинхронной работы, поэтому тест на соединение не будет поддерживать остальную часть вашего приложения:
Вы можете изменить веб-сайт на все, что захотите, или даже изменить код, чтобы вернуть успех, если доступно какое-либо из нескольких сайтов. AFAIK нет возможности проверить подлинность подключения к Интернету, не пытаясь подключиться к определенному сайту в Интернете, поэтому «пингование» одного или нескольких таких сайтов, вероятно, будет лучшим выбором при определении возможности подключения.
Источник
noosxe / test.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
// Unity3D C# test for internet connection |
IEnumerator CheckConnection () |
< |
const float timeout = 10 f ; |
float startTime = Time . timeSinceLevelLoad ; |
var ping = new Ping ( » 8.8.8.8 » ); |
while ( true ) |
< |
internetAvailableText = » Checking network. » ; |
if ( ping . isDone ) |
< |
internetAvailableText = » Network available. » ; |
yield break ; |
> |
if ( Time . timeSinceLevelLoad — startTime > timeout ) |
< |
internetAvailableText = » No network. » ; |
yield break ; |
> |
yield return new WaitForEndOfFrame (); |
> |
> |
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник
I’m a coder. Welcome to my blog. Here are some of the records on my job.
Categories
Check Unity Internet Connectivity
I have a Unity project which I build for Android and iOS platforms. I want to check for internet connectivity on Desktop, Android, and iOS devices. I’ve read about three different solutions:
Ping something (for example Google) — I totally dislike such decision, and I’ve read about mistakes on Android.
Application.internetReachability — According to Unity’s documentation, this function will only determine that I have a POSSIBILITY of connecting to the Internet (it doesn’t guarantee a real connection).
Network.TestConnection() — If I have no Internet connection, my application fails. So this isn’t correct either.
How can I determine whether I have internet connectivity from within Unity?
I don’t actually believe that Network.TestConnection() is the right tool for this job. According to the documentation, it looks to me like it’s meant for testing if NAT is working and your client is publicly reachable by IP, but what you want to check for is whether you have general internet connectivity.
Here is a solution that I found on Unity Answers by user pixel_fiend, which simply tests a website to see if the user has connectivity. One benefit of this code is that it uses IEnumerator for asynchronous operation, so the connectivity test won’t hold up the rest of your application:
You can change the website to whatever you want, or even modify the code to return success if any one of a number of sites are reachable. AFAIK there is no way to check for true internet connectivity without trying to connect to a specific site on the internet, so «pinging» one or more websites like this is likely to be your best bet at determining connectivity.
Источник