JSQMessagesViewControllerでメッセージの削除を行う方法 – how to delete messages using JSQMessagesViewController

JSQMessagesViewControllerは大変便利なので重宝しているわけですが、メッセージの削除に対応するとなると少々厄介なんですよね。JSQMessagesオブジェクトごとに、DBに対応するメッセージのkeyを持たせれば楽勝なんでしょうけど、ライブラリいじるの面倒なので力ずくで対応します。Firebaseを使った場合の対応方法をご紹介します。

やり方としてはシンプルで、
1.自分のメッセージをタップしたときのイベントを取得する
2.イベント内でJQSMessageオブジェクトを取得しタイムスタンプを取得(DBのタイムスタンプを登録しておく必要あり)
3.タイムスタンプと投稿者IDから対応するレコードをDBから引っ張ってきてdeleteフラグを立てる
4.deleteフラグのあるメッセージを非表示にする(もしくは削除済みというメッセージを出す)

では細かく見ていきましょう。

1.自分のメッセージをタップしたときのイベントを取得する

これでバルーンのタップイベントを取得できます。基本的にこの中に処理を書いていくことになります。

2.イベント内でJQSMessageオブジェクトを取得しタイムスタンプを取得(DBのタイムスタンプを登録しておく必要あり)

JSQMessageから投稿日情報を取得し、それをDBで使用しているタイムスタンプフォーマットに変更します。私はunixtimestampを使用しているのでこのようにしました。

3.タイムスタンプと投稿者IDから対応するレコードをDBから引っ張ってきてdeleteフラグを立てる

4.deleteフラグのあるメッセージを非表示にする(もしくは削除済みというメッセージを出す)

これはメッセージをobserveするところで判定を噛ませてあげればOK

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です