gpt4 book ai didi

ios - 统一检查互联网连接可用性

转载 作者:可可西里 更新时间:2023-11-01 05:01:14 24 4
gpt4 key购买 nike

我正在将我们的游戏移植到 Unity,需要一些有关 Unity 中互联网连接检查的帮助。Unity 官方文档说“不要使用 Application.internetReachability”。所以我很困惑哪些代码可以在这里工作。在任何论坛中都没有找到任何突出的解决方案。我想检查 wi-fi 或 GPRS 是否开启,这应该适用于 iOS 和 Android。提前致谢。

最佳答案

解决方案

Application.internetReachability是你需要的。连同Ping ,大概吧。

这是一个例子:

using UnityEngine;

public class InternetChecker : MonoBehaviour
{
private const bool allowCarrierDataNetwork = false;
private const string pingAddress = "8.8.8.8"; // Google Public DNS server
private const float waitingTime = 2.0f;

private Ping ping;
private float pingStartTime;

public void Start()
{
bool internetPossiblyAvailable;
switch (Application.internetReachability)
{
case NetworkReachability.ReachableViaLocalAreaNetwork:
internetPossiblyAvailable = true;
break;
case NetworkReachability.ReachableViaCarrierDataNetwork:
internetPossiblyAvailable = allowCarrierDataNetwork;
break;
default:
internetPossiblyAvailable = false;
break;
}
if (!internetPossiblyAvailable)
{
InternetIsNotAvailable();
return;
}
ping = new Ping(pingAddress);
pingStartTime = Time.time;
}

public void Update()
{
if (ping != null)
{
bool stopCheck = true;
if (ping.isDone)
{
if (ping.time >= 0)
InternetAvailable();
else
InternetIsNotAvailable();
}
else if (Time.time - pingStartTime < waitingTime)
stopCheck = false;
else
InternetIsNotAvailable();
if (stopCheck)
ping = null;
}
}

private void InternetIsNotAvailable()
{
Debug.Log("No Internet :(");
}

private void InternetAvailable()
{
Debug.Log("Internet is available! ;)");
}
}

注意事项

  1. Unity 的 ping 不做任何域名解析,即它只接受 IP 地址。因此,如果某个玩家可以访问 Internet 但存在一些 DNS 问题,该方法会说他可以访问 Internet。
  2. 这只是一次 ping 检查。不要指望它是 100% 准确的。在极少数情况下,它会为您提供虚假信息。

关于ios - 统一检查互联网连接可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com