-
Notifications
You must be signed in to change notification settings - Fork 1
Feature: Share Extension 구현 #151
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@stealmh 의존성 수정 했습니다 확인해 주세여 |
|
고생 많으셨습니다! 인트로와 스플래시분리는 사실 예전부터 필요하다 싶었는데 로그인으로 빼는건 생각을 아예 해본적이 없어서 추후에는 인트로라는 모듈이 따로 필요하지 않을까 라는 의견입니다! 그게 나중에 있어서 테스트하기도 쉽고 여러 방면에서 생각해 볼 필요가 있는데 뭐 이건진짜 나중이니까요. 마지막으로 ShareExtensionTests 만들어서 머지해주시면 감사하겠습니다! |
넹 감사합니당 |

#️⃣연관된 이슈
📝작업 내용
Share Extension타겟을 추가하였습니다.Intro,Splash화면과 기능을FeatureLogin로 내렸습니다.SocialLoginClient에 구글로그인에 필요한RootViewController설정 기능을 추가하였습니다.AppGroupsCapability를 추가하고, 앱 그룹간KeyChain,UserDefault공유 기능을 활성화 하였습니다.ContentSetting에Share Extension분기를 추가하였습니다.스크린샷 (선택)
💬리뷰 요구사항(선택)
Share Extension타겟을 추가하였습니다.App프로젝트 내에App타겟이Share Extension을 의존하는 형태로 추가하였습니다.Intro,Splash화면과 기능을LoginFeature로 내렸습니다.Share Extension은 워치앱이나, 위젯처럼 별도의 앱으로 동작합니다. 그렇기 때문에 토큰 관리를 고려할 수 밖에 없었고, 토큰 관련 문제가 발생 시 매번 로그인을 할 수 밖에 없는 상황이었습니다.다행이도 저희
Intro기능은TCA덕분에 의존성 분리가 잘 되어 있어 재사용이 가능했습니다.그래서
Intro기능을App타겟과ShareExtension타겟에서 전부 재사용 하고자 하위 모듈인FeatureLogin으로 이동시켰습니다.프로비저닝 파일을 새로 발급하였습니다.
Share Extension은 별도의 앱으로 동작하기 때문에, 별도의 프로비저닝 파일이 필요하여,Share Extension에 대한 프로비저닝을 발급하였습니다.또한,
App Groups,KeyChain SharingCapability를 사용하기 위해 개발자 계정 사이트에 있는 포킷 App ID에App GroupsCapability를 추가하였는데, 이렇게 App ID를 수정하게 되면 기존 프로비저닝 파일들이 전부 만료가 됩니다.물론, 프로비저닝 파일을 다시 갱신해서, xcode로 프로비저닝을 업데이트 해도 되지만, 저희는
CI/CD환경도 고려해야 하기 때문에, 아예fastlane으로 새로 발급하는 방향을 선택하였습니다.SocialLoginClient에 구글로그인에 필요한RootViewController설정 기능을 추가하였습니다.root뷰의 컨트롤러를 알아내는 작업이 필요합니다.Share Extension은root뷰의 컨트롤러를SLComposeServiceViewController프로토콜을 채용한 컨트롤러로 별도로 만들고,Info.plist에 지정해줘야 하는 방식이기 때문에, 기존에UIApplication을 활용한 방법이 통하지 않습니다.그렇기 때문에 구글 로그인 시
Share Extension의root뷰의 컨트롤러를GoogleLoginController에 알려주는 메서드를 구현하였습니다.AppGroupsCapability를 추가하고, 앱 그룹간KeyChain,UserDefault공유 기능을 활성화 하였습니다.Intro기능을 사용하기 위해선UserDefault의 로그인 정보와,KeyChain에 저장된 토큰들을 불러와야 하는데,Share Extension은 별도의 앱이기 때문에, 기존의 방법으론 불러오는게 불가능 하였습니다.그래서
AppGroups라는 Capability를 통해 포킷 앱과Share Extension앱을 하나의 그룹으로 묶고,UserDefatulClient와KeyChainClient에App Group아이디를 지정하여 같은 그룹 내에서 데이터 공유가 가능하도록 구현하였습니다.키체인은
KeyChain Sharing이라는 Capability가 필요하여 추가하였습니다.ContentSetting에Share Extension분기를 추가하였습니다.Share Extension으로ContentSetting을 호출 시 뒤로가기 버튼을 닫기 버튼으로 바꾸기 위해 분기를 추가하였습니다.close #146