"ChatGPT와 몇 년 대화하며 알게 된 AI의 한 가지 특성"

 ChatGPT를 사용한 지도 꽤 오래되었다. 처음에는 단순히 코드를 물어보는 용도로 시작했지만, 지금은 개발, 사업, 계약, 투자 등 정말 다양한 주제로 대화를 나누고 있다. 그러다 문득 한 가지 특성을 발견했다. ChatGPT는 사람이나 회사를 쉽게 비난하지 않는다. 예를 들어 내가 실제 경험을 이야기하면 AI는 내 말을 무시하지 않는다. "그럴 가능성도 있습니다." "그렇게 느끼셨을 수 있습니다." "그런 해석도 가능합니다." 이런 식으로 대답한다. 하지만 그 다음 단계로 넘어가지는 않는다. 예를 들어, "그 회사는 원래 악덕 회사입니다." 또는 "상대방이 일부러 그렇게 한 것입니다." 처럼 의도나 악의를 단정해서 말하지 않는다. 처음에는 답답하다고 생각했다. '내가 실제로 겪은 일인데 왜 이렇게 조심스럽게 말하지?' 하지만 오랫동안 사용하면서 이유를 조금은 이해하게 되었다. AI는 누군가의 경험을 존중하면서도, 그 경험만으로 상대방의 의도까지 사실처럼 단정하지 않으려는 성향이 있었다. 생각해 보면 이것은 꽤 합리적인 방식이다. 같은 사건이라도 서로의 입장은 다를 수 있고, AI는 한쪽 이야기만 듣고 상대를 비난하는 도구가 되어서는 안 되기 때문이다. 그렇다고 사용자의 말을 무조건 부정하는 것도 아니다. 확인 가능한 사실은 사실대로 인정하고, 확인할 수 없는 의도는 가능성으로만 표현한다. 오랫동안 사용해 보니 이것이 ChatGPT의 일관된 답변 방식이라는 인상을 받았다. AI를 사용하다 보면 가끔은 너무 신중하다고 느껴질 수도 있다. 하지만 한편으로는 이런 특성 덕분에 AI가 근거 없는 비난이나 명예훼손에 쉽게 이용되지 않는다는 장점도 있다고 생각한다. 결국 AI는 사람처럼 편을 드는 존재라기보다, 사실과 추측을 최대한 구분하려는 도구 에 더 가까운 것 같다.

iOS WebView 네이버 로그인 후 화면 깨짐 해결 (SafeArea 무시 / 상태바 사라짐)

iOS WebView 기반으로 앱을 만들면서 네이버 로그인을 붙였는데, 이상한 버그를 하나 만났다.


로그인까지는 문제없이 잘 된다.

그런데 로그인 이후부터 앱 화면이 전부 이상하게 깨지기 시작한다.


상단 상태바가 사라지고, SafeArea가 완전히 무시되면서

모든 화면이 풀스크린처럼 표시된다.

기존에는 정상적으로 보이던 페이지들도 전부 영향을 받는다.


처음에는 웹 쪽 문제라고 생각했다.

CSS나 viewport 설정이 잘못된 줄 알고 이것저것 수정해봤는데 전혀 해결되지 않았다.


이상하게도 이 문제는 항상 발생하는 게 아니라

네이버 로그인 화면을 한 번 거쳤다가 돌아온 이후부터 발생했다.


이 시점에서 웹 문제가 아니라 iOS 쪽 문제일 가능성이 높다고 판단했다.


결론적으로 원인은 WebView의 SafeArea 처리와 네이버 로그인 과정에서의 화면 전환이 충돌하면서 발생한 문제였다.


네이버 로그인은 내부적으로 SafariViewController나 외부 웹뷰 형태로 화면이 전환되는데,

이 과정에서 iOS가 SafeArea를 다시 계산하지 않거나 WebView가 풀스크린 상태로 고정되는 경우가 있다.


특히 SwiftUI에서 아래와 같은 설정이 들어가 있으면 문제가 더 확실하게 나타난다.


.ignoresSafeArea()


이 설정이 있는 상태에서 로그인 화면을 거치고 돌아오면

WebView가 계속 전체 화면을 덮어버리는 상태가 된다.


해결 방법은 생각보다 단순했다.


우선 .ignoresSafeArea() 설정을 제거하거나 꼭 필요한 영역에서만 제한적으로 사용하도록 수정했다.

이것만으로도 대부분의 경우 문제가 해결된다.


그리고 WebView를 감싸는 구조도 한 번 점검해봤다.

불필요하게 전체 화면을 덮는 구조 대신, SafeArea 기준으로 자연스럽게 렌더링되도록 단순하게 구성했다.


예를 들어 이런 식으로 정리했다.


VStack {

    WebView(urlString: "https://example.com")

}


그래도 로그인 이후 화면이 깨지는 경우가 있다면

WebView를 한 번 다시 로드해주는 것도 도움이 된다.


webView.reload()


나는 이 문제를 해결하기까지 꽤 삽질을 많이 했다.


CSS 문제라고 생각해서 viewport를 계속 수정해보기도 했고,

meta 태그를 바꿔보기도 하고,

웹 쪽 SafeArea 대응도 해보고,

네이버 SDK 문제까지 의심해봤지만 전부 아니었다.


결국 원인은 웹이 아니라 iOS WebView의 렌더링 문제였다.


혹시 iOS WebView에서 네이버 로그인을 붙였는데

로그인 이후 화면이 풀스크린처럼 깨지거나 상태바가 사라진다면

SafeArea 처리와 WebView 구조를 먼저 의심해보는 게 좋다.


특히 SwiftUI를 사용하고 있다면

.ignoresSafeArea() 설정이 들어가 있는지 꼭 확인해보자.


나처럼 몇 시간 날리는 일은 줄일 수 있을 거다

댓글