【发布时间】:2014-10-11 04:55:08
【问题描述】:
我在向用户发送推送通知时遇到问题。我正在使用 Parse 后端,我的所有代码都在 Swift 中。我可以毫无问题地向服务器添加推送通知,但我似乎无法添加推送通知接收器而不收到突出显示 [PFInternalUtils assertValidClassForQuery:] 的错误。我知道这与我查询收件人的方式有关,但我不知道如何解决。任何帮助表示赞赏。这是我的完整代码:
let message: NSString = responseMessage.text as NSString
var data = [ "title": "Some Title",
"alert": message]
var userQuery: PFQuery = PFUser.query()
userQuery.whereKey("objectId", equalTo: recipientObjectId)
var query: PFQuery = PFInstallation.query()
query.whereKey("currentUser", equalTo: userQuery)
var push: PFPush = PFPush()
push.setQuery(query)
push.setData(data)
push.sendPushInBackground()
这可行 如果我取出查询,代码只需向 Parse 发送推送通知即可:
let message: NSString = responseMessage.text as NSString
var data = [ "title": "Some Title",
"alert": message]
var push: PFPush = PFPush()
push.setData(data)
push.sendPushInBackground()
这是可疑代码
var userQuery: PFQuery = PFUser.query()
userQuery.whereKey("objectId", equalTo: recipientObjectId)
var query: PFQuery = PFInstallation.query()
query.whereKey("currentUser", equalTo: userQuery)
push.setQuery(query)
也供参考
recipientObjectId 是应该接收推送通知的用户的 objectId。它被保存为 NSString。
我的安装类中的“currentUser”键是指向拥有该安装的用户的指针。
编辑
忘记提供控制台输出。控制台输出显示:'NSInvalidArgumentException',原因:'Cannot do a comparison query for type: PFQuery'
【问题讨论】:
-
尊敬的用户3353890;您能否提供出现错误 [PFInternalUtils assertValidClassForQuery:] 的控制台输出?问候。
-
当然!我的错。我有一个异常断点,忘记将其关闭以获取控制台输出......输出错误状态:'NSInvalidArgumentException',原因:'无法对类型进行比较查询:PFQuery'......我也会修改我的对此有疑问。
-
尊敬的用户3353890;如果返回结果,您可以检查您的用户查询吗?我认为有一个与返回用户对象(关系)有关的问题。
-
是的,userQuery返回了一个User类的对象。它为我正在搜索的用户返回整个字典。 objectId、用户名、电子邮件等......
-
尊敬的 user3353890, 据我所知,如果您在 Installation 表中有一个 Pointer<_user> 类型的列,则您的 Push 查询必须起作用。请再次查看以下链接的 Parse 推送通知文档; parse.com/docs/push_guide#sending-queries/iOS希望这会有所帮助,问候。如果你
标签: swift push-notification parse-platform ios8