이 문서는 채널톡 iOS SDK(이하 SDK)의 delegate에 대해서 설명합니다.

delegate는 SDK에서 발생하는 이벤트 알림을 받아볼 수 있도록 합니다.
이를 위해 ChannelPluginDelegate를 채택한 클래스에게 delegate를 위임해야 합니다. 예시는 다음과 같습니다.

class ViewController: ChannelPluginDelegate {

  override func viewDidLoad() {
    ...
    ChannelIO.delegate = self
    ...
  }
}
[ChannelIO setDelegate:self];

onShowMessenger

메신저 화면을 여는 이벤트에 대한 딜리게이트 메소드입니다. 아래의 경우에 호출됩니다.

  • showMessenger 를 호출한 경우
  • openChat 을 호출한 경우
  • 유저가 채널 버튼를 눌러 메신저를 연 경우
class ViewController: ChannelPluginDelegate {

  func onShowMessenger() {
   ...

  }
}
- (void)onShowMessenger { 
}

onHideMessenger

메신저 화면을 닫는 이벤트에 대한 딜리게이트 메소드입니다. 아래의 경우에 호출됩니다.

  • hideMessenger 를 호출한 경우
  • sleep 을 호출한 경우
  • shutdown 을 호출한 경우
  • 유저가 명시적으로 메신저 화면을 닫는 경우
class ViewController: ChannelPluginDelegate {

  func onHideMessenger() {
   ...
  }
}
- (void)onHideMessenger {
}

onChatCreated

새 유저챗이 생성되는 이벤트에 대한 딜리게이트 메소드 입니다. 아래의 경우에 호출됩니다.

  • 유저의 명시적인 새 채팅 생성
  • chatId = nilopenChat
class ViewController: ChannelPluginDelegate {

  func onChatCreated(chatId: String) {
   ...
  }
}
- (void)onChatCreatedWithChatId:(NSString *)chatId { 
}

onBadgeChanged(count: Int) Deprecated

❗️

onBadgeChanged(unread: Int, alert: Int)를 사용해 주세요.

유저의 뱃지 개수 변경에 대한 딜리게이트 메소드입니다. 뱃지 갯수가 변경되거나, 부트하는 경우에 호출됩니다.

class ViewController: ChannelPluginDelegate {

  func onBadgeChanged(alert: Int) {
   ...
  }
}
- (void)onBadgeChangedWithAlert:(NSInteger)alert { 
}

onBadgeChanged(unread: Int, alert: Int)

유저의 읽지 않은 알림 갯수에 대한 딜리게이트 메소드입니다. 알림 갯수가 변경되거나, 부트하는 경우에 호출됩니다.

  • alert : 유저가 읽지 않은 중요 알림 갯수입니다. 채널 버튼에서 숫자로 알림이 표현됩니다.
  • unread : 유저가 읽지 않은 모든 알림 갯수입니다. alert 메시지의 수를 포함합니다. 채널 버튼에서 빨간 점으로 알림이 표현됩니다.
class ViewController: ChannelPluginDelegate {

  func onBadgeChanged(unread: Int, alert: Int) {
   ...
  }
}
- (void)onBadgeChangedWithUnread:(NSInteger)unread alert:(NSInteger)alert {
}

onFollowUpChanged

유저에 의해 팔로업 정보가 수정되는 경우에 호출됩니다.
ChannelIO.updateUser 에 의해서는 호출되지 않습니다. 딕셔너리의 값은 nullable 합니다.

class ViewController: ChannelPluginDelegate {

  func onFollowUpChanged(data: [String : Any]) {
   ...
  }
}
- (void)onFollowUpChangedWithData:(NSDictionary<NSString *,id> *)data {
}

onUrlClicked

유저가 채팅 안에서 링크를 누르거나, 링크 버튼을 누르는 경우에 호출됩니다.
해당 함수가 true를 반환하는 경우, SDK에서 수행하는 URL 리다이렉트는 동작하지 않습니다.

class ViewController: ChannelPluginDelegate {

  func onUrlClicked(url: URL) -> Bool {
   ...
  }
}
- (BOOL)onUrlClickedWithUrl:(NSURL *)url {
  // SDK do not action when return true
  return YES;
}

onPopupDataReceived

인앱 메시지 팝업이 불리는 경우에 대한 알림입니다.
매니저로부터 메시지가 도착하거나, 마케팅 메시지가 도착하는 경우에 호출됩니다.
이 함수의 파라미터 event에 대한 자세한 정보는 PopupData 문서를 참고합니다.

class ViewController: ChannelPluginDelegate {

  func onPopupDataReceived(event: PopupData) {
   ...
  }
}
- (void)onPopupDataReceivedWithEvent:(PopupData *)event {
}