はじめに
チャットアプリを作ろうとすると、
Firebase Realtime Databaseというサービスを使うと素早く実装できるという記事がたくさんあるんで、
僕はPusherのChatKitというサービスを使ってチャットアプリを作ってみようかなと思います。
いつも通り元のDocはこちら
なぜPusher?
・ある程度なら無料で運用出来る
・有名どころが使用している
・自社サーバーとの連携が可能
主に上記の理由からPusherを選びました。
SDKのインストール
cocoapod
gem install cocoapods
target '<Your Target Name>' do
pod 'PusherChatkit'
end
pod install
Carthage
$ brew update
$ brew install carthage
github "pusher/chatkit-swift"
アカウント作成
こちらでアカウント作成
https://dashboard.pusher.com/accounts/sign_up
インスタンスを作成
CredentialsでInstace Locatorを取得
認証用の設定
let provider = PCTokenProvider(url: "test用エンドポイント")
// ChatManagerの生成
let manager = ChatManager(instanceLocator: ChatKitInfo.instaceLocation,
tokenProvider: provider,
userID: )
Pusherとのコネクションを作る
self.manager.connect(delegate: ChatManagerDelegateImpl(delegate: self)) { (currentUser, error) in
if let error = error {
print("Error sending message: \(error.localizedDescription)")
onError(error)
return
}
self.currentUser = currentUser
onSuccess()
}
チャット部屋の購読
guard let currentUser = self.currentUser else {
return
}
currentUser.subscribeToRoomMultipart(id: id, roomDelegate: self, messageLimit: 0) { error in
if let error = error {
print("Error subscribing to room: \(error.localizedDescription)")
return
}
print("Successfully subscribed to the room! 👋")
}
メッセージの送信
currentUser.sendSimpleMessage(roomID: room.id, text: message) { (messageId, error) in
if let error = error {
self.delegate?.onError(error: error)
return
}
self.delegate?.onSuccessSendMessage(id: messageId)
}
メッセージの受信
extension ChatKitManager: PCRoomDelegate {
func onMultipartMessage(_ message: PCMultipartMessage) {}
}
これで基本的なチャットの機能が使えるようになります。
PCTokenProviderの生成
最後に認証用のプロバイダーですが、この記事ではテスト用のエンドポイントを使用しています。
しかし、実際に使用するときは自分でサーバーを構築して認証用のエンドポイントを作成する必要があります。
その場合の、PCTokenProviderの生成方法以下になります。
PCTokenProvider(url: endPoit,
requestInjector: { request -> PCTokenProviderRequest in
// ヘッダー情報などを設定
request.addHeaders(headers)
return request
}, retryStrategy: PCDefaultRetryStrategy(maxNumberOfAttempts: 6, maxTimeIntervalBetweenAttempts: 10))
Pusherではこれ以外にも既読を点けたり、過去のメッセージを取得したりも出来るのでチャットアプリを作ってみたい方は、Pusherというサービスもあるよとだけ覚えておいていただければと思います。