SlideShare a Scribd company logo
iOS9 소개
2015.10.21
박재성
Force Touch Events
Force Touch Trackpads
Force Touch를 지원하는 트랙패드에서 누름 강도에 따른 처리를 위한 새로운 API.
마우스 이벤트의 webkitForce 속성을 통해 접근할 수 있다.
참고 : Responding to Force Touch Events
element.addEventListener("webkitmouseforcewillbegin", function(event) {
    event.webkitForce;  // 누름의 강도에 대한 값(number)을 반환
    // Constants :
    // represents the amount of force required for a regular and force click, respectively.
    event.WEBKIT_FORCE_AT_MOUSE_DOWN;
    event.WEBKIT_FORCE_AT_FORCE_MOUSE_DOW;
}, false);
Event 발생시점
webkitmouseforcewillbegin mousedown 직전에 발생
webkitmouseforcedown Force click인 경우, mousedown 이벤트
이후에 발생
webkitmouseforceup Force click인 경우, mousedown 이벤트
이후 버튼을 뗀 후 발생
webkitmouseforcechanged Force click 이벤트내에서 변경이 발생될 때
iOS9 소개
TouchEvent.force
터치 이벤트 발생시, 터치의 누름 강도를 값으로 반환
참고 : Touch.force
element.addEventListener("touchstart", function(event) {
    event.touches[0].force;  // 누름 강도에 따라, 0.0 ~ 1.0 사이의 값을 반환
}, false);
데모
3D Touch
ForceTouch demo
iPad Pro
기존 iPad들의 뷰포트 width(device-width)는 768px
iPad Pro(12.9 인치 - 2015/11 출시)의 뷰포트 width는 1024px
iPad Pro는 3D Touch 미지원. 대신 Apple Pen을 지원 (Apple Pen과 관련된 별도 API는 없음)
iOS9 and Responsive Web Design
iPad browser WIDTH & HEIGHT standard
Multitasking
iOS9가 설치된 iPad에서는 새로운 멀티태스킹 기능들이 추가 되었다.
a) Slide Over
가로모드 상태에서 우측 3/1 영역을 사용, 현재 앱을 벗어나지 않고 다른 앱을 실행
2개의 앱이 동시에 온전히 실행되는 것이 아니며, 완전한 멀티태스킹이라고 하긴 어려움
지원 기기 : iPad mini 2, iPad mini 3, iPad Air, iPad Air 2, iPad Pro
iOS 9 New Features : Slide Over - iPhone , iPad - Piece of Cake Series
b) Split View
Split View를 지원하는 앱에서 사용 가능하며,
Slide Over 상태에서 2개의 앱을 화면 분할해 동시에 2개 앱을 실행
지원 기기 : iPad Air 2, iPad Pro
분할 크기에 따라 뷰포트 width 값은 다음과 같다.
분할된 화면크기 iPad (non iPad Pro) iPad Pro
1/3 320px 375px
1/2 507px 678px
2/3 694px 981px
iOS 9 New Features : Split Multitasking- iPhone , iPad - Piece of Cake Series
c) Picture-in-Picture
다른 앱을 실행하는 동안에도, 동영상을 볼수 있는 기능이다.
지원 기기 : iPad mini 2, iPad mini 3, iPad Air, iPad Air 2, iPad Pro
PiP를 지원하는 앱의 경우 비디오 하단의 PiP 모드 전환버튼을 통해 실행한다.
다음은 PiP 모드를 지원하는 경우 확인과, PiP로 전환하는 샘플예제
if (video.webkitSupportsPresentationMode &&
    typeof video.webkitSetPresentationMode === "function") {
    // Toggle PiP when the user clicks the button.
    pipButtonElement.addEventListener("click", function(event) {
        video.webkitSetPresentationMode(
            video.webkitPresentationMode === "picture­in­picture" ?
                "inline" : "picture­in­picture");
    });
} else {
    pipButtonElement.disabled = true;
}
How to Use Picture in Picture Mode on iOS 9
How to Use iOS 9 Picture in Picture Mode
Safari View Controller
웹 컨텐츠에 대한 처리를 웹뷰가 아닌 사파리에 위임하는 형태로 동작
앱과 별도의 프로세스로 동작
full 페이지로 동작 (앱에서 link tap시 열리고, done을 누르면 창이 닫히는 형태)
주소창의 주소는 readonly 이며, 변경할 수 없음
쿠키와 웹사이트 데이터를 사파리와 공유.
- ex. 로그인된 상태라면 Safari View Controller에서도 동일하게 로그인된 상태가 됨, form에 대한 데이터의 autofill 처리, 등
Introducing Safari View Controller - Apple WWDC 2015
iOS 9 and Safari View Controller: The Future of Web Views
Safari Content Blockers
App extension(유료)을 설치하면 사파리에서
광고, 트래커, 커스텀 폰트, 큰 이미지, JS 파일 등을 차단
*App extension은 사파리에 JSON 포맷의 rules 배열정보를 제공하며, 사파리는 이 정보를 바이트코드로 변환해 사용
사파리 설정에서 Content Blocker 앱을 설정하는 형태로 사용
지원 기기 :
iPhone 5s ~ 6s
iPad mini 2~4 / Air(2) / Pro
iPod touch 6세대
Content Blockers App :
(무료)
(유료)
- (유료)
1Blocker
Crystal
Purify 실행 데모 동영상
List of content blockers for iOS 9
: 3.9x 빠르고, 53% 더 적은 bandwidth를 사용Crystal 자체 벤치마크
이는 당연한 결과이기도 한데, 일부 리소스들이 차단되어 로딩되지 않으므로 로딩이 빨라질 수밖에 없다.
그러나 어떤 리소스들이 차단되는지에 대한 불명확한 점 때문에 논란의 여지가 있다.
사용자는 새로고침을 길게 눌러 content blocker 없이 로딩하도록 할수 있다.
참고 : Content Blocking Safari Extensions
WKWebView
UIWebView는 공식적으로 폐지(deprecated) 예정
In apps that run in iOS 8 and later, use WKWebView instead of using UIWebView.
Swift or Objective-C 에서 를 통해 웹뷰의 로컬스토리
지를 핸들링 할수도 있음
별도 파일을 URL로 로딩가능
커스텀 UserAgent 지정가능
WKWebsiteDataStore
Universal Links
네이티브 앱으로의 deep linking
앱과 연관된 URL이 전달되면 네이티브 앱이 설치된 경우, 사파리에서 리다이렉션을 통하
지 않고, 네이티브 앱에서 바로 실행
앱이 처리할 URL에 대한 데이터를 apple-app-site-association JSON 파일로
https 웹서버에 업로드 Amazon: https://www.amazon.com/apple-app-site-association
How to Set Up Universal Links to Deep Link on Apple iOS 9
App Search
Spotlight 검색 또는 Siri를 통해 앱의 컨텐츠 또는 웹을 검색
로 App Search 최적화(SEO) 여부 검사
앱내 컨텐츠 인덱싱은 를 사용, 앱내 컨텐츠 검색 가능
App Search API Validation Tool
CoreSpotlight
Search for Developers
Apple's Siri, Spotlight extend Google-like search inside iOS 9 apps
CloudKit JS
CloudKit JS를 통해 iCloud 데이터에 액세스 할수 있다.
CloudKit JS Reference
Back button
커스텀 URI 또는 Universal Link를 통해 네이티브 앱으로 이동된 경우, 앱 좌측 상단
에 되돌아가기 버튼이 생성되며 버튼을 누르면 이전 화면으로 되돌아 갈수 있다.
새로운 OS (tvOS, watchOS)
tvOS: 브라우저 및 웹뷰 없음. 그러나 JavaScript, XHR 그리고 DOM은
XML 기반의 TVML 마크업을 통해 실행
watchOS: 브라우저 및 웹뷰 없음
About TVML
JavaScript & CSS
Navigation Timing API
웹사이트의 성능측정 데이터를 제공하는 Navigation Timing API가
iOS 8.0에 추가되었다가 8.1에서 제거되었는데, iOS9에 다시 추가
참고 : Navigation Timing
Backdrop CSS
요소가 아닌 배경에 필터를 지정할 수 있는 backdrop 필터지원
demo
Filter Effects Module Level 2
Introducing Backdrop Filters
CSS Scroll Snap Points
지정된 픽셀만큼 이동을 고정시킬 수 있다. (플리킹과 같은 UX)
<style>
#left­snap {
    width: 300px;
    overflow­x: auto;
    overflow­y: hidden;
    ­webkit­scroll­snap­type: mandatory;
    ­webkit­scroll­snap­points­x: repeat(300px);
}
</style>
<div id="left­snap">
    <img src="img01.png">
    <img src="img02.png">
    <img src="img03.png">
    ...
</div>
Scroll Snapping with CSS Snap Points
Internet Explorer Samples: snap-points
CSS Scroll Snap Galleries demo
CSS Conditional Rules
CSS 속성 지원여부를 확인할 수 있는 CSS 지시자인 @supports와
JavaScript API인 CSS.supports 지원이 추가
CSS Conditional Rules Module Level 3
@supports
특정 css 속성을 브라우저가 지원하는지 또는 하지 않는지에 따라 특정 스타일을 적용
@supports (box­shadow: 0 0 10px rgba(0,0,0,0.1)) {  /* CSS code */ }  
==> box­shadow 속성을 지원하는 경우 적용
@supports not (animation­duration: 1s) {   /* CSS code */  }
==> animation­duration 속성이 지원되지 않는 경우 적용
and, or 연산자를 사용한 조건식을 사용
@supports ((border­radius:4px) and (transition­duration: 1s)) or (transform­origin: 5% 5%
     /* CSS code */
}
@supports를 활용하면 특정 속성이 지원되는 브라우저의 경우,
별도의 css 파일을 로딩하도록 처리
@supports (box­shadow: 0 0 10px rgba(0,0,0,0.1)) {
    @import url('box­shadow.css');
}
@supports(­webkit­scroll­snap­type: mandatory) { ... }
CSS.supports() API
특정 CSS 속성이 지원되는지 여부는 다음과 같이 확인
// ­webkit­scroll­snap­type 속성과 그 값으로 mandatory가 지원되는지 여부 확인
if (window.CSS && CSS.supports("­webkit­scroll­snap­type", "mandatory")) {
    ...
}
ES6 지원 추가항목
ECMA-262 6th Edition, ECMAScript 2015
Classes
Computed Properties
Weak Set
Number Object
Octal and Binary Literals
Symbol Objects
Template Literals
CSS4 pseudo-selectors 지원
가상 선택자
:not
:any-link
:placeholder-shown
:read-write
:read-only
:matches
/* old style */
.default .def, .default .bracket, .default .operator, .default .variable {
    color: red;
}
/* using :matches */
.default :matches(.def, .bracket, .operator, .variable) {
    color: red;
}
기타
-webkit- prefix를 붙여 사용하던 CSS 속성들 일부에 대해 prefix 제거 ( )
<input type=file>에서 iCloud 드라이브 또는 써드파티 앱의 파일 등 선택가능
https 프로토콜을 사용하는 페이지에서는 http와 https를 혼용해 리소스들을 로딩
할 수 없음
네이티브 앱에서 확장기능을 통해, 사파리의 공유된 링크(shared links)에 데이터를
추가할 수 있음
지원
목록
Document.scrollingElement
References
iOS 9, Safari and the Web: 3D Touch, new Responsive Web Design,
Native integration and HTML5 APIs
What's new in Safari 9
What's New in Safari : Safari 9.0
고맙습니다.

More Related Content

PDF
현실적 PWA
Jae Sung Park
 
PDF
오늘 당장 시작하는 HTML5
Taegon Kim
 
PDF
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
Sungwoo Choo
 
PDF
웹 Front-End 실무 이야기
JinKwon Lee
 
PDF
[D2 오픈세미나]3.web view hybridapp
NAVER D2
 
PDF
프로그레시브 웹앱(Pwa)
Woncheol Lee
 
PDF
목적에 맞게 Angular, React, Vue
Gunhee Lee
 
PDF
Universal Rendering
Taegon Kim
 
현실적 PWA
Jae Sung Park
 
오늘 당장 시작하는 HTML5
Taegon Kim
 
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
Sungwoo Choo
 
웹 Front-End 실무 이야기
JinKwon Lee
 
[D2 오픈세미나]3.web view hybridapp
NAVER D2
 
프로그레시브 웹앱(Pwa)
Woncheol Lee
 
목적에 맞게 Angular, React, Vue
Gunhee Lee
 
Universal Rendering
Taegon Kim
 

What's hot (20)

PPTX
Single-page Application
Sangmin Yoon
 
PPTX
웹-프론트엔드 프레임워크를 고르기 위한 팁
WebFrameworks
 
PDF
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Sang Seok Lim
 
PDF
Front-end Development with Ruby on Rails
추근 문
 
PDF
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
Daum DNA
 
PDF
프로그레시브 웹앱이란? - Progressive Web Apps
Gihyo Joshua Jang
 
PDF
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
PDF
Spring boot와 docker를 이용한 msa
흥래 김
 
PDF
하이브리드앱 성능 극복
sung hwan Park
 
PPTX
Angular 기본 개념 잡기
장현 한
 
PDF
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
종훈 박
 
PDF
Web Framework (웹 프레임워크)
Junsu Kim
 
PDF
Mean 스택을 사용한 IoT 개발
Jay Park
 
PPTX
How_to_choose_the_right_framework
JT Jintae Jung
 
PPTX
PHP Slim Framework with Angular
JT Jintae Jung
 
PPTX
Google App Engine의 이해
Sun-Jin Jang
 
KEY
Meteor 0.3.6 Preview
Juntai Park
 
PDF
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
PDF
NAVER의 웹/HTML5환경 대응 현황
NAVER Engineering
 
PDF
[Naver d2]html5 canvas overview
NAVER D2
 
Single-page Application
Sangmin Yoon
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
WebFrameworks
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Sang Seok Lim
 
Front-end Development with Ruby on Rails
추근 문
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
Daum DNA
 
프로그레시브 웹앱이란? - Progressive Web Apps
Gihyo Joshua Jang
 
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
Spring boot와 docker를 이용한 msa
흥래 김
 
하이브리드앱 성능 극복
sung hwan Park
 
Angular 기본 개념 잡기
장현 한
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
종훈 박
 
Web Framework (웹 프레임워크)
Junsu Kim
 
Mean 스택을 사용한 IoT 개발
Jay Park
 
How_to_choose_the_right_framework
JT Jintae Jung
 
PHP Slim Framework with Angular
JT Jintae Jung
 
Google App Engine의 이해
Sun-Jin Jang
 
Meteor 0.3.6 Preview
Juntai Park
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
Sang Don Kim
 
NAVER의 웹/HTML5환경 대응 현황
NAVER Engineering
 
[Naver d2]html5 canvas overview
NAVER D2
 
Ad

Similar to iOS9 소개 (20)

PPTX
Data-binding AngularJS
EunYoung Kim
 
PDF
PWA 파헤치기
SangHun Lee
 
PDF
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
 
PPTX
[124] 하이브리드 앱 개발기 김한솔
NAVER D2
 
PDF
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
PDF
20131217 html5
DK Lee
 
PDF
하이브리드 앱 프레임워크의 구성
Joonyoung Moon
 
PDF
Progressive Web Apps
jungkees
 
PDF
Component, Redux 기반 비디오 구조 제안
Young-Hyuk Yoo
 
PDF
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
WSConf.
 
PDF
Knative로 서버리스 워크로드 구현
Jinwoong Kim
 
PDF
H3 2011 iOS5 새로운 기능들의 프로젝트 적용 사례
KTH
 
PDF
H3 2011 ios5 새로운 기능들의 프로젝트 적용 사례_ios팀_김윤봉
KTH, 케이티하이텔
 
PPTX
Appview 소개
logeo
 
PDF
Igaworks in app notice
성인 김
 
PDF
효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Amazon Web Services Korea
 
PDF
안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서
Chansuk Yang
 
PPT
Designing Apps for Motorla Xoom Tablet
Motorola Mobility - MOTODEV
 
PDF
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
KTH, 케이티하이텔
 
PPTX
구글앱엔진 스터디
소라 정
 
Data-binding AngularJS
EunYoung Kim
 
PWA 파헤치기
SangHun Lee
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
 
[124] 하이브리드 앱 개발기 김한솔
NAVER D2
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
20131217 html5
DK Lee
 
하이브리드 앱 프레임워크의 구성
Joonyoung Moon
 
Progressive Web Apps
jungkees
 
Component, Redux 기반 비디오 구조 제안
Young-Hyuk Yoo
 
조은 - AMP PWA 101 [WSConf.Seoul.2017. Vol.2]
WSConf.
 
Knative로 서버리스 워크로드 구현
Jinwoong Kim
 
H3 2011 iOS5 새로운 기능들의 프로젝트 적용 사례
KTH
 
H3 2011 ios5 새로운 기능들의 프로젝트 적용 사례_ios팀_김윤봉
KTH, 케이티하이텔
 
Appview 소개
logeo
 
Igaworks in app notice
성인 김
 
효율적 모바일 서비스를 위한 AWS 빌딩블럭 - API Gateway 및 Device Farm을 중심으로 (윤석찬, AWS 테크에반젤리스트)
Amazon Web Services Korea
 
안드로이드 6.0 마시멜로 지원을 고민하는 개발자를 위한 안내서
Chansuk Yang
 
Designing Apps for Motorla Xoom Tablet
Motorola Mobility - MOTODEV
 
[H3 2012] Bridge over troubled water : make plug-in for Appspresso
KTH, 케이티하이텔
 
구글앱엔진 스터디
소라 정
 
Ad

More from Jae Sung Park (20)

PDF
[SOSCON 2018] 오픈소스 개발: Behind the scenes
Jae Sung Park
 
PDF
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
Jae Sung Park
 
PDF
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
Jae Sung Park
 
PDF
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
Jae Sung Park
 
PDF
Front end dev 2016 & beyond
Jae Sung Park
 
PDF
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
Jae Sung Park
 
PDF
How jQuery event works
Jae Sung Park
 
PDF
현실적 Angular js
Jae Sung Park
 
PDF
가볍게 살펴보는 AngularJS
Jae Sung Park
 
PDF
Web Components & Polymer
Jae Sung Park
 
PDF
모바일 웹 디버깅
Jae Sung Park
 
PDF
혁신적인 웹컴포넌트 라이브러리 - Polymer
Jae Sung Park
 
PDF
CSS Functions
Jae Sung Park
 
PDF
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
 
PDF
What's new in IE11
Jae Sung Park
 
PDF
스마트 TV 앱 개발 맛보기
Jae Sung Park
 
PDF
How to create Aptana Ruble
Jae Sung Park
 
PDF
Web Audio API
Jae Sung Park
 
PDF
도구를 활용한 더 나은 웹 개발: Yeoman
Jae Sung Park
 
PDF
Developing game audio with the Web Audio API
Jae Sung Park
 
[SOSCON 2018] 오픈소스 개발: Behind the scenes
Jae Sung Park
 
[DEVIEW 2018] JavaScript 배틀그라운드로부터 살아남기
Jae Sung Park
 
[SOSCON 2017] 네이버의 FE 오픈소스: jindo에서 billboard.js까지
Jae Sung Park
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
Jae Sung Park
 
Front end dev 2016 & beyond
Jae Sung Park
 
[DEVIEW 2016] 네이버의 모던 웹 라이브러리 - egjs
Jae Sung Park
 
How jQuery event works
Jae Sung Park
 
현실적 Angular js
Jae Sung Park
 
가볍게 살펴보는 AngularJS
Jae Sung Park
 
Web Components & Polymer
Jae Sung Park
 
모바일 웹 디버깅
Jae Sung Park
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
Jae Sung Park
 
CSS Functions
Jae Sung Park
 
우리가 몰랐던 크롬 개발자 도구
Jae Sung Park
 
What's new in IE11
Jae Sung Park
 
스마트 TV 앱 개발 맛보기
Jae Sung Park
 
How to create Aptana Ruble
Jae Sung Park
 
Web Audio API
Jae Sung Park
 
도구를 활용한 더 나은 웹 개발: Yeoman
Jae Sung Park
 
Developing game audio with the Web Audio API
Jae Sung Park
 

iOS9 소개

  • 2. Force Touch Events Force Touch Trackpads Force Touch를 지원하는 트랙패드에서 누름 강도에 따른 처리를 위한 새로운 API. 마우스 이벤트의 webkitForce 속성을 통해 접근할 수 있다. 참고 : Responding to Force Touch Events element.addEventListener("webkitmouseforcewillbegin", function(event) {     event.webkitForce;  // 누름의 강도에 대한 값(number)을 반환     // Constants :     // represents the amount of force required for a regular and force click, respectively.     event.WEBKIT_FORCE_AT_MOUSE_DOWN;     event.WEBKIT_FORCE_AT_FORCE_MOUSE_DOW; }, false);
  • 3. Event 발생시점 webkitmouseforcewillbegin mousedown 직전에 발생 webkitmouseforcedown Force click인 경우, mousedown 이벤트 이후에 발생 webkitmouseforceup Force click인 경우, mousedown 이벤트 이후 버튼을 뗀 후 발생 webkitmouseforcechanged Force click 이벤트내에서 변경이 발생될 때
  • 5. TouchEvent.force 터치 이벤트 발생시, 터치의 누름 강도를 값으로 반환 참고 : Touch.force element.addEventListener("touchstart", function(event) {     event.touches[0].force;  // 누름 강도에 따라, 0.0 ~ 1.0 사이의 값을 반환 }, false); 데모 3D Touch ForceTouch demo
  • 6. iPad Pro 기존 iPad들의 뷰포트 width(device-width)는 768px iPad Pro(12.9 인치 - 2015/11 출시)의 뷰포트 width는 1024px iPad Pro는 3D Touch 미지원. 대신 Apple Pen을 지원 (Apple Pen과 관련된 별도 API는 없음) iOS9 and Responsive Web Design iPad browser WIDTH & HEIGHT standard
  • 7. Multitasking iOS9가 설치된 iPad에서는 새로운 멀티태스킹 기능들이 추가 되었다.
  • 8. a) Slide Over 가로모드 상태에서 우측 3/1 영역을 사용, 현재 앱을 벗어나지 않고 다른 앱을 실행 2개의 앱이 동시에 온전히 실행되는 것이 아니며, 완전한 멀티태스킹이라고 하긴 어려움 지원 기기 : iPad mini 2, iPad mini 3, iPad Air, iPad Air 2, iPad Pro
  • 9. iOS 9 New Features : Slide Over - iPhone , iPad - Piece of Cake Series
  • 10. b) Split View Split View를 지원하는 앱에서 사용 가능하며, Slide Over 상태에서 2개의 앱을 화면 분할해 동시에 2개 앱을 실행 지원 기기 : iPad Air 2, iPad Pro
  • 11. 분할 크기에 따라 뷰포트 width 값은 다음과 같다. 분할된 화면크기 iPad (non iPad Pro) iPad Pro 1/3 320px 375px 1/2 507px 678px 2/3 694px 981px
  • 12. iOS 9 New Features : Split Multitasking- iPhone , iPad - Piece of Cake Series
  • 13. c) Picture-in-Picture 다른 앱을 실행하는 동안에도, 동영상을 볼수 있는 기능이다. 지원 기기 : iPad mini 2, iPad mini 3, iPad Air, iPad Air 2, iPad Pro
  • 14. PiP를 지원하는 앱의 경우 비디오 하단의 PiP 모드 전환버튼을 통해 실행한다. 다음은 PiP 모드를 지원하는 경우 확인과, PiP로 전환하는 샘플예제 if (video.webkitSupportsPresentationMode &&     typeof video.webkitSetPresentationMode === "function") {     // Toggle PiP when the user clicks the button.     pipButtonElement.addEventListener("click", function(event) {         video.webkitSetPresentationMode(             video.webkitPresentationMode === "picture­in­picture" ?                 "inline" : "picture­in­picture");     }); } else {     pipButtonElement.disabled = true; }
  • 15. How to Use Picture in Picture Mode on iOS 9 How to Use iOS 9 Picture in Picture Mode
  • 16. Safari View Controller 웹 컨텐츠에 대한 처리를 웹뷰가 아닌 사파리에 위임하는 형태로 동작 앱과 별도의 프로세스로 동작
  • 17. full 페이지로 동작 (앱에서 link tap시 열리고, done을 누르면 창이 닫히는 형태) 주소창의 주소는 readonly 이며, 변경할 수 없음 쿠키와 웹사이트 데이터를 사파리와 공유. - ex. 로그인된 상태라면 Safari View Controller에서도 동일하게 로그인된 상태가 됨, form에 대한 데이터의 autofill 처리, 등 Introducing Safari View Controller - Apple WWDC 2015 iOS 9 and Safari View Controller: The Future of Web Views
  • 18. Safari Content Blockers App extension(유료)을 설치하면 사파리에서 광고, 트래커, 커스텀 폰트, 큰 이미지, JS 파일 등을 차단 *App extension은 사파리에 JSON 포맷의 rules 배열정보를 제공하며, 사파리는 이 정보를 바이트코드로 변환해 사용 사파리 설정에서 Content Blocker 앱을 설정하는 형태로 사용 지원 기기 : iPhone 5s ~ 6s iPad mini 2~4 / Air(2) / Pro iPod touch 6세대
  • 19. Content Blockers App : (무료) (유료) - (유료) 1Blocker Crystal Purify 실행 데모 동영상 List of content blockers for iOS 9
  • 20. : 3.9x 빠르고, 53% 더 적은 bandwidth를 사용Crystal 자체 벤치마크 이는 당연한 결과이기도 한데, 일부 리소스들이 차단되어 로딩되지 않으므로 로딩이 빨라질 수밖에 없다. 그러나 어떤 리소스들이 차단되는지에 대한 불명확한 점 때문에 논란의 여지가 있다.
  • 21. 사용자는 새로고침을 길게 눌러 content blocker 없이 로딩하도록 할수 있다. 참고 : Content Blocking Safari Extensions
  • 22. WKWebView UIWebView는 공식적으로 폐지(deprecated) 예정 In apps that run in iOS 8 and later, use WKWebView instead of using UIWebView. Swift or Objective-C 에서 를 통해 웹뷰의 로컬스토리 지를 핸들링 할수도 있음 별도 파일을 URL로 로딩가능 커스텀 UserAgent 지정가능 WKWebsiteDataStore
  • 23. Universal Links 네이티브 앱으로의 deep linking 앱과 연관된 URL이 전달되면 네이티브 앱이 설치된 경우, 사파리에서 리다이렉션을 통하 지 않고, 네이티브 앱에서 바로 실행 앱이 처리할 URL에 대한 데이터를 apple-app-site-association JSON 파일로 https 웹서버에 업로드 Amazon: https://www.amazon.com/apple-app-site-association How to Set Up Universal Links to Deep Link on Apple iOS 9
  • 24. App Search Spotlight 검색 또는 Siri를 통해 앱의 컨텐츠 또는 웹을 검색 로 App Search 최적화(SEO) 여부 검사 앱내 컨텐츠 인덱싱은 를 사용, 앱내 컨텐츠 검색 가능 App Search API Validation Tool CoreSpotlight Search for Developers Apple's Siri, Spotlight extend Google-like search inside iOS 9 apps
  • 25. CloudKit JS CloudKit JS를 통해 iCloud 데이터에 액세스 할수 있다. CloudKit JS Reference
  • 26. Back button 커스텀 URI 또는 Universal Link를 통해 네이티브 앱으로 이동된 경우, 앱 좌측 상단 에 되돌아가기 버튼이 생성되며 버튼을 누르면 이전 화면으로 되돌아 갈수 있다.
  • 27. 새로운 OS (tvOS, watchOS) tvOS: 브라우저 및 웹뷰 없음. 그러나 JavaScript, XHR 그리고 DOM은 XML 기반의 TVML 마크업을 통해 실행 watchOS: 브라우저 및 웹뷰 없음 About TVML
  • 29. Navigation Timing API 웹사이트의 성능측정 데이터를 제공하는 Navigation Timing API가 iOS 8.0에 추가되었다가 8.1에서 제거되었는데, iOS9에 다시 추가 참고 : Navigation Timing
  • 30. Backdrop CSS 요소가 아닌 배경에 필터를 지정할 수 있는 backdrop 필터지원 demo Filter Effects Module Level 2 Introducing Backdrop Filters
  • 31. CSS Scroll Snap Points 지정된 픽셀만큼 이동을 고정시킬 수 있다. (플리킹과 같은 UX) <style> #left­snap {     width: 300px;     overflow­x: auto;     overflow­y: hidden;     ­webkit­scroll­snap­type: mandatory;     ­webkit­scroll­snap­points­x: repeat(300px); } </style> <div id="left­snap">     <img src="img01.png">     <img src="img02.png">     <img src="img03.png">     ... </div> Scroll Snapping with CSS Snap Points
  • 32. Internet Explorer Samples: snap-points CSS Scroll Snap Galleries demo
  • 33. CSS Conditional Rules CSS 속성 지원여부를 확인할 수 있는 CSS 지시자인 @supports와 JavaScript API인 CSS.supports 지원이 추가 CSS Conditional Rules Module Level 3
  • 34. @supports 특정 css 속성을 브라우저가 지원하는지 또는 하지 않는지에 따라 특정 스타일을 적용 @supports (box­shadow: 0 0 10px rgba(0,0,0,0.1)) {  /* CSS code */ }   ==> box­shadow 속성을 지원하는 경우 적용 @supports not (animation­duration: 1s) {   /* CSS code */  } ==> animation­duration 속성이 지원되지 않는 경우 적용 and, or 연산자를 사용한 조건식을 사용 @supports ((border­radius:4px) and (transition­duration: 1s)) or (transform­origin: 5% 5%      /* CSS code */ } @supports를 활용하면 특정 속성이 지원되는 브라우저의 경우, 별도의 css 파일을 로딩하도록 처리 @supports (box­shadow: 0 0 10px rgba(0,0,0,0.1)) {     @import url('box­shadow.css'); } @supports(­webkit­scroll­snap­type: mandatory) { ... }
  • 35. CSS.supports() API 특정 CSS 속성이 지원되는지 여부는 다음과 같이 확인 // ­webkit­scroll­snap­type 속성과 그 값으로 mandatory가 지원되는지 여부 확인 if (window.CSS && CSS.supports("­webkit­scroll­snap­type", "mandatory")) {     ... }
  • 36. ES6 지원 추가항목 ECMA-262 6th Edition, ECMAScript 2015 Classes Computed Properties Weak Set Number Object Octal and Binary Literals Symbol Objects Template Literals
  • 37. CSS4 pseudo-selectors 지원 가상 선택자 :not :any-link :placeholder-shown :read-write :read-only :matches /* old style */ .default .def, .default .bracket, .default .operator, .default .variable {     color: red; } /* using :matches */ .default :matches(.def, .bracket, .operator, .variable) {     color: red; }
  • 38. 기타 -webkit- prefix를 붙여 사용하던 CSS 속성들 일부에 대해 prefix 제거 ( ) <input type=file>에서 iCloud 드라이브 또는 써드파티 앱의 파일 등 선택가능 https 프로토콜을 사용하는 페이지에서는 http와 https를 혼용해 리소스들을 로딩 할 수 없음 네이티브 앱에서 확장기능을 통해, 사파리의 공유된 링크(shared links)에 데이터를 추가할 수 있음 지원 목록 Document.scrollingElement
  • 39. References iOS 9, Safari and the Web: 3D Touch, new Responsive Web Design, Native integration and HTML5 APIs What's new in Safari 9 What's New in Safari : Safari 9.0