문제 상황
로우코드 플랫폼에 MQTT를 통한 메시징 기능을 구현하면서 CocoaMQTT 라이브러리를 사용하게 되었습니다. 그런데 CocoaMQTT에서 사용하는 Starscream 라이브러리의 버전(4.0.4)이 낮아 Apple의 최신 프라이버시 정책에 부합하지 않는 문제가 발생했습니다. Starcream의 최신 버전(4.0.8)에 중요한 프라이버시 관련 업데이트가 포함되어 있었기 때문에, CocoaMQTT의 Starscream 의존성을 최신 버전으로 업데이트하는 방법을 찾기로 했습니다.
해결 방법: CocoaMQTT 포크하여 Starscream 의존성 수정하기
이 문제를 해결하기 위해 선택한 방법은 CocoaMQTT를 포크해서 의존성을 직접 수정하는 것이었습니다. CocoaMQTT를 포크한 후 의존성을 수동으로 업데이트하는 방식을 사용하였습니다.
1. CocoaMQTT를 Fork하기
먼저 CocoaMQTT 리포지토리를 GitHub에서 포크했습니다.
- CocoaMQTT GitHub 리포지토리로 이동합니다.
- Fork 버튼을 클릭해 내 계정으로 포크합니다.
- Fokr한 CocoaMQTT를 로컬로 Clone하였습니다.
git clone https://github.com/YOUR_USERNAME/CocoaMQTT.git
cd CocoaMQTT
2. Podspec 파일 수정
포크한 CocoaMQTT의 Podspec 파일에서 Starscream 의존성을 4.0.8로 수정하여 최신 버전을 참조하게 만듭니다.
# CocoaMQTT.podspec
...
s.dependency 'Starscream', '~> 4.0.8'
...
변경 사항을 Commit하고 Fork Repository에 Push했습니다.
git add CocoaMQTT.podspec
git commit -m "Update Starscream dependency to 4.0.8"
git push origin main
3. 프로젝트의 Podfile에서 CocoaMQTT 참조 변경
이제 프로젝트 Podfile에서 포크한 CocoaMQTT를 참조하도록 수정합니다.
# Podfile
pod 'CocoaMQTT', :git => 'https://github.com/YOUR_USERNAME/CocoaMQTT.git', :branch => 'main'
그 다음 pod install
을 실행하여 CocoaMQTT와 Starscream의 최신 버전을 설치했습니다.
pod install
설치가 완료된 후 정상적으로 작동하는지 기능을 테스트하고, Starscream의 4.0.8 버전이 반영된 것을 확인할 수 있었습니다.
추신
이 방법은 포크한 CocoaMQTT 리포지토리를 통해 의존성을 수동으로 조정하는 방식이기 때문에, 추후 CocoaMQTT가 Starscream 최신 버전을 지원하는 버전으로 업데이트된다면 공식 버전을 사용하는게 추후 유지 보수 측면에서 좋을 것 같습니다.