간단히 말해서 Apple Watch: iOS 개발자를 위한 기능 소개

게시 됨: 2022-03-11

지난 6월 WWDC에서 발표되고 최근에 출시된 Apple Watch SDK에 대해 많은 우려가 있었습니다.

이것은 기능이 제한된 첫 번째 라운드에 불과합니다. Apple Watch v2가 뒤따를 예정이지만 그렇게 빨리는 아닙니다. 따라서 미래 지향적인 iOS 개발자는 몇 달을 기다려야 합니다.

개발자들 사이의 감정은 매우 다양합니다. 많은 iOS 개발자들은 Apple Watch SDK와 그 기능에 의해 부과된 많은 제한 사항에 실망했습니다. 다른 한편으로, 우리 중 많은 사람들이 흥분하는 반면, 다른 사람들은 중립적 입장에서 너무 멀지 않습니다. 그러나 결국 모든 사람들은 가지고 놀 수 있는 새로운 장난감을 갖게 된 것을 기뻐하는 것 같습니다.

눈길을 끄는 것 중 하나는 Apple Watch 사용자를 지칭하는 방식입니다. 그들은 사용자모바일 사용자 가 아니며, 사용자를 관찰 하거나 약간의 독창성을 지닌 관찰자 도 아닙니다. 그들은 단순히 착용자 입니다. 약간 이상하게 들리는 용어입니다. 왜냐하면 사용자가 를 사용 하면 그가 상호작용한다는 의미로 착용자가 를 착용 하고 수동적인 사용법처럼 들리기 때문입니다. 물론 Apple Watch는 수동적인 기기가 아닙니다. 특히 iPhone과 함께 사용할 때 시계의 전통적인 기능과 현대 기술이 지원하는 고급 옵션을 결합합니다. 전화기가 단순한 전화기 이상의 기능을 하기 시작한 것은 그리 오래되지 않았습니다. 역사는 반복되고 있습니다.

그러나 결국 착용자 이름은 현명한 선택으로 보입니다. 최소한 사용자 스토리를 작성할 때 " Apple watch 사용자 로서 ... 하고 싶은 일"을 완전히 지정할 필요는 없습니다. " 착용자 로서 ... 하고 싶은 일"로 줄여서 모호성을 줄이면 됩니다.

Apple Watch 앱은 시계 착용자(및 iOS 앱 개발자)가 기술에 대해 생각하는 방식을 영원히 바꿀 것입니다.

장치 및 UI

개발과 엄격하게 관련되지 않은 모든 Apple Watch 기능을 생략하면 디자이너와 개발자가 처리해야 하는 가장 중요한 문제는 크기입니다. 실제로 두 가지 다른 Apple Watch 모델이 있습니다.

  • 272x340픽셀 해상도의 38mm 화면
  • 312x390픽셀 해상도의 42mm 화면

두 경우 모두 레티나 디스플레이를 사용합니다.

말할 필요도 없이, 애플리케이션이 두 버전 모두에서 잘 보이도록 하는 것은 iOS 개발자의 몫입니다.

애플 워치 연결성

Apple Watch는 Bluetooth 4.0을 통해 iPhone과 통신하며 NFC도 지원합니다. 분명히, 그것은 WiFi 연결이 없습니다. iPhone을 통해 테더링할 수 있지만 WiFi와 셀룰러 데이터 연결을 모두 사용할 수 있습니다. 그러나 언론 정보에서 Apple은 Wi-Fi 802.11b/g도 지원한다고 분명히 밝혔습니다.

사용자 상호 작용

사용자 상호 작용(또는 선호하는 경우 착용자 상호 작용)은 4가지 다른 방식으로 발생할 수 있습니다.

  • 간단한 터치: 버튼을 탭하는 것이 일반적인 예입니다.
  • 강제 터치: 화면을 길게 탭할 때 더 많은 힘을 가하면 활성화됩니다. PC를 마우스 오른쪽 버튼으로 클릭하는 것과 유사하게 컨텍스트 메뉴(최대 4개 항목 포함)가 표시됩니다.
  • 제스처: 스크롤하려면 세로 스와이프, 페이지 간 탐색은 가로 스와이프, 뒤로 탐색하려면 왼쪽 가장자리 스와이프
  • 디지털 크라운: 미세 조정 스크롤에 사용되는 하드웨어 입력

사용자 상호 작용, 특히 제스처와 관련하여 몇 가지 제한 사항이 있습니다.

  • 미리 결정되어 있으므로 사용자 지정 제스처는 지원되지 않습니다.
  • 멀티 터치가 지원되지 않으므로 두 개 이상의 손가락이 필요한 핀치 투 줌 또는 유사한 제스처가 없습니다.

다음은 Apple WatchKit 가이드의 상황별 메뉴 샘플입니다.

Apple Watch 앱 기능은 향후 광범위한 개발 튜토리얼을 요구할 것입니다. 지금은 기본 사항에 익숙해지십시오.

사용자 인터페이스

Apple Watch UI에 대해 말하자면, 축소된 화면 크기, 디자인 선택 및 많은 경우 기본 하드웨어의 자연스러운 결과로 인해 부과되는 몇 가지 제한 사항이 있습니다. 실제로 변경될 내용을 예측하거나 예측하는 것은 불가능하지만 일부는 SDK의 향후 릴리스에서 더 나은 방향으로 변경될 것으로 예상합니다.

첫 번째 제한은 스토리보드를 통해서만 사용자 인터페이스가 구현되는 방식에 관한 것입니다.

Apple Watch 탐색

WatchKit은 Apple Watch 앱의 보기 사이를 탐색하는 두 가지 상호 배타적인 방법을 제공합니다.

  • iOS에서 사용되는 것과 유사한 계층적 탐색 모델, 탐색 중에 뷰가 누적됨
  • 사용자가 왼쪽과 오른쪽으로 스와이프하여 페이지 사이를 탐색할 수 있는 플랫 페이지 기반 모델

불행히도 동일한 앱에서 이 두 탐색 모델을 결합하는 것은 불가능합니다. 그 중 하나를 선택하여 전체 앱에서 사용해야 합니다.

그러나 모든 인터페이스 컨트롤러는 페이지 탐색 모델을 사용하여 배열된 단일 인터페이스 컨트롤러 또는 다중 인터페이스 컨트롤러가 될 수 있는 모달 인터페이스 컨트롤러를 제공할 수 있습니다.

UI 요소

11개의 고유한 인터페이스 구성 요소가 있습니다.

  • 단추
  • 슬라이더
  • 영상
  • 상표
  • 분리 기호
  • 슬라이더
  • 스위치
  • 테이블
  • 날짜: 현재 날짜 또는 시간을 자동으로 표시
  • 타이머: 카운트다운 타이머 표시, 자동 업데이트
  • 그룹: 하나 이상의 자식 구성 요소에 대한 컨테이너
  • 지도: 선택적으로 최대 5개의 주석이 있는 비대화형 지도 표시

레이아웃

그룹 구성 요소를 사용하여 Apple Watch UI 요소를 수직 또는 수평 레이아웃으로 결합할 수 있습니다. 요소는 크기에 따라 자동으로 배치됩니다. 그룹을 중첩할 수 있다는 점에서 어느 정도의 유연성을 사용할 수 있습니다.

안타깝게도 자동 레이아웃은 사용할 수 없습니다. 하지만 iOS에 비해 UI가 훨씬 단순하다는 점을 감안하면 큰 손실은 아닐 것이다.

목록의 경우 테이블 구성 요소는 UITableView 처럼 단일 열 모델을 사용하여 콘텐츠를 만들고 관리합니다. 그러나 위임 패턴을 사용하지 않습니다. 먼저 행 수를 지정한 다음 for 루프에서 각 행의 내용을 초기화하여 데이터 소스를 테이블에 직접 제공합니다. 긍정적인 점은 사용자 정의 테이블 행(iOS 전문 용어의 셀)을 사용할 수 있다는 점입니다.

시선

Glances는 읽기 전용, 단일 페이지 및 스크롤할 수 없는 보기로, 시기적절하고 관련성 있는 앱별 데이터의 스냅샷을 표시하는 데 사용됩니다. 탭 이벤트를 제외하고는 사용자 상호 작용이 허용되지 않습니다. 한눈 에 보기를 탭하면 앱이 실행되고 선택적으로 앱이 특정 인터페이스 컨트롤러를 표시할 수 있도록 컨텍스트를 제공합니다.

예를 들어, Apple Watch 날씨 앱은 Glance를 사용하여 현재 온도, 위치 등을 표시할 수 있습니다. 탭하면 앱이 열리고 더 자세한 정보가 표시됩니다.

다음은 공식 Apple WatchKit 가이드의 샘플 Glance입니다.

다음은 샘플 Apple Watch 앱에 있는 Apple Watch 한눈에 보기 기능의 예입니다.

Apple Watch 알림

알림 유형에는 짧은 보기긴 보기 의 두 가지가 있습니다.

짧은 보기 알림은 착용자에게 어떤 일이 발생했음을 알리는 데 사용되며 손목을 내리면 자동으로 해제됩니다. 레이아웃은 매우 단순하며 앱 아이콘, 앱 이름, 알림 제목으로 구성되어 있습니다.

Apple Watch 알림은 앱 내에서 다음과 같이 표시될 수 있습니다.

잠시 동안 손목을 든 상태를 유지하거나 짧은 보기 알림을 명시적으로 탭하면 긴 보기 알림 으로 바뀝니다. 이러한 유형의 알림은 더 자세한 정보를 제공하고 사용자 지정 가능한 버튼을 통해 사용자 상호 작용을 지원합니다. 이 버튼은 애플리케이션에 알림을 보낼 수 있습니다. 짧은 알림과 달리 사용자는 보기 하단에 자동으로 표시되는 버튼을 탭하여 긴 보기 알림을 명시적으로 해제해야 합니다.

자세히 보기 알림은 개발자가 알아야 하는 Apple Watch의 고유한 기능 중 하나입니다.

Apple Watch 알림 사용에 대한 추가 정보는 여기에서 찾을 수 있습니다.

개발

건축물

WatchKit을 지원하는 Xcode 버전(현재 6.2 베타 버전)을 다운로드하고 문서를 읽지 않고 WatchKit 프로젝트를 시작하려고 하면 WatchKit 템플릿이 없기 때문에 개발자가 혼란스러워 할 수 있습니다.

Apple Watch 앱은 기존 iOS 응용 프로그램 중 하나에만 새 대상으로 추가할 수 있습니다.

독립 실행형 시계 응용 프로그램은 없으며 Watch 앱은 기존 iOS 응용 프로그램에 새 대상으로만 추가할 수 있습니다.

Apple Watch 앱을 개발하려면 현재 iOS 앱으로 시작하여 Watch 앱을 새 대상으로 추가하십시오.

그 이유는 아키텍처와 시계 앱이 관련 iOS 앱과 상호 작용하는 방식에 달려 있습니다.

Apple Watch가 iPhone에서 다른 iOS 앱과 상호 작용하는 방식을 이해하는 것은 성공적인 Apple Watch 개발자가 되는 데 필수적입니다.

시계에서 앱을 실행하면 컴패니언 iOS 확장 프로그램이 자동으로 실행됩니다. iOS 확장 프로그램이 다른 모든 작업을 수행하는 동안 시계 앱은 착용자에게 콘텐츠를 표시하고 상호 작용에 응답하여 둘 다 시너지 효과를 냅니다. 실제로 시계에서는 애플리케이션 코드가 실행되지 않습니다. 모든 처리는 iOS 확장에 위임됩니다.

이 모델은 도메인 논리가 서버 측에서 수행되고 클라이언트 측이 사용자에게 콘텐츠를 표시하고 사용자 작업에 응답하는 브라우저 <-> 웹 애플리케이션 모델과 매우 유사합니다.

장치에 설치되는 Watch App은 스토리보드와 관련된 모든 정적 리소스로 구성되며 번들로 포장됩니다. 이 번들은 정적입니다. 즉, 런타임에 리소스, 보기, 이미지 등을 추가하거나 변경할 수 없습니다.

이 정적 클라이언트-서버 모델은 Watch 앱을 레퍼토리에 추가하려는 iOS 개발자에게 몇 가지 제한 사항을 부과하며 일부 개발자가 긍정적으로 반응하지 않은 주요 이유 중 하나일 수 있습니다. 또 다른 인기 있는 언급은 애니메이션에 대한 것입니다. 애니메이션은 단순히 지원되지 않습니다. 애니메이션을 모방하는 유일한 방법은 개별 프레임을 시계 앱에 패킹한 다음 이미지를 시퀀스로 표시하여 애니메이션을 시뮬레이션하는 것입니다. 좋은 소식은 프레임의 이름을 순차적으로 지정하면 인터페이스 빌더에서 직접 애니메이션을 자동화할 수 있다는 것입니다. 물론 이미지 제어 메서드를 한 번만 호출하여 코드에서 동일한 작업을 수행할 수도 있습니다.

그러나 Apple은 이미 기본 애플리케이션을 지원하는 새 버전이 내년에 출시될 것이라고 발표했으며 아직 자세한 내용은 없습니다.

Apple Watch 프레임워크: 간략한 살펴보기

WatchKit은 UIKit을 사용, 상속 또는 전문화하지 않습니다. 시계, 작은 디스플레이 및 제한된 하드웨어에 맞게 특별히 설계 및 최적화된 새로운 프레임워크가 구현되었습니다. 프레임워크는 15개의 클래스로만 구성되며 그 중 12개는 UI 구성 요소(레이블, 버튼 등)입니다.

프레임워크에 의해 노출되는 가장 중요한 클래스는 WKInterfaceController 이며, 이는 UIViewController 의 WatchKit 대응입니다. 따라서 iOS(및 OSX)에서 뷰 컨트롤러 라고 하는 것은 Apple Watch에서 인터페이스 컨트롤러 입니다.

Apple 개발자의 관점에서 너무 깊이 파고 들지 않고 UIKit에 대한 가장 눈에 띄는 개선 사항은 인터페이스 컨트롤러 간에 데이터를 전달하는 패턴을 설정하는 것입니다. 이니셜라이저에 대한 간략한 설명:

Swift init(context: AnyObject?) // context from pushing controller or nil

인터페이스 컨트롤러 인스턴스(모든 API에서 context 라고 함)에 임의의 개체를 제공하여 한 인터페이스 컨트롤러에서 다른 인터페이스 컨트롤러로 데이터 전달을 단순화하고 표준화할 수 있음을 보여줍니다. 유일한 단점은 객체가 제네릭 유형이 아니라 대상 인터페이스 컨트롤러의 이니셜라이저 내에서 예상 유형으로 다운캐스트되어야 하는 불투명한 AnyObject 라는 것입니다. 그것은 아마도 여전히 Objective C를 계속 사용하고 싶어하는 (그리고 아마도 또한 원하는) 절충안일 것입니다.

인터페이스 컨트롤러 수명 주기는 3개의 전환으로만 구성된 뷰 컨트롤러에 비해 단순화됩니다.

  • init : 개체가 인스턴스화될 때 호출됩니다.
  • willActivate : 콘텐츠가 표시되려고 할 때 호출됩니다.
  • didDeactivate : 인터페이스가 막 숨겨졌을 때 호출됩니다.

사용자에게 콘텐츠를 표시하는 것 외에도 인터페이스 컨트롤러는 다음을 담당합니다.

  • 사용자 상호 작용 처리
  • 상황에 맞는 메뉴 관리
  • 핸드오프 활동을 조정
  • 알림에 응답

Apple WatchKit이 준비되었습니까?

몇 가지 제한 사항으로 인해 시계 키트가 미성숙한 제품으로 나타날 수 있습니다. 그리고 실제로 그렇습니다. 아직 시장에 시계 장치가 없다는 것은 말할 것도 없고 기본 시계 응용 프로그램을 지원하지 않으므로 개발자는 여전히 앱을 테스트할 수 없으며 앱 작동 방식에 대한 실제 느낌과 피드백을 얻을 수 없습니다.

좋습니다. 실제로 독립 시뮬레이터는 아니지만 iOS 시뮬레이터에 대한 외부 디스플레이로 액세스할 수 있는 시뮬레이터가 있습니다(하드웨어 -> 외부 디스플레이 메뉴를 통해). 그러나 시뮬레이터는 실제 장치를 대체하지 않습니다. 개발 및 디버깅에는 좋지만 충분하지는 않습니다.

WatchKit은 단지 미리보기, 베타 버전, 애피타이저로, 모든 새 릴리스와 함께 발전할 것입니다. iOS 개발자는 첫 번째 버전을 얻었습니다. 가지고 놀고 최대한 활용해 보겠습니다.