Ios 如何在swift 4中的JSQMessagesViewController的帮助下,为用户实现阻止使用firebase的恶意用户的机制
我在swift 4中的“JSQMessagesViewController”的帮助下,使用“Firebase”实现了一对一的聊天,并将我的应用程序提交到Appstore。但是,该应用程序被拒绝,并要求“用户阻止滥用用户的机制” 那么,我如何在swift 4中实现这一机制。我无法实现它,任何代码/建议都将不胜感激Ios 如何在swift 4中的JSQMessagesViewController的帮助下,为用户实现阻止使用firebase的恶意用户的机制,ios,swift,firebase,jsqmessagesviewcontroller,Ios,Swift,Firebase,Jsqmessagesviewcontroller,我在swift 4中的“JSQMessagesViewController”的帮助下,使用“Firebase”实现了一对一的聊天,并将我的应用程序提交到Appstore。但是,该应用程序被拒绝,并要求“用户阻止滥用用户的机制” 那么,我如何在swift 4中实现这一机制。我无法实现它,任何代码/建议都将不胜感激 提前感谢您。对于JSQMessage,您可以使用提供的委托方法 override func collectionView(collectionView: JSQMessagesColle
提前感谢您。对于JSQMessage,您可以使用提供的委托方法
override func collectionView(collectionView: JSQMessagesCollectionView, didTapMessageBubbleAtIndexPath indexPath: NSIndexPath!) {
super.collectionView(collectionView, didTapMessageBubbleAtIndexPath: indexPath)
print("Present option to block here.")
}
使用它,您可以获取消息索引并执行任何适当的操作
- 呈现屏幕或任何动作
- 您需要获取要阻止的用户ID
override func collectionView(collectionView: JSQMessagesCollectionView, didTapMessageBubbleAtIndexPath indexPath: NSIndexPath!) {
super.collectionView(collectionView, didTapMessageBubbleAtIndexPath: indexPath)
print("Present option to block here.")
}
使用它,您可以获取消息索引并执行任何适当的操作
- 呈现屏幕或任何动作
- 您需要获取要阻止的用户ID
希望您有想法。好的,可能有很多解决方案。但是我提供了我用来实现块功能的过程 1.您已经为用户的每条消息创建了一个密钥(例如“状态”) 2.当用户聊天时,发送状态为“0” 3.当用户阻止其他用户发送状态为“1”的消息或空白消息时 4.此处状态“0”表示用户未被阻止,状态“1”表示用户被阻止 5.当用户收到消息时,检查状态是否为“1”,不要加载该消息
希望你有主意。首先,你需要在你的用户对象上有一个类似于
isBlocked
的标志,或者你可以在Firebase
中创建一个新表,其中包含为某个用户被阻止的用户(或ID)列表。您可以编写一个云函数,在返回设备之前过滤掉这些信息,或者在设备上解析这些信息。检查您的已被阻止
属性,但不会在对话列表中显示它们
第二,您需要一个入口点来实际向用户添加阻塞标志。根据您的设计,您可以通过多种方式实现这一点。您可以在导航栏中添加一个按钮,向用户提供如下选项
(请确保在我建议的ViewDidLoad()
中的适当位置添加对此的调用)
或者在消息本身上使用此方法
override func collectionView(collectionView: JSQMessagesCollectionView, didTapMessageBubbleAtIndexPath indexPath: NSIndexPath!) {
super.collectionView(collectionView, didTapMessageBubbleAtIndexPath: indexPath)
presentOptions()
}
func presentOptions() {
let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
actionSheet.addAction(UIAlertAction(title: "Block User", style: .default, handler: { _ in
blockUserAction()
}))
actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
}
func blockUserAction() {
//CODE TO ADD USER ID TO BLOCKED USER IN FIREBASE
}
第三,我会在类似“设置”的页面中提供一个被阻止用户的列表,允许您从列表中删除用户
我还建议您将
JSQMessagesViewController
替换为,因为JSQMessagesViewController
已被弃用,将来将不受支持。是替代品,具有任何人都可以加入的松弛通道。它也是用swift4
编写的,因此您不需要桥接头文件
就可以将其作为项目的一部分。它已经具备了JSQMessagesViewController的大部分功能,而且还将提供更多功能 首先,您需要在您的用户对象上有一个类似于isBlocked
的标志,或者您可以在Firebase
中创建一个新表,其中包含为特定用户阻止的用户(或ID)列表。您可以编写一个云函数,在返回设备之前过滤掉这些信息,或者在设备上解析这些信息。检查您的已被阻止
属性,但不会在对话列表中显示它们
第二,您需要一个入口点来实际向用户添加阻塞标志。根据您的设计,您可以通过多种方式实现这一点。您可以在导航栏中添加一个按钮,向用户提供如下选项
(请确保在我建议的ViewDidLoad()
中的适当位置添加对此的调用)
或者在消息本身上使用此方法
override func collectionView(collectionView: JSQMessagesCollectionView, didTapMessageBubbleAtIndexPath indexPath: NSIndexPath!) {
super.collectionView(collectionView, didTapMessageBubbleAtIndexPath: indexPath)
presentOptions()
}
func presentOptions() {
let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
actionSheet.addAction(UIAlertAction(title: "Block User", style: .default, handler: { _ in
blockUserAction()
}))
actionSheet.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
}
func blockUserAction() {
//CODE TO ADD USER ID TO BLOCKED USER IN FIREBASE
}
第三,我会在类似“设置”的页面中提供一个被阻止用户的列表,允许您从列表中删除用户
我还建议您将
JSQMessagesViewController
替换为,因为JSQMessagesViewController
已被弃用,将来将不受支持。是替代品,具有任何人都可以加入的松弛通道。它也是用swift4
编写的,因此您不需要桥接头文件
就可以将其作为项目的一部分。它已经具备了JSQMessagesViewController的大部分功能,而且还将提供更多功能。谢谢Daniel的宝贵评论谢谢Daniel的宝贵评论