【发布时间】:2021-06-24 18:56:16
【问题描述】:
所以我有一个设置,我正在尝试学习如何使用 firebase 和 swift 制作一个基本的聊天应用程序。我已经设置了所有通知类别,我可以获取通知,并且可以单击我设置的操作。我开始升级它以允许在通知操作中“回复”,这就是我遇到问题的地方。
在 didReceive 响应的 userNotificationCenter 方法中,我需要能够调用 ApiService 以将消息发送到我的节点服务器,该服务器通过管理 sdk 直接与 firebase 通信。问题是,每次我尝试从该函数内部调用一个方法时,都会出现错误:
没有更多上下文的表达类型是模棱两可的
这是我的didReceive 方法,为了简单起见,在这篇文章中进行了简化...
func userNotificaitonCenter(_ center: UNUsernotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfor = response.notificaiton.request.content.userInfo
switch response.actionIdentifier {
case Notifications.Actions.reply:
let textResponse = response as! UNTextInputNotificationResponse
let userText = textResponse.userText
let messageFrom = userInfo["from"]
let myID = userInfo["to"]
ApiService.sendNewMessage(myId, to: messageFrom, message: userText) { (_) in } <-This line gives the error
break
...
}
}
我尝试通过在 AppDelegate 类中添加私有方法然后调用该方法来更改它,但我仍然遇到相同的错误。我不明白为什么它认为表达式是模棱两可的,我的项目中除了我构建的那个之外没有其他 ApiService 类。
我这样做完全错了吗?我只是希望能够将用户在通知中键入的消息发送回服务器,以便可以将其添加到聊天中。提前感谢您的任何帮助,这个让我挠头,掉头发。
【问题讨论】:
-
尝试将每个参数的类型强制为预期类型。
-
您的函数类型不同,我认为它是字符串或 int 并且 userInfo["to"] 返回任何类型,因此您需要转换值
标签: ios swift firebase-cloud-messaging remote-notifications