sd_setImageを使うとチャットで追加された新しい画像を読み込めない問題を引き起こします。
数10キロバイトの画像でも試して同じ状態になったので、サイズの問題ではなさそうです。
ちなみにコメントアウトしている箇所はsd_setImageを使わずにダウンロードしている処理になります。
swift
1db.collection("privateChat").document(chatId).collection("messages").whereField("createTime", isGreaterThan: startTimestamp).addSnapshotListener{ querySnapshot, error in 2 guard let documents = querySnapshot?.documents else { 3 print("Error fetching documents: (error!)") 4 return 5 } 6 7 guard documents.count > 0 else { return } 8 9 guard let snapshot = querySnapshot else { 10 print("Error fetching documents: (error!)") 11 return 12 } 13 14 snapshot.documentChanges.forEach { diff in 15 switch diff.type { 16 case .added: 17 18 let messageData = diff.document.data() 19 20 // 名前 21 var name = "" 22 if messageData["senderId"] as! String == RootTabBarController.userId { 23 name = RootTabBarController.userInfo["name"] as! String 24 } else { 25 name = self.partnerData["name"] ?? "" 26 } 27 28 // 日付 29 var date = Date(timeIntervalSince1970: messageData["createTime"] as! TimeInterval) 30 let dateStr = date.toStringWithCurrentLocale() 31 date = DateFormatter.current("yyyy年MM月dd日 HH:mm").date(from: dateStr)! 32 33 // メッセージ 34 // テキスト 35 if messageData["type"] as! String == "text" { 36 let message = JSQMessage(senderId: messageData["senderId"] as? String, senderDisplayName: name, date: date, text: messageData["message"] as? String) 37 self.messages?.append(message!) 38 } else { 39 // 画像 40 let mediaItem = PhotoMediaItem(image: nil) 41 let imgRef = self.storageRef.child("privateChat").child(self.chatId).child(messageData["message"] as! String) 42 let imgView = UIImageView() 43 imgView.sd_setImage(with: imgRef) 44 mediaItem?.image = imgView.image 45 46// mediaItem?.appliesMediaViewMaskAsOutgoing = self.returnOutgoingStatusForUser(senderId: messageData["senderId"] as? String ?? "") 47// let imgRef = self.storageRef.child("privateChat").child(self.chatId).child(messageData["message"] as! String) 48// imgRef.downloadURL { url, error in 49// if let error = error { 50// // Handle any errors 51// print(error.localizedDescription) 52// } else { 53// self.downLoadImage(at: url!) { (image) in 54// if image != nil { 55// mediaItem?.image = image 56// self.collectionView.reloadData() 57// } 58// } 59// } 60// } 61 62 let message = JSQMessage(senderId: messageData["senderId"] as? String, senderDisplayName: name, date: date, media: mediaItem) 63 self.messages?.append(message!) 64 } 65 66 //メッセージの送信処理を完了する(画面上にメッセージが表示される) 67 self.finishReceivingMessage(animated: true) 68 69 70 default: 71 break 72 } 73 } 74 75 }