스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
SMS 메시지 필터 살펴보기
SMS 메시지 필터 확장 프로그램을 통해 사용자는 알 수 없는 발신자로부터의 SMS 메시지를 필터링하여 메시지를 관리할 수 있습니다. SMS 메시지를 메시지 내용 및 기타 휴리스틱에 따라 폴더 및 하위 폴더로 자동으로 분류하는 메시지 필터 확장 프로그램을 갖춘 앱을 만드는 방법을 알아보세요.
리소스
-
다운로드
♪ ♪
안녕하세요, WWDC에 오신 것을 환영합니다 제 이름은 Ajay Singh입니다 여러분들과 SMS 메시지 필터에 대해 알아보는 시간을 갖게되어 기쁩니다 SMS 메시지 필터를 사용하면 메시지 필터 확장 프로그램을 만들어 알 수 없는 발신자가 보낸 SMS를 분류하는 데 도움이 됩니다 먼저 SMS 메시지 필터의 작동 방식을 설명드린 다음 iOS 16에서 새로워진 점을 말씀드리겠습니다 iOS 16 API들을 이용해 메시지 필터 확장 프로그램의 예시를 함께 살펴보고 이 확장 프로그램을 사용하면 메시지 앱에서 어떻게 보일지 보여드리겠습니다 마지막으로 인도에서의 Apple SMS 필터 개선점에 대해 말씀드리겠습니다
SMS 메시지 필터를 살펴보죠 많은 나라에서 SMS 메시지는 거래를 알리거나 광고, 경고, 리마인더 등의 목적으로 여러 사업에서 많이 사용됩니다 이 예시에는 짧은 코드 알파벳 코드 일반 전화번호들이 섞여있습니다 이러면 받은 메시지함이 지저분해져 사랑하는 사람이 보낸 메시지를 찾기 어려워집니다
iOS는 알 수 없는 발신자로부터 온 메시지를 필터링하는 옵션을 제공하지만 하루에 여러 통의 메시지를 받으면 알 수 없는 발신자 폴더도 읽지 않은 메시지로 가득차게 됩니다 SMS 메시지의 자동 필터링은 많은 이에게 중요하며 iOS는 알 수 없는 발신자의 메시지를 추가적으로 분류할 수 있도록 샌드박스 기반의 확장 프로그램 모델을 제공합니다 SMS 필터링 앱은 App Store에서 찾고 설치할 수 있습니다 설치 후에는 설정 앱의 메시지의 알 수 없는 연락처 및 스팸에서 알 수 없는 발신자 필터링하기를 켤 수 있습니다 그러고 나서 SMS 필터를 선택할 수 있습니다 여기에는 SMS 필터가 두 개 설치되어 있습니다 단, 한번에 한 필터만 활성화할 수 있습니다
iOS 14와 이후에는 메시지 앱에 거래, 광고, 정크라는 새 폴더가 표시됩니다 이 폴더들은 중요한 메시지들을 찾고 정리하는 것을 돕습니다 어떤 필터를 선택해도 메시지 앱은 거래, 광고, 정크의 같은 분류 구조를 제공합니다 우리는 여러분들이 더 구체적인 분류를 설정하길 원한다는 것을 알고 있어요 이에 iOS 16에서 새롭게 강화된 필터 분류 API를 소개합니다 이제 SMS 메시지 필터링 확장 프로그램은 12개의 세부 범주로 분류할 수 있습니다
SMS 필터링 확장 프로그램에서 사용할 수 있는 새로운 세부 범주는 다음과 같습니다 새로운 세부 범주들은 기존 범주인 거래와 광고의 아래에 포함됩니다 이제 메시지를 더 세세하게 분류해서 더 나은 경험을 제공할 수 있습니다 예를 들어 인도의 시장에서는 일반적으로 은행 계좌 활동 내역이나 신용카드 사용 알림과 같은 금융 거래에 관련된 메시지들을 많이 받습니다 이러한 메시지들은 이제 거래 폴더 안의 금융 세부 폴더에 잘 정리됩니다 SMS 필터링이 어떤 과정으로 이뤄지는지 보겠습니다 이는 구성과 런타임 분류 두 단계로 나뉘어집니다 구성 단계에서는 사용자가 설정 앱에서 메시지 필터를 선택합니다 이는 iOS 16에서 도입된 새로운 API를 구동시켜 여러분의 필터가 지원하는 기능을 요청합니다 그러면 지원되는 범주와 세부 범주들에 응답할 수 있습니다 이 예제의 필터에서는 금융, 주문, 쿠폰의 세부 범주를 지원한다고 보고합니다 iOS는 이러한 내역을 확인해 받은 메시지함에서 수신된 메시지를 적절한 폴더에 업데이트 합니다 런타임 분류 단계에서는 SMS 메시지가 수신될 때마다 iOS가 여러분의 필터를 요청해 어떤 범주와 세부 범주로 분류할지 결정합니다 여기에 action과 sub-action이라는 용어가 나옵니다 필터는 구성 단계에서 선언된 기능 중 하나에 대해 응답해야 합니다 이후에는 SMS 메시지가 메시지 앱의 해당 세부 폴더에 나타납니다 간단한 메시지 필터링 확장 프로그램을 빌드해 API가 어떻게 작동하고 메시지 앱에서 어떻게 보이는지 확인해봅시다
Xcode에서 새 Message Filter Extension 타겟을 만들어 시작합니다 Message Filter Extension은 새 target을 만들 때 템플릿에서 찾을 수 있습니다 Message Filter Extension을 선택하고 Next를 클릭해주세요 그리고 이름을 정한 뒤 Finish를 클릭합니다
target이 만들어지면 MessageFilterExtension.swift가 필요한 함수와 함께 자동으로 생성됩니다 iOS 16에는 capabilitiesRequest라는 새로운 API handle이 있습니다 여러분이 지원할 거래 혹은 광고의 세부 활동을 ILMessageFilterCapabilities QueryResponse 구조에 채워넣으세요 최대 5개의 세부 활동까지 정할 수 있습니다 여기서는 거래 범주에서 금융, 주문, 건강 세 가지 세부 활동과 광고 범주에서 쿠폰과 할인 세부 활동을 지원함을 나타냅니다 이제 메시지 필터링 확장 프로그램을 빌드하고 설치합니다 설정 앱에서 필터를 선택하면 거래 범주에서 금융, 주문, 건강이 광고 범주에서 쿠폰과 할인의 세부 활동이 선언되고 받은 메시지함이 업데이트 됩니다 이제 구성이 잘 작동함을 확인했으니 메시지가 수신되면 iOS로 적절한 범주를 반환할 간단한 로직을 정의합니다 먼저 메시지 본문을 queryRequest 객체로 추출합니다 메시지가 특정 키워드를 포함하면 이에 맞는 적절한 활동과 세부 활동을 반환합니다 메시지에 'debited' 키워드가 있으면 filterAction에 .transaction을 반환하고 filterSubaction에 .transactional Finance를 반환합니다 비슷하게 메시지에 'coupon' 키워드가 있으면 .promotion과 .promotional Coupons를 반환합니다 거래와 광고의 다른 세부 분류에 대해 비즈니스 로직을 업데이트할 수도 있습니다 filterAction과 filterSubaction에 대해 잘못된 조합을 반환하면 iOS는 세부 활동을 무시하고 활동만 받아들입니다 예를 들어 활동에서는 거래를 세부 활동에서는 쿠폰을 반환하면 메시지는 모든 거래 폴더로 갑니다
이 예시처럼 은행으로부터 'debited'라는 키워드가 포함된 메시지를 받으면 금융 세부 폴더로 분류됩니다
다른 예시를 보죠 coupon이란 키워드가 포함된 블랙 프라이데이 할인 메시지를 받으면 메시지 앱이 이 메시지를 쿠폰 세부 폴더로 분류합니다
iOS 16에서는 사용자 구성에 따라 가장 적합한 세부 범주를 선택할 수 있습니다 첫 번째 예시에서 SMS 메시지 필터는 거래 안에 주문, 알림, 건강 공공 서비스, 날씨가 포함되는데 두 번째 예시에서는 거래 안에 알림, 건강, 보상이 포함되고 광고 안에 할인이 포함됩니다 여러분의 메시지 필터링 확장 프로그램은 세부 범주를 이용해 사용자마다 차별화된 경험을 제공할 수 있습니다 Apple은 인도에서 iOS 16의 강화된 SMS 필터를 제공합니다 인도에서의 Apple SMS 필터는 거래 범주에서 금융, 주문, 건강이 금융, 주문, 알림을 포함한 추가적인 세부 범주를 지원합니다 여러분의 은행 거래는 금융에 나타나고 음식 배달이나 배송 등은 주문으로 분류됩니다 중요한 이벤트나 할 일은 알림 폴더에 나타납니다 정리하자면 이 영상에서는 SMS 메시지 필터와 이를 이용해 메시지를 거래 광고, 정크로 분류하는 방법을 다뤘습니다 iOS 16에서는 메시지 필터링 확장 프로그램이 12개의 추가적인 세부 범주로 메시지를 분류할 수 있습니다 자세한 내용은 이 영상과 함께 제공되는 API 문서 링크를 참조해 주세요 사용자들이 SMS 메시지를 정리하는 것을 도울 여러분의 창의적인 아이디어가 기대됩니다 그리고 언제나처럼 SMS 메시지 필터링을 발전시킬 수 있도록 도와주시는 피드백에 감사드립니다
-
-
7:02 - Message filter extension example
func handle(_ capabilitiesRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) { let response = ILMessageFilterCapabilitiesQueryResponse() // choose up to five sub-categories supported by the filter response.transactionalSubActions = [.transactionalFinance, .transactionalOrders, .transactionalHealth] response.promotionalSubActions = [.promotionalCoupons, .promotionalOffers] completion(response) }
-
8:16 - Return categories for incoming messages
func handle(_ queryRequest: ILMessageFilterQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterQueryResponse) -> Void) { guard let message = queryRequest.messageBody else { return } let response = ILMessageFilterQueryResponse() switch(message) { case _ where message.contains("debited"): response.filterAction = .transaction response.filterSubAction = .transactionalFinance break case _ where message.contains("coupon"): response.filterAction = .promotion response.filterSubAction = .promotionalCoupons break // update other cases } completion(response) }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.