Unity

[Unity] ios unitywebrequest.get

Mirab 2021. 6. 28. 00:01

도입 배경

게임을 개발할 때 시간과 관련해서 처리를 할 때가 있다.

지금 개발하고 있는 게임에서는 시간과 관련해서 처리해야 하는 것들이 존재하고,

동시에 사용자로 인해 시간을 조작할 수 없도록 하기위해서 인터넷 시간을 받아와 운영할 수 있게 했다.

IEnumerator GetCurrentTime() 
{
    UnityWebRequest request = new UnityWebRequest();
    using (request = UnityWebRequest.Get(url))
    {
        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.ConnectionError)
        {
            Debug.Log("Failure get current Time in GoogleNTP!");
        }
        else
        {
            // 서버에서 응답하는 패킷 중에 Date 정보만 추출해서 가져온다.
            string date = request.GetResponseHeader("date");
        }
    }
}

안드로이드에서는 구동하는데에는 문제가 없었는데, IOS에서 구동하는 데에서는 읽어올 수 없었다.

이유를 알아보니까, IOS에서는 Secure 하지 않다는 이유로 http 프로토콜을 기본적으로 차단하고 있었다.

그래서 기존에 사용하는 url에 http를 통해 받아올 수 없었던 것 같다. (IOS는 기본적으로 http 통신이 불가능)

 

간단하게 해결한 방법은 기존의 사용하던 http 프로토콜을 https 프로토콜로 변경해서 사용하니까 정상적으로 작동했다. 그렇지만, http로 해결해야 하는 경우는 info.plist에서 App Transport Security Settings를 수정해야 한다고 한다.

https://www.hahwul.com/2019/03/11/ios-app-http-app-trasport-security/

 

iOS App에서 HTTP 통신 허용하기(+App Trasport Security란?)

Security engineer, Developer and H4cker

www.hahwul.com

주의할 점

 

ios 9.0 이전에서는 NSAllowsArbitraryLoads가 true이면 하위 옵션들의 설정과는 관계없이 무조건 true이지만, ios 10.0 이상에서는 NSAllowsArbitraryLoads가 trud여도 하위 옵션들이 있다면 최상위 옵션이 무시된다고 한다.

따라서 최상위 옵션만 사용하고 싶다면 하위 옵션들은 삭제하자. (물론 하위 옵션들도 사용한다면 다 체크해줘야 한다.)

 

info.plist에 추가할 때, 첫 번째 <dict> 태그 밑에 넣어줘야 한다고 한다.

https://aerimforest.tistory.com/144

 

iOS HTTP 통신 허용하기

iOS에서 HTTP 통신을 하려는 경우 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist fil..

aerimforest.tistory.com

정리

좋은 방법은 http -> https 로 바꿔서 보안적인 방법으로 사용하는 것이 가장 좋지만, http 사용이 필요하다면 위의 처럼 따로 옵션을 추가해줘야 한다.

 

ios 정책상 ios 9.0 부터 생겼다고 하는데 확실히 폐쇄적인 정책? 보다는 보안에도 신경을 많이 쓴 부분이 보인다.

'Unity' 카테고리의 다른 글

SOLID, 객체지향 원칙  (0) 2021.08.15
[Unity] RemoveListener, RemoveAllListener  (0) 2021.04.15
[Unity] 소수점 처리  (0) 2021.04.14
[Unity] text component  (0) 2021.04.03
[Unity] RectTransform width height 변경하는 방법  (0) 2021.04.02