[ios] IdentityLookupUI 프레임워크를 통한 통화 및 메시지의 무단 수신 방지하는 방법

iOS 애플리케이션을 개발하다 보면 통화나 메시지를 통한 스팸이나 무단 광고를 차단하는 기능을 추가하고 싶을 수 있습니다. iOS 12부터 Apple은 스팸 통화 및 메시지를 식별하고 차단할 수 있는 IdentityLookupUI 프레임워크를 도입했습니다. 이 프레임워크를 사용하면 애플리케이션에서 통화나 메시지를 식별하거나 차단할 수 있습니다.

IdentityLookupUI 프레임워크 소개

IdentityLookupUI 프레임워크는 iOS 12.0 이상에서 사용 가능합니다. 이 프레임워크를 사용하면 통화와 메시지의 발신자를 식별하고 이에 대한 정보를 화면에 표시하여 사용자에게 전화나 메시지의 신뢰성을 판단할 수 있는 기능을 제공합니다.

IdentityLookupUI 프레임워크를 사용한 통화 및 메시지 차단

콜러ID 확장 프로그램 등록

IdentityLookupUI를 사용하기 위해서는, 콜러ID 확장 프로그램을 등록해야 합니다. Info.plist 파일에 다음과 같은 키-값 쌍을 추가합니다.

<key>NSExtension</key>
<dict>
  <key>NSExtensionPointIdentifier</key>
  <string>com.apple.identitylookup.callerid</string>
  <key>NSExtensionMainStoryboard</key>
  <string>MainInterface</string>
  <key>NSExtensionAttributes</key>
  <dict>
    <key>IncludeInCallDirectory</key>
    <true/>
  </dict>
</dict>

콜러ID 확장 프로그램 구현

콜러ID 확장 프로그램을 구현하기 위해서는 ILCallDirectoryProvider 및 ILClassificationAction 열거형의 하위 클래스를 생성해야 합니다. 콜러ID 정보를 추가하고 차단 규칙을 설정할 수 있습니다.

import IdentityLookup

class CallDirectoryHandler: ILCallDirectoryProvider {
  override func beginRequest(with context: ILCallDirectoryExtensionContext) {
    if let phoneNumbersToBlock = // ... 차단할 전화번호 목록 {
      for phoneNumber in phoneNumbersToBlock {
        context.addBlockingEntry(withNextSequentialPhoneNumber: phoneNumber)
      }
    }
  }
}

메시지 필터 확장 프로그램 구현

메시지 필터 확장 프로그램을 구현하기 위해서는 ILMessageFilterExtension 및 ILMessageFilterQueryHandling 프로토콜을 채택한 클래스를 생성해야 합니다. 메시지를 분류하고 차단할 수 있습니다.

import IdentityLookup

class MessageFilterExtension: ILMessageFilterExtension {
  override func handle(query: ILMessageFilterQuery, completion: @escaping ([ILMessageFilterExtensionContext]) -> Void) {
    if let messageToBlock = // ... 차단할 메시지 {
      let response = ILMessageFilterExtensionContext.init(for: query, decision: .none)
      completion([response])
    }
  }
}

마무리

IdentityLookupUI 프레임워크를 사용하면 통화와 메시지의 무단 수신을 식별하고 차단하는 기능을 쉽게 구현할 수 있습니다. 이를 통해 애플리케이션의 사용자들이 더욱 안전하고 편리하게 커뮤니케이션을 할 수 있도록 도와줄 수 있습니다. 추가로, Apple 공식 문서를 참고하여 더 자세한 내용을 확인할 수 있습니다.