解析推送通知结果 0 发送

Posted

技术标签:

【中文标题】解析推送通知结果 0 发送【英文标题】:Parse push notification results 0 sent 【发布时间】:2015-04-25 16:45:11 【问题描述】:

遇到推送通知问题,想知道是否有人可以提供帮助,我正在尝试使用此查询向特定用户发送推送通知.....它位于包含 PFObjects 和用户详细信息的 for 循环中。我的设置没有任何问题,因为我的消息页面(聊天)上有类似的代码,它为每个成员发送推送。我正在使用正确的用户名检索解析数据库上的推送,但没有发送任何内容:/不知道问题是什么?也许值得一提的是,有些用户没有安装设置?但我正在使用一个确实有这个设置的用户。任何帮助将不胜感激我的代码如下。

  var pushQuery:PFQuery = PFInstallation.query()
  pushQuery.whereKey("user", equalTo: pushObject["username"])
  var push:PFPush = PFPush()
  push.setQuery(pushQuery)
  push.setMessage("New Task")
  push.sendPushInBackgroundWithBlock( (success: Bool, error: NSError!) -> Void in
          if (success)
             println("worked?")
           else 
             println( "this is an error \(error.localizedDescription)")
          
  )

【问题讨论】:

你真的“工作”了吗?还是你得到一个“错误”? 是的,对不起,我应该这么说...因为我认为错误是由于它试图一次发送到许多推送,因为最初我使用的是 sendPush(nil)。但是是的,取决于从查询返回的用户数量是我回来“工作”的时间量吗?这确实有效 所以它在某些情况下有效,在其他情况下无效? 不,在我在这里提供的这个函数的情况下它不起作用,但是对于一个单独的类,当一个用户向另一个用户发送消息时我发送一个新通知它工作正常.因此,为什么我认为这可能是一对一的情况,我认为让我感到困惑的是,它会显示在解析推送中……但它说没有发送推送。 【参考方案1】:

我相信推送的目标是这里的问题。

  pushQuery.whereKey("user", equalTo: pushObject["username"])

这行似乎是问题所在,因为 Installation 类通常将 "user" 键存储为 PFUserobjectID 或直接作为指针。无论哪种方式,匹配username 可能都不是正确的方法。你需要的是一个额外的查询,匹配username,并返回一个用户,这将匹配安装查询:

var innerQuery : PFQuery = PFUser.query()
innerQuery.whereKey("username", equalTo: pushObject["username"])
var pushQuery = PFInstallation.query()
pushQuery.whereKey("user", matchesQuery: innerQuery)

我刚刚从正常运行的 Obj-C 代码中翻译了这个,所以我希望它可以在 Swift 中工作,但这是您需要根据用户的用户名向安装发送推送的一般想法。

【讨论】:

感谢您的有用评论,最终解决了这个问题。

以上是关于解析推送通知结果 0 发送的主要内容,如果未能解决你的问题,请参考以下文章

将服务器推送通知解析到特定用户问题

发送解析推送通知的 webhook 后

解析推送通知发送数据

推送通知 - 两个应用程序共享同一个 Parse Serve

解析服务器不向大量受众发送推送通知

推送通知不仅从我的设备发送 - 解析