# Overview

# Swift

Swift는 Apple이 개발한 프로그래밍 언어로, iOS, macOS 등 Apple 운영 체제용 앱 개발에 주로 사용됩니다. 안전성과 속도에 중점을 두고 설계되었으며, 타입 안전성과 옵셔널을 통해 보다 안정적인 코드 작성을 가능하게 합니다. 또한, Swift는 직관적인 문법과 현대적인 프로그래밍 기능을 제공하여 개발자가 더 빠르고 효율적으로 앱을 개발할 수 있도록 돕습니다. 또한 Swift의 생태계는 지속적으로 성장하고 있으며, Swift Package Manager와 같은 도구들은 외부 라이브러리의 통합을 용이하게 해줍니다. 또한, Swift는 오픈 소스 프로젝트로, 개발자 커뮤니티의 기여를 받으며 발전하고 있습니다.

Swift로 시작하는 것은 애플 플랫폼에서의 앱 개발을 위한 강력하고도 현대적인 방법을 제공합니다. 직관적인 문법과 강력한 성능 덕분에 많은 개발자들이 Swift를 선호하는 추세입니다.

# 채팅서비스 체험하기

# 채팅방 진입



 데모 화면에서 채팅방으로 진입하기 위해서는 CMS에 생성된 채널키를 포함시켜야 합니다.

 만약 채팅방 개설 전 상태라면 Quick Start탭을 통해 채팅방 생성 및 채널키를 확인하는 방법을 습득해 주세요.

 이후 대화명은 채팅방 안에서 사용할 대화명과 이모지를 입력 후 확인 버튼을 눌러 채팅방으로 진입해주세요.

# 채팅 하기


main

 채팅은 텍스트 입력박스에 전송할 메시지를 입력후 전송버튼을 누르거나 엔터키를 눌러 전송하세요.

 메시지전송이 정상적으로 진행되고 있다면, 다른 디바이스나, PC로 채팅방을 입장해보세요.

 다른 사용자로 진입시에 채널키를 동일하게 입력하여 동일한 채팅방으로 진입후, 채팅을 메시지를 주고 받아보세요.

# 구현코드 확인

# 채팅방 진입

import VChatCloudSwiftSDK

// ChannelDelegate 프로토콜을 준수하는 클래스를 생성합니다.
class MyChannel: ChannelDelegate, ObservableObject {
    static var shared: MyChannel = MyChannel()
    private init() {}
    
    // ...
    func onMessage(_ channelResultModel: ChannelResultModel) {
        addMyChatlog(channelResultModel)
    }
    
    func onWhisper(_ channelResultModel: ChannelResultModel) {
        addMyChatlog(channelResultModel)
    }
    // ...
}

// 로그인 시 실행할 함수 구현
func goLogin() async {
    do {
        // 채널 키 설정
        let channelKey = "YOUR_CHANNEL_KEY" // CMS에서 발급한 채널 키로 변경합니다.

        let channel = try await VChatCloud.shared.connect(chatroomViewModel: chatroomViewModel, userViewModel: userViewModel)
        // 채팅서버와 통신할 수 있는 Channel객체에 ChannelDelegate 프로토콜을 준수하는 객체를 등록해서
        // delegate 패턴으로 채팅 이벤트를 처리 할 수 있습니다.
        channel.delegate = MyChannel.shared
        try await channel.join()
        _ = await channel.getClientList()

        // channel.sendMessage 메서드를 사용해서 메시지를 전송할 수 있습니다.
        channel.sendMessage("Hello VChatCloud!")
    } catch {
        // 오류 발생 시 연결을 종료합니다.
        if let channelError = error as? ChannelError {
            VChatCloud.shared.disconnect()
        } else {
            debugPrint("error >>>")
            debugPrint(error.localizedDescription)
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 채널객체 이벤트 처리

이벤트 처리를 위해선 ChannelDelegate 프로토콜을 준수하는 클래스를 만들어야 합니다. 아래 예시에서는 ChannelDelegate을 준수하는 MyChannel 클래스를 정의해 필요한 이벤트 처리 함수를 정의하였습니다.

    Copyright 2022. E7Works Inc. & JOYTUNE Corp. All Rights Reserved.