본문 바로가기
C.W.K.
Stream
Lesson 05 of 05 · published

유니버설 앱 하나

~11 min · universal, iphone, ipad, lease, size-class

Level 0불씨
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

유리 둘, 계약 하나

아이폰과 아이패드의 Smolder 는 유니버설 앱 하나지, 리스 둘인 제품 둘이 아니야. 같은 게이트웨이, 같은 구경꾼 기본값, 같은 데몬 정체성, 크롬의 같은 잔불. 사이즈 클래스는 세션을 몇 개 볼 수 있는지를 바꾸지, 키보드 주인을 바꾸지 않아. 아이폰은 세션 하나에 포커스해. 아이패드는 둘을 보여 줄 수 있어. 입력 소유는 여전히 하나야. 앱이 둘이면 리스를 틀릴 자리가 둘이고, TestFlight 열차가 둘이고, 핀이 둘이고, 행업이 한쪽 유리에서는 살해, 다른 쪽에서는 분리가 되는 길이 둘이야.

여기서 유니버설은 마케팅 단어가 아니야. 아이패드가 "진짜 주머니 터미널"이 되고 아이폰이 더 느슨한 뇌의 뷰어가 되는 걸 거절하는 거야. 일하는 계약은 양쪽 다 호스트 일 이어가기야. 보고, 조종을 잡고, 호스트를 통해 셸을 열어. 하드웨어 키보드가 있다고 아이패드가 조용히 조종을 잡으면, 키가 더 많은 조용한 고름이야. "뷰어일 뿐"이라서 아이폰이 조종을 못 잡으면 두 번째 제품이야. 둘 다 계약 하나 시험에 져.

보이는 둘이 쓰는 사람 둘이 아니야

아이패드는 호스트 세션 둘을 화면에 올릴 수 있어. 투영의 사치야. 입력 리스 둘을 동시에 가질 허가가 아니야. 포커스된 세션이, 조종을 잡았으면, 쓰는 사람이야. 다른 쪽은 크고 옆에 있어도 구경꾼이야. 다른 세션을 탭한다고 리스를 훔치지 않아. 조종 잡기가, 명시적으로, 하고, 그때 첫 세션이 읽기 전용이 돼. 맥이 창 둘로 이미 가르쳤어. 아이패드는 유리 하나 위의 창 둘이지, 새 소유 모델이 아니야.

아이패드의 하드웨어 키보드는 훔치기를 쉽게 느껴지게 해. 쉬움이 위험이야. 키 입력은 어느 세션이 리스를 쥐었는지 알아야 하고, 아무도 안 쥐었으면 아무 데도 가면 안 돼. 커서가 마지막에 칠한 판이 아니라. 리스 없는 커서는 장식이야. 장식에 치는 건, 보기만 한다고 생각한 세션에 제출하는 길이야.

키보드 주인은 항상 하나

아이폰, 세션 하나 보임: Take Control 전까지 여전히 구경꾼이야. 유리가 작다는 게 자동 조종의 논리가 아니야. 아이패드, 세션 둘 보임: 정확히 하나에서 Take Control 할 때까지 여전히 구경꾼이야. 회전, 분할 보기, Stage Manager. 그건 사각형을 몇 개 볼 수 있는지를 바꿔. 리스를 찍어내지 않아. 사이즈 클래스 콜백이 리스를 획득하면, 관찰이 소유 모델을 리사이즈한 거고, 그건 PTY 를 리사이즈하는 것보다 나빠.

전달은 TestFlight 로 바이너리 하나. 트랙 7 이 그 파이프라인을 고집할 거야. 이 레슨이 고집하는 이유는: 계약 하나는 흘러가는 앱 둘을 못 견뎌. 목적지 트랙의 나중 이정표(체크포인트, 직접 SSH, 키)도 앱 하나의 이정표지, 아이패드 전용 SSH 클라이언트와 아이폰 전용 뷰어가 아니야. 그걸 섞으면 주머니가 제품 둘이라고 가족을 가르친 거야. 아니야. 불 하나, 유리 크기 둘, 키가 있을 때 키의 주인 하나, 오늘 키보드의 주인 하나.

유니버설 앱 하나. 사이즈 클래스는 세션을 몇 개 볼 수 있는지를 바꾸지, 키보드 주인을 바꾸지 않아. 아이폰은 하나, 아이패드는 둘일 수 있고, 입력은 여전히 하나야. 앱이 둘이면 리스를 틀릴 자리가 둘이야.

Code

사이즈 클래스는 보임이지 소유가 아니야·text
iPhone compact     ->  one session visible
iPad regular       ->  one or two sessions visible
both               ->  spectator default
both               ->  at most ONE input lease in the daemon
both               ->  same gateway, same pin, same ember

# Hardware keyboard on iPad
  keystrokes -> the session that HOLDS the lease
  if no lease -> nowhere (cursor is decoration)
  tap other session -> focus for viewing, not a silent take-control

# Forbidden splits of the product
  "iPhone is viewer, iPad is terminal"
  "iPad auto-takes control because it has a keyboard"
  "size-class callback acquires the lease"
  two bundle identities, two TestFlight trains, two pins

External links

Exercise

아이폰(세션 하나)이랑 아이패드(세션 둘)를 나란히 그려. 유리마다 누가 구경꾼이고, 왼쪽 세션을 명시적으로 Take Control 한 뒤에 누가 조종자인지 표시해. 그다음 아무도 조종을 안 잡았을 때 아이패드에서 하드웨어 키보드 글자가 뭘 하는지 써. 답이 "포커스된 판에 그래도 친다"면, 리스는 이미 사이즈 클래스로 갈라진 거야.
Hint
보이는 판이 둘이어도 쓰는 사람은 영일 수 있어. 보기용 포커스는 입력용 포커스가 아니야. 데몬이 후자를 직렬화해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.