애플워치 입문
추천
야옹신 애플워치키트 초심자
야옹신 WWDC15 세션 노트 - 간단한 워치OS 2 앱 30분 개발
애플워치와 iOS 앱 간 통신 & 애플워치 사용자 정의 셀
Kiss 애플워치 개발 대열
애플워치가 3개월 동안 개발한 수확의 총결산
Apple Watch 응용 최적화에 대한 몇 가지 소감 요약
Apple Watch의 Application 설계 방법
Apple Watch 오디오 녹음wav 변환.mp3, 오디오 파일 가져오기 시간
Apple Watch 개발 과정에서 발생한 문제점(WatchOS 2)
애플워치 인터랙티브 가이드 (번역)
WatchKit에서 개발한 블로그
애플워치 개발 요약
watchKit 관련 프로그래밍 문제
애플워치 개발 가이드
프로비저닝
Glance와 Notification은 자체 수동 구성이 필요하며 Scheme을 편집하면 됩니다.
라이프 사이클
인터페이스 초기화 호출 순서(OneController, TwoController)
push
modal
OneController init
OneController init
OneController awakeWithContext:
OneController awakeWithContext:
OneController willActivate
OneController willActivate
OneController didAppear
OneController didAppear
이벤트 클릭 후...
push
modal
OneController willDisappear
TwoController init
TwoController init
TwoController awakeWithContext:
TwoController awakeWithContext:
OneController willDisappear
TwoController willActivate
TwoController willActivate
OneController didDeactivate
TwoController didAppear
TwoController didAppear
OneController didDeactivate
이벤트로 돌아가면...
pop
dismiss
TwoController willDisappear
TwoController willDisappear
OneController willActivate
OneController willActivate:
TwoController didDeactivate
OneController didAppear
OneController didAppear
TwoController didDeactivate
생명주기 총결산: (야옹신의 블로그로 발췌)
모든 WKinterfaceController 대상이 반드시 호출되는 생명주기 방법은 세 가지가 있는데 그것이 바로 이 대상이 초기화될 때의
-initWithContext:
, 나타날 때의 -willActivate
, 그리고 나타날 후의 -didDeactivate
이다. 마찬가지로 UIViewController와 비교하면 각각 -viewDidLoad
에 대응하는 것으로 이해할 수 있다.viewWillAppear:
및 -viewDidDisappear:
우리는 보통-initWith Context:와-willActivate에서'보기 요소'의 속성을 설정하고 -didDeactivate에서 NSTimer와 같은 self의 대상을 사용하지 않습니다.특히 주의해야 할 것은 -didDeactivate에서 '보기 요소' 속성을 설정하는 것은 무효입니다. 현재 WKinterfaceController가 비활성화되어 있기 때문입니다.인터페이스 컨트롤 레이아웃 정보
놀아줄게-애플워치 개발2:인터페이스 레이아웃 놀아줄게-애플워치 개발4:Table 보기
하나의 컨트롤은 action tableView의 클릭 이벤트에만 대응할 수 있습니다.cell에 줄을 당기지 않도록 주의하십시오
#pragma mark - Table Row Select
-(void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex
{
NSLog(@"did select rowIndex = %i",rowIndex);
/** ( ) */
NSDictionary *contextDic = @{@"PicName":@"picture",@"index":[NSNumber numberWithInteger:rowIndex]};
// [self presentControllerWithName:@"detail" context:contextDic];
[self pushControllerWithName:@"detail" context:contextDic];
}
MenuController
애플워치만의 아이폰 같은 3DTOuch도 중력 감응에 따라 메뉴를 팝업한다
놀아줄게. - 애플워치 개발5: Menu 메뉴.
테스트를 통해 최대 4개만 추가할 수 있으며, 몇 개를 추가하든지 상관없이 앞의 4개만 표시될 수 있다.
탐색 방법(계층, 페이지 분할)
push나 Modal 다음에 돌아오면 되돌아오는 화살표가 하나밖에 없어요.
주의점
Watch에 대한 개발은 코드를 사용할 수 없는 방식입니다.우선, 모든 WKinterfaceObject 대상은 반드시 디자인해야 할 때Story Board를 통해 추가해야 하며, 실행할 때 우리는 인터페이스에 요소를 추가하거나 제거할 수 없습니다(필요한 것이 있으면 숨김을 사용할 수 있습니다).그 다음으로 WKINterfaceObject와 레이아웃과 관련된 일부 속성, 예를 들어 줄 높이와 줄 수 등은 실행할 때 변경하고 설정할 수 없습니다.기본적으로 실행할 때 우리는 보기의 내용만 바꿀 수 있고, 일부 보기 요소를 숨겨서 레이아웃을 제한적으로 바꿀 수 있다. (다른 보기 요소는 숨겨진 요소를 채우려고 시도할 것이다.)
컨트롤러 점프
- (void)pushControllerWithName:(NSString *)name context:(nullable id)context;
- (void)presentControllerWithName:(NSString *)name context:(nullable id)context;
/** present , next Page */
- (void)presentControllerWithNames:(NSArray *)names contexts:(nullableNSArray*)contexts;
컨트롤러 간 전송 값
정방향 전송 값
- (void)pushControllerWithName:(NSString *)name context:(nullable id)context;
- (void)presentControllerWithName:(NSString *)name context:(nullable id)context;
- (void)presentControllerWithNames:(NSArray *)names contexts:(nullableNSArray*)contexts;
위의 세 가지 방법 중 끝에 모두
context:
파라미터가 있는데 이 파라미터는 우리가 컨트롤러를 돌릴 때 값을 전달하는 데 사용하는데 이것은 iOS단보다 훨씬 편리하다.Segue 전송 값
//tableView
- (NSArray *)contextsForSegueWithIdentifier:(NSString *)segueIdentifier inTable:(WKInterfaceTable *)table rowIndex:(NSInteger)rowIndex {
return nil;//
}
- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier {
return nil;//
}
- (NSArray *)contextsForSegueWithIdentifier:(NSString *)segueIdentifier {
return nil;//
}
//tableView
- (id)contextForSegueWithIdentifier:(NSString *)segueIdentifier inTable:(WKInterfaceTable *)table rowIndex:(NSInteger)rowIndex {
return nil;//
}
데이터 수신
컨트롤러의
awakeWithContext:
방법으로 데이터 수신- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
NSLog(@"receive = %@",context);
// Configure interface objects here.
}
멀티미디어
공식 프로그래밍 문서
MP3/MP4 재생
//.mp3 or .mp4
NSURL *url = [[NSBundle mainBundle] URLForResource:@"Jennifer Lopez - Feel the Light" withExtension:@".mp3"];
NSDictionary *options = @{WKMediaPlayerControllerOptionsAutoplayKey:@YES};
[self presentMediaPlayerControllerWithURL:url options:options completion:^(BOOL didPlayToEnd, NSTimeInterval endTime, NSError * _Nullable error) {
if (error) {
NSLog(@"error = %@",error);
return ;
}
NSLog(@"endTime = %f",endTime);
}];
오디오 레코딩
Apple watch에는 자체 녹음 컨트롤러가 있는데, 우리는 설정만 하면 된다.
.wav, .mp4, and .m4a
형식 지원 NSDictionary *recorderOptions = @{
/** */
WKAudioRecorderControllerOptionsActionTitleKey:@" ",
/** */
WKAudioRecorderControllerOptionsAutorecordKey:@YES,
/** NSTimeInterval */
WKAudioRecorderControllerOptionsMaximumDurationKey:@30
};
[self presentAudioRecorderControllerWithOutputURL:_recorderUrl preset:WKAudioRecorderPresetHighQualityAudio options:recorderOptions completion:^(BOOL didSave, NSError * _Nullable error) {
NSLog(@"didSave = %@",didSave?@"YES":@"NO");
if (error) {
NSLog(@"error = %@",error);
}
}];
참고 사항:
OutputURL 샌드박스 URL이 아닌
App Groups
의 URL입니다.시뮬레이터에 샌드박스 경로를 사용하면 녹화 재생에 문제가 없다.하지만 시계를 사용하면 녹음하자마자 이 컨트롤러가 디스미스로 떨어진다.App Groups 경로
/** Identifier App Groups */
NSURL *url = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.LaiYoung.NextPage1111"];
NSURL *fileUrl = [url URLByAppendingPathComponent:@"record.wav"];
관련 기사 Apple Watch 오디오 녹음wav 변환.mp3, 오디오 파일 가져오기 시간
Glance 인터페이스(인터랙티브 응답 없이 어디를 클릭해도 어플리케이션 내부로 이동)
이것은 비슷한 소개로 시작하여 선택하지 않았다. 어떻게
Glance
을 추가하고storyboard에서 Glance Interface Controller
을 드래그한 다음에 Scheme
을 추가하여 ClanceXXX
으로 명명하고, Edit Scheme...
1010Executable
을 선택하여 XXX Watch App.app
을 선택하고, Watch Interface는 대응하는 Glance,close를 선택하면 된다.UI:Glance는 모두 특정한 모델을 바탕으로 한 것으로 애플은 화면의 윗부분과 밑부분의 디자인을 포함한 일련의 모델을 제공했다.
Glance Interface Controller Scene
의 네 번째 선택기 선택.UI 인터페이스에는 Button,Switch
과 같은 이벤트 조작성 컨트롤을 추가할 수 없지만 Label,Image
과 같은 컨트롤을 추가할 수 있습니다.table
및 map
을 사용하지 마십시오.Notifications
애플워치의 알림은
short looks
과 long looks
shortlooks 두 가지가 있다. 짧은 버전은 위의 그림에서 볼 때 내용이 매우 간단하다. 앱의 icon, 앱의 이름, 메시지다.및Glance
의 UI 인터페이스와 마찬가지로 작동 제어는 추가할 수 없습니다.어떤 것을 추가할 수 있고 어떤 것을 추가할 수 없는지에 대해 가장 직접적인 방법은 컨트롤을Static Notification interface controller
또는Dynamic Notification interface controller
이 틀리지 않은 것은 이 컨트롤을 추가할 수 있다는 것을 설명한다.longlooks: 긴 버전, 긴 버전은 짧은 버전에 비해 많은 것들이 있다. 위의 그림을 보면 UI는 스크롤할 수 있는 세 부분으로 나뉘는데 각각
sash
10content
101010actions
sash: 응용 프로그램의 이름과 icon을 포함합니다. 이 부분의 기본 색은 투명합니다. 사용자 정의 색(색 수정, Static Notification interface controller
의 입구 선택, 네 번째 선택기 선택) content: 이 부분은 푸시된 상세한 내용입니다 action: 조작 단추 (최대 4개 추가 가능), 그리고 Dismiss ,
시뮬레이션 long looks
Apple watch 앱을 만들거나 기존 프로젝트에 target을 추가할 때 기본적으로 Notification Scene
을 선택합니다. 그리고 우리의 Notification InterfaceController
은 위의 모습입니다. storyboard와 조금 다를 수 있습니다. 위의 그림은 제가 공식 문서에서 찾았는데 아직 공식적으로 변경되지 않았을 수도 있습니다.뜻만 알면 되는데..Static interface
은 필수이고 dynamic interface
은 옵션입니다.메시지를 전송할 때 기본적으로 선택된dynamic 인터페이스입니다. dynamic interface
이 사용할 수 없고 충분한 전력이 없어서 동적 인터페이스를 표시하고 동적 인터페이스를 사용할 수 없다고 명확하게 지적할 때만 Static interface
을 표시합니다사용자 정의 인터페이스의 클래스 구성(Category)
공식 문서 Notifications
관련 기사 Notifications 개요
감사 정보:
Watch App 심사에 관해서 만약에 당신이 어떤 기능을 선택했지만 실현되지 않았다면 반드시 거절당할 것입니다. 여러분, 이 점을 주의하세요. 바로 거기로 갑니다.
구덩이:
Assets.xcassets
을 찾아 이미지를 선택한 후 세 번째 선택기인 Devices
을 클릭하여 워치OS를 선택하면 2x/38 mm 2x/42 mm 2x
에 대한 이미지가 없어 코드 설정이 나오지 않는다.watchOS 2.0
은 더 이상 App Groups
을 지원하지 않습니다. watchOS 2.0은 WCSession
을 사용하여 통신할 수 있습니다. WCSession
은 구체적으로 어떻게 사용하느냐에 따라 Apple Watch와 iOS Appl 간의 통신 & Apple Watch 사용자 정의 Cell Error
Apple watch의
Bundle versions string,short
과 Bundle version
모두 iOS와 일치해야 합니다. 그렇지 않으면build fail잔재주
Global Tint
NSURLConnection send...
방법을 사용하지 말고 NSURLSession
방법을 사용해야 한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.