Ios 如何在不使用Swift中的fireBase的情况下制作MessageKit聊天应用程序?

Ios 如何在不使用Swift中的fireBase的情况下制作MessageKit聊天应用程序?,ios,swift4,messagekit,Ios,Swift4,Messagekit,我需要在不使用Swift中的FireBase的情况下创建MessageKit聊天应用程序 提前感谢。消息包完全不绑定到Firebase,您可以使用任何您想要的数据库。以下是您可以执行的操作: 创建MyMessagesViewController并从MessagesViewControllerMessageKit扩展它 final类MyMessagesViewController:MessagesViewController{ ... } 创建自己的InputBarAccessoryView扩展

我需要在不使用Swift中的FireBase的情况下创建MessageKit聊天应用程序


提前感谢。

消息包完全不绑定到Firebase,您可以使用任何您想要的数据库。

以下是您可以执行的操作:

  • 创建
    MyMessagesViewController
    并从
    MessagesViewController
    MessageKit扩展它
  • final类MyMessagesViewController:MessagesViewController{
    ...
    }
    
  • 创建自己的
    InputBarAccessoryView
    扩展视图,覆盖
    override func setup()
    ,并设置子视图和布局
  • final类MyInputBarAccessoryView:InputBarAccessoryView{
    覆盖函数设置(){
    super.setup()
    //所有的设置都在这里
    }
    }
    
    并在
    MyMessagesViewController
    中创建
    messageInputBar

    required init(…){
    messageInputBar=MyInputBarAccessoryView()
    }
    覆盖变量可以成为第一响应者:Bool{
    返回真值
    }
    覆盖变量inputAccessoryView:UIView?{
    返回消息输入栏
    }
    
  • 创建您自己的
    MessagesCollectionViewFlowLayout
    ,覆盖
    cellsizecalculatoritem(at:)
    ,并创建您自己的
    CellSizeCalculator
    ,覆盖
    messageContainerSize(for:)
    为每个新邮件返回
    CGSize
  • 类MyMessagesCollectionViewFlowLayout:MessagesCollectionViewFlowLayout{
    私有let sizeCalculator=MyMessageSizeCalculator()
    public override func cellSizeCalculatorForItem(在indexPath:indexPath)->CellSizeCalculator{
    如果case.custom=message.kind{
    返回尺寸计算器
    }
    返回super.cellSizeCalculatorForItem(位于:indexPath)
    }
    }
    
    类MyMessageSizeCalculator:MessageSizeCalculator{
    重写func messageContainerSize(对于message:MessageType)->CGSize{
    返回大小//在这里,您必须根据消息计算单元格大小
    }
    }
    
  • MyMessagesViewController
    viewDidLoad方法中,创建
    MessageCollectionView
    ,为单元格和设置委托注册NIB
  • override func viewDidLoad(){
    super.viewDidLoad()
    messageCollectionView=messageCollectionView(
    帧:。零,
    collectionViewLayout:MyCollectionViewFlowLayout()
    )
    //这里的常见设置
    //代表
    messagesCollectionView.messagesDataSource=self
    }
    
  • MessagesDataSourceDelegate
    方法上,实现
    currentssender()
    并返回您自己的currentssender,就像使用Firebase时一样,但现在您必须使用服务器发件人ID或类似的东西。在创建自己的自定义单元格时,请实现
    customCell(for:,at:,in:)
    ,并将已注册的单元格正确出列
  • func currentssender()->SenderType{
    //您必须创建一些从SenderType扩展的模型,然后返回到这里,好吗?
    返回myClientSender
    }
    func自定义单元格(
    对于message:MessageType,
    在indexPath:indexPath,
    在messagesCollectionView:messagesCollectionView)->UICollectionViewCell中{
    //基于消息和索引XPath正确地将单元格出列
    返回单元
    }
    
    它是MessageKit自定义单元格的基本实现。显然,您希望实现更多的东西

    我希望它能帮助你:)