【问题标题】:Trouble sending Push notifications from user to user using Parse and Swift使用 Parse 和 Swift 从用户向用户发送推送通知时遇到问题
【发布时间】: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


【解决方案1】:

找到答案!

而不是使用

query.whereKey("currentUser", equalTo: userQuery)

正确的代码是

query.whereKey("currentUser", matchesQuery: userQuery)

【讨论】:

  • 您介意发布完整的代码吗?对您在问题中尝试的所有不同方式以及您最终完整使用的代码感到困惑。 @user3353890
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多