بررسی اتصال به اینترنت در یونیتی

امروزه کمتر نرم افزار یا اپلیکیشنی را می توان یافت که نیازمند اتصال به اینترنت نباشد. اگر شما هم در نرم افزار خود به بررسی اتصال به اینترنت در یونیتی نیاز دارید، این مقاله ممکن است به کارتان بیاید.

void Start () {
1.        StartCoroutine(checkInternetConnection(isConnected =>
        {
2.            if (isConnected)
3.                Debug.Log("Internet Available");
            else
4.               Debug.Log("No Internet Connection");
        })); 
      
    }

5.    IEnumerator  checkInternetConnection(System.Action<bool> isConnected)
    {
6.        WWW www = new WWW("https://marynet.ir");
7.        yield return www;
8.        if (www.error != null)
9.            isConnected(false);
        else
10.            isConnected(true);
    }

توضیح خط به خط کد

1 بررسی اتصال به اینترنت در یونیتی می تواند یک عملیات زمانبر بوده و روال اجرای اپلیکیشن یا نرم افزار شما را دچار وقفه کند. پس بهتر است تا این عملیات را از طریق فراخوانی یک co-routine انجام دهیم. من در اینجا نام checkIntenetConnection را برای co-routine خود انتخاب کرده ام.

همچنین نیازمند دریافت نتیجه کار از co-routine خود خواهیم بود. در یونیتی یکی از تکینک های مناسب برای دریافت نتایج از co-routine ها استفاده از delegate هاست. من برای اینکار یک System.Action از نوع بولین برای دریافت مقدار بازگشتی استفاده کرده ام. بولین بودن آن هم به این خاطر است که صرفا می خواهیم بدانیم که اتصال به اینترنت برقرار است یا خیر.

2. قسمت 2 تا 4 کد صرفا بررسی نتیجه اجرای co-routine است که در صورت موفق بودن پیغام وجود دسترسی به اینترنت و در غیر این صورت پیغام عدم دسترسی نمایش داده می شود.

5. در این قسمت خود co-routine را تعریف کرده ایم. اگر در مورد نجوه تعریف co-routine ها نیاز به اطلاعات تکمیلی دارید می توانید به همان دو لینک بالا رجوع کنید.

6. برای بررسی اتصال به اینترنت در یونیتی روشهای مختلفی وجود دارد. اما من بدنبال اطمینان از دسترسی نرم افزارم به وب سایت خاصی هستم به همین خاطر از کلاس www برای بررسی برقراری ارتباط با وب سایت خودم استفاده کرده ام.

7. این خط جایی است که اتصال به وب سایت عملا تست می شود. دستور yield هم از جمله مواردی است که در راهنمای کاربرد co-routine ها می توانید در موردش اطلاعات بیشتری کسب کنید. اما در حد این مقاله همین قدر کافیست که بگوییم این دستور باعث انجام یک عملیات و اتمام co-routine خواهد شد.

8. برای اینکه بدانیم ارتباط با وب سایت مربوطه موفقیت آمیز بوده یا نه ، null نبودن ویژگی error از کلاس www را بررسی کرده ایم. قاعدتا اگر به هر دلیلی این ارتباط با مشکل مواجه شود ، مقدار ویژگی error خالی نخواهد بود.

9 و 10. در این دو خط هم بسته به نتیجه کار مقدار بازگشتی از co routine تعیین شده است.

اطلاعات تکمیلی

از آنجا که سعی من بر اینست که نمونه کدها خلاصه و تا حد امکان کاربردی باشند. در نتیجه برای جلوگیری از آشفتگی مطالب و طولانی شدن آنها وارد جزئیات اصطلاحات تخصصی نمی شوم. اگر در مورد co-routine ها و delegate ها نیاز به اطلاعات بیشتری دارید می توانید به این صفحات رجوع کنید. استفاده از co-routine ها در یونیتی ( زبان انگلیسی) و راهنمای کامل بکارگیری co-routine ها در یونیتی ( زبان انگلیسی)

سایر روشهای بررسی اتصال به اینترنت در یونیتی

  • کلاس www در نسخه های جدید یونیتی منسوخ شده است. می توانید خطوط 6 و 7 کد بالا را با این دو خط جایگزین کنید.
 UnityWebRequest request = new UnityWebRequest("http://google.com");
 yield return request.SendWebRequest();
  • برای بررسی اتصال به اینترنت در یونیتی روشهای دیگری هم وجود دارند. بعنوان نمونه می توانید از موارد زیر استفاده کنید:

Application.internetReachability

Network.TestConnection()

ping گرفتن از یک آدرس خاص