iOS - 꼼꼼한 재은씨 Swift 기본편(3_데이터 전달 및 알림)

이한솔·2023년 11월 21일
0

iOS 앱개발 🍏

목록 보기
28/49

뷰컨트롤러간의 데이터 전달

직접 전달 방식 (동기 방식)

뷰컨트롤러에서 값을 직접 전달하는 방식
주로 영속적으로 값을 저장할 필요가 없는 화면 전환에서 사용한다.

데이터 전달 방법

간접 전달 방식 (비동기 방식)

저장소 사용, 주로 지속적으로 값을 저장할 필요가 있는 화면 전환에서 사용된다. 화면 전환은 빠르고 네트워크는 그보다 느리기 때문에 저장소에 데이터가 저장되는 시점과 화면 전환 시점이 일치하지 않으면 값 전달이 제대로 안될 수 있어서 이에 대한 처리가 필요하다.
저장소 역할을 담당할 객체는 데이터의 성격에 따라 다양한 선택이 가능하다. 가장 쉽게 사용할 수 있는 객체는 AppDelegate 클래스를 사용할 수 있다. AppDelegate는 저장소는 아니지만 앱 전체를 통틀어 하나의 객체만 존재하고 앱의 생성과 소멸을 함께 하므로 이 객체에 값을 저장하면 앱을 종료하기 전까지 값을 유지할 수 있다. 앱이 종료되면 AppDelegate에 저장된 값도 사라진다. 앱이 종료된 후에도 값을 보존하려면 반영구적으로 값을 저장할 수 있는 저장객체를 사용해야한다.
코코아 터치 프레임워크는 값을 반영구적으로 저장할 수 있도록 UserDefaults 객체와 CoreData 객체를 제공한다. 이외에도 이미지나 미디어 파일 등 큰 사이즈의 데이터인 경우 파일에 직접 저장하는 방법도 자주 사용된다. 네트워크를 통해 서버에 데이터를 전송하여 저장하는 방법도 있다.

UserDefaults
CoreData

다양한 데이터 저장 방법



유저에게 알림을 보내는 방법

서버 점검때문에 일정 시간동안 서비스 사용이 제한될때나 네트워크가 연결되지 않은 상태를 사용자에게 인지시키고, 한동안 접속하지 않은 사용자에게 초대 메세지를 보낼 때 유저에게 직접 명시적인 메세지를 전달해야 할 때가 있다. 사용자에게 메세지를 전달하는 방법은 앱이 실행중일 때 알림창을 띄우는 UIAlertController와 앱을 켜놓지 않아도 아이폰 화면에 전달되는 메세지를 보낼 수 있는 로컬 노티피케이션 (로컬푸시)서버 노티피케이션 (서버푸시)가 있다.

UIAlertController

유저에게 즉각적으로 메세지를 전달할 수 있고 다른 화면 요소에 묻혀 인식되지 않을 위험성이 낮아서 주로 경고나 알림 메세지 등에서 널리 사용된다. 앱이 실행 중일때만 동작한다.

로컬알림

앱 내부에서 특정 프로세스에 의해 등록된 메세지를 iOS의 알림 센터를 통해 전달한다. 처음에 앱을 제작할 때 앱 내부 코드에 심어놓은 메세지가 전달되는 경우가 대부분이라서 상황을 적극적으로 반영할 수 없다는 한계가 있다. 로컬알림은 iOS 스케줄러에 의해 발송되는데 앱 내부에서 미리 메세지를 구성한 후 발송될 시각을 iOS 스케줄러에 등록해 두면 해당 시각에 맞춰 자동으로 발송된다. 알림 센터에 표시된 메세지를 클릭하여 앱을 실행시키고, 원하는 기능을 실행하거나 특정 화면으로 이동하게 처리할 수 있다. iOS 10 이상부터는 UserNotification 프레임워크를 사용한다.

서버알림

별도의 서버를 통해 APNs(Apple Push Notification Service)라는 애플 고유의 메시징 시스템에게 보낸 메세지가 네트워크를 통해 전달된다. 서버푸시를 구현하기 위해서는 여러가지 장비와 준비과정이 필요하다. 푸시 메세지를 표현할 앱 외에도 사용자 개개인의 디바이스 토큰 정보를 저장할 데이터베이스 서버와 애플 APNs 시스템에 푸시 메세지를 발송할 발송 서비스, 발송을 위한 인증서까지 구비되어야 해서 대부분 서버알림은 기업 서비스에서만 제공한다. 앱 서비스 운영자가 필요한 시점에 인스턴스 메세지를 만들어 날릴 수 있으므로 유용한 마케팅 수단이 된다.

0개의 댓글