티스토리 뷰

반응형

 

안녕하세요 :) Zedd입니다.

제가 예전에 iOS) 왕초보를 위한 3D touch (포스터치) - quick action라는 글을 작성했었습니다.

지금보니까 가독성 돌았군요...ㅎㅎ..

일단 시작하겠습니다.

 

# QuickAction?

풀 네임은 Home Screen quick action입니다.

이름은 quick action이긴 한데..

아래에 나오겠지만, 이 action을 지정하는 프로퍼티는 shortcutItems으로 shortcut이라고도 합니다.

shortcut이라고 그래도 찰떡같이 알아들으면 됩니다. 단축어 생각이 나겠지만요...

iOS 13이상 기기 &&. 홈화면에서 사용자가 앱 아이콘을 길게 터치하면 Home Screen quick actions을 보여줍니다.

 

# Human Interface Guidelines

만들기 전에, 관련 HIG를 읽고오시는 것을 추천드립니다.

그 중 중요한 걸 뽑아오자면..

- 총 4개까지 보여줄 수 있음. -> 그러니까 quick action으로 가치가 있는 것들만 넣기.

- 간단한 navigation을 위해 quick action을 사용하지 마세요. (뜨끔)

 

# Quick Action Type

Quick Action에는 2가지 타입이 있습니다.

1. Static

2. Dynamic

 

Static

Static은 iOS) 왕초보를 위한 3D touch (포스터치) - quick action 글에서 했던 것 처럼,

Info.plist에 정의하여 "빌드시" Quick Action을 정의하는 것입니다.

 

Dynamic 

Dynamic은 런타임에 동적으로 구성할 수 있는 Quick Action입니다.

 

Static은 iOS) 왕초보를 위한 3D touch (포스터치) - quick action을 참고해주세요. 

오늘은 Dynamic Home Screen quick action을 만들어보겠습니다.

 

애플 문서를 보면서 하겠습니다. 샘플 프로젝트도 있으니 참고하세요. 

 

# Dynamic quick action

- 특정 데이터 or 앱 상태에 따라 다름.

- UIApplication 인스턴스의 shortcutItems 프로퍼티를 설정하여 구성.

- shortcutItems을 설정하는 것은 어디서든지 해도 되지만, 애플은 sceneWillResignActive(_:)에서 했음. 

 

애플에서 올려준 샘플 프로젝트를 살펴볼게요.

기본적으로 위 2가지 quick action이 들어가있어요.

(Edit Home Screen과 Remove App은 앱에서 설정하는게 아닙니다.)

Search와 Share은 Info.plist에 정의되어 있는 것을 보니 Static Home Screen Quick Action이네요!

앱은 간단합니다.  Contact리스트가 있고, 눌러서 들어가면 Detail을 볼 수 있어요.

그리고 Favorite을 설정할 수 있습니다.

제가 Richard Roe를 Favorite 설정 했잖아요? 이제 다시 홈스크린으로 가보면..

이렇게 추가되어있는 걸 볼 수 있어요.

Dynamic이 특정 데이터 or 앱 상태에 따라 다르다고 그랬죠? 바로 이럴 때 Dynamic을 사용하면 됩니다.

애플 예제는 sceneWillResignActive에서 shortcutItems을 설정했다고 그랬죠?

코드를 살펴봅시다.

favoriteContacts를 돌면서 UIApplicationShortcutItem을 만들어 추가해주고 있는 것을 볼 수 있습니다.

 

제가  iOS) 왕초보를 위한 3D touch (포스터치) - quick action에서 한 건 AppDelegate에서 처리했었는데요.

SceneDelegate에서 어떻게 처리하는지 봅시다.

1. 현재 shortcut item의 레퍼런스를 가지고 있을 전역 변수 만들고, 있으면 저장

2. sceneDidBecomeActive에서 처리.

3. 각 shortcut type에 따라 하고싶은 일 지정. 

 

하면 됩니다. 

scene willConnectTo는 quick action을 눌러 앱을 최초 실행 할 때 불리구요.

만약

1. 앱이 이미 실행 중 

2. 홈화면에서 quick action 클릭

-> 이때는 scene willConnectTo가 호출되지 않습니다. window scene이 이미 연결되어있기 때문이죠.

이때는 아래와 같은 메소드가 불립니다. 

그래서 여기서 한번 더 처리해줘야 합니다. 

 

참고 

developer.apple.com/documentation/uikit/menus_and_shortcuts/add_home_screen_quick_actions

 

반응형