◎위챗 : speedseoul
https://beankhan.tistory.com/26
위젯은 지금 중요한 정보에 대해 빨리 접근할 수 있도록 제공한다.
예를 들어, 사용자는 현재 주가를 확인하거나, 날씨를 확인하거나, 오늘의 일정을 보거나, 할 일을 완료했다고 체크하기위해 Today view를 연다.
(개발을 시작하기전에) Today extension이 당신이 제공하려는 기능에 적절한지 확실히 해야한다.
최고의 위젯은 사용자에게 빠른 업데이트를 제공하거나 매우 간단한 작업을 하는 것이다.
만약 개발하고싶은 App extension이 복잡한 단계의 일을 해야하거나 컨텐츠 업로드/다운로드 같은 오래걸리는 작업을 하게된다면, Today extension은 옳은 선택이 아니다.
http://minieetea.com/2015/01/archives/2732
iOS8 부터 지원되는 기능으로 안드로이드의 Widget 과 비슷한 기능이다. (실제로 Widget 이라고 부르기도 한다.)
Extension 앱은 아래와 같은 특징을 가진다.
익스텐션의 기능들은 애플프레임웍를 사용해서만 실행 가능하며 호스트앱(다른 앱)이 다이렉트로 익스텐션을 호출하지 못한다.
실행이 애플 프레임웍에의해 된다는 사실을 제외하면, 앱과 거의 동일한 형태를 가진다.
즉, 유저 인터페이스도 가질 수 있고, 이를위한 ViewController, 리소스 등을 모두 사용가능하다.
앱과 익스텐션 간 데티러르 공유하기 위하여 앱 그룹이라는 새로운 컨셉이 도입되었다.
앱과 익스텐션은 독립적인 프로세스로 실행되기 때문에 두 개 모두 동시에 실행 중일 수 있다. ( ex. 앱에서 백그라운드 작업이 진행되고있는 상황에서 익스텐션 기능을 실행하는 경우 )
CoreData
또는 sqlite
를 이용하면 이미 기본적인 동기화 기능이 제공되며
좀 더 커스터마이즈 하고싶은경우, 일반적인 inter-process (앱-익스텐션간) 동기화 방법을 제공하는 NSFileCoordination
을 이용하여 동기화를 하면된다.
http://www.letmecompile.com/extensions-for-macos-10-10-ios-8/
위 개념대로 Extension 을 위해서는 App Group이 있어야한다.
App Group은 ~/Library/Developer/CoreSimulator/Devices/DFE32C7F-97F6-4CCC-9421-490834C8ED7D/data/Containers/Shared 에 위치한다. (시뮬레이터 기준)