Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift 4中的JSQMessagesViewController的帮助下,为用户实现阻止使用firebase的恶意用户的机制_Ios_Swift_Firebase_Jsqmessagesviewcontroller - Fatal编程技术网

Ios 如何在swift 4中的JSQMessagesViewController的帮助下,为用户实现阻止使用firebase的恶意用户的机制

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

我在swift 4中的“JSQMessagesViewController”的帮助下,使用“Firebase”实现了一对一的聊天,并将我的应用程序提交到Appstore。但是,该应用程序被拒绝,并要求“用户阻止滥用用户的机制”

那么,我如何在swift 4中实现这一机制。我无法实现它,任何代码/建议都将不胜感激


提前感谢您。

对于JSQMessage,您可以使用提供的委托方法

override func collectionView(collectionView: JSQMessagesCollectionView, didTapMessageBubbleAtIndexPath indexPath: NSIndexPath!) {
    super.collectionView(collectionView, didTapMessageBubbleAtIndexPath: indexPath)
    print("Present option to block here.")
}
使用它,您可以获取消息索引并执行任何适当的操作

  • 呈现屏幕或任何动作
  • 您需要获取要阻止的用户ID

对于JSQMessage,您可以使用提供的委托方法

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”,不要加载该消息


希望您有想法。

好的,可能有很多解决方案。但是我提供了我用来实现块功能的过程

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的宝贵评论