번호 : 041, 작성일자: 2024-10-21

2024.10.14 ~ 2024.10.20

✅ async & await API 코드 작성


Swift Testing을 사용해보기 위해서 일단 외부 API 네트워킹을 담당하는 코드를 작성했다.

네트워킹 담당 모듈로 작성하여 요청모델을 주면 응답모델만을 반환하도록 하여 재사용이 가능하도록 작성했다.

  1. RequestModel에서 URL주소 문자열, 쿼리파라미터, 헤더,HTTP 메서드타입, 요청 body, 디코딩할 타입 전달
  2. 디코딩 된 모델 응답

패키지로 분리했고 원격에 올릴 필요는 없어서 로컬패키지로 개발하였다.

  1. $ swift package init –name <프로젝트명> –type <타입명>
  2. Tuist Project.swift 에서 경로 입력하여 추가

테스트코드를 사용해보고 느낀점은 앱을 전체빌드하지 않아도 패키지를 mac으로 실행하거나 터미널에서 $ swift test 실행하면 응답값이 정확히 받았는지 확인할 수 있어서 굉장히 빨리 테스트할 수 있다.

🌎 WebView


미디엄블로그에 @whitelips 분이 작성한 웹뷰 관련 글들이 잘 정리되있어서 해당 글들을 봤다.

웹뷰(WebView)란 네이티브 앱에 내재되어 있는 웹 브라우저입니다.

iOS에서는 웹뷰 구현방식으로 UIWebView, WKWebView, SFSafariViewController 3가지 방식이 있는데 UIWebView는 iOS 12이상에서 사용이 불가하고, SFSafariViewController는 Safari 브라우저를 통해 웹 콘텐츠를 표시할 수 있고, WKWebView를 보통 사용한다.

WKWebView의 쿠키관리, 타임아웃, 멀티프로세스 구조 원리, 강한 참조등 WebKit 오픈소스 코드를 기반으로 설명하셔서 도움이 많이 된다. 추천

❎ UIApplication.shared.open 메서드 실패


iOS18 이후부터 UIApplication.shared.open 메서드가 호출되지 않는 이슈가 있다. 호출되지 않는 시점 콘솔을 확인해보면 BUG IN CLIENT OF UIKIT: The caller of UIApplication.openURL(:) needs to migrate to the non-deprecated UIApplication.open(:options:completionHandler:). Force returning false (NO). 라는 에러가 발생한다.

애플 개발자포럼에도 논의 중인 것 같다.

🅾️ : UIApplication.shared.open(urlString, options: [:], completionHandler: nil)

❎ : UIApplication.shared.open(urlString)

이제, open 할 때 파라미터를 주의해야한다.

🙋🏻‍♂️ 기타 사항


  1. Facebook (Meta) 개발자 심사에서는 어떻게 Debug 모드를 시도해봤는지 모르겠지만 Debug 모드도 동작하는지 확인해줘야 합니다.
  2. 티스토리 플랫폼을 통해 개발블로그를 사용했지만 인덱스별로 SEO 구글 서치콘솔이 제대로 동작하지 않고, 여러가지 이유로 미디엄으로 개발블로그로 이전했다.
  3. iOS 기존앱에 Flutter 모듈을 추가할 수 있다고 하여서 한번 검토해봤다.
    • flutter-add-to-app해당 라이브러리로 이동하여 추가할 Flutter 모듈에서 $ flutter pub get 을 하면 확인해볼 수 있다.