티스토리 뷰

 

[Fix] 앱이 백그라운드에 없을 때 공유 기능이 제대로 작동하지 않는 버그 · Issue #363 · DeveloperAcade

버그 설명 백그라운드에서 ShortcutsZip이 존재하지 않는 상태에서 공유링크를 클릭하면 비어있는 모달이 출력됩니다. 접근 단계 백그라운드에 있는 ShortcutsZip을 종료해주세요 공유받은 링크를 실

github.com

 

우선 결론만 먼저 말하자면, @State의 고질적인 문제인 것으로 밝혀졌다!

모달의 drawing cycle이 좀 다른가 싶었는데 아니었다 ㅠ

해결하려면 전송하려는 데이터를 @State말고 @Binding으로 표현해야한다.

 

 

다른 사람 코드

https://stackoverflow.com/questions/64798211/swiftui-sheet-cannot-show-correct-values-in-first-time

https://medium.com/swlh/swiftui-sheets-navigation-bars-and-broken-states-312014ed1a3e

이런식으로 전달하고자하는 데이터를 item에 Binding으로 전달해주거나, ObservableObject를 통해 문제를 해결할 수 있다.

 

첫 번째 이슈 - 바인딩으로 바꿀 수 없어..!

하지만 우리 프로젝트는 구조상 Binding으로 바꾸는것은 진짜! 대공사였다. (그래서 데이터를 Binding으로 받는 똑같은 뷰를 하나 더 만드는게 적절하다고 판단했음. 같은 코드 절대 못 참아~!)

그래서 Sheet 말고 Navigation으로 보여주는건 어떤지 팀원들한테 물어봤다 -> 다행히 받아들여짐! 

받은 딥링크 데이터를 Navigation Path에 넣는 방식으로 구현했다.

 

두 번째 이슈 - 여러개의 navigation path

탭뷰를 사용하고 있어서 총 3개의 path를 관리하고 있다. 그래서 무조건 첫 번째 탭에 정보를 Append하면, 다음과 같은 문제가 발생한다.

사용자가 두번째 탭에서 앱을 백그라운드로 돌린 상황이다. 여기서 사용자가 링크를 클릭했다고 생각하자.

그러면 사용자가 앱을 다시 켰을 땐 두번째 탭에 있을 것이다. 그런데 새로운 데이터는 첫번째 탭에 대한 path에 append되었다. 그래서 아무런 반응이 일어나지 않는다.

사용자가 첫번재 탭에 입장하고 나서야 그 링크가 실행되는 아주 이상한 현상이 발생하게 된다!!

 

숏컷집의 경우, 사용자가 최근에 이동한 탭이 App Storage에 저장된다. 이를 활용해서 switch 문을 사용하게 되었다.

또한 같은 코드를 두 번 사용하는 것을 피하기 위해 제네릭을 이용한 함수를 구현하게 되었다!

 

 

[Fix] 앱이 백그라운드에 없을 때, 비어있는 모달이 출력되는 문제 by JIWON1923 · Pull Request #379 · Deve

관련 이슈 closes #363 구현/변경 사항 sheet의 고질적인 문제여서 Navigation으로 변경하여 문제를 해결하였습니다. 스크린샷 Simulator.Screen.Recording.-.iPhone.14.Pro.-.2023-01-24.at.01.16.04.mov To R...

github.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함