2015-04-25 38 views
0

得到推送通知问题,想知道是否有人可以帮助,我试图发送一个推送通知给特定用户使用此查询.....这是一个for循环包含PFObjects与用户细节。我的设置没有任何问题,因为我的消息页面(聊天)上有类似的代码,会为每个成员发送一次推送。我正在用正确的用户名检索解析数据库,但没有发送任何内容:/不知道问题是什么?也许值得一提的是,一些用户没有安装设置?但我使用的是具有此设置的用户。任何帮助将非常感谢我的代码如下。解析推送通知结果0发送

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)") 
      } 
    }) 
+0

你确实得到“工作?”或者你有一个“错误”回来? –

+0

是的,对不起,我应该说这个...因为我认为这个错误是由于它试图发送到很多推一次,因为最初我使用sendPush(零)。但是,是否依赖于从查询返回的用户数量是我返回“工作时间”的时间量?并且这可以工作 – TomTom

+0

,所以它在某些情况下有效,在其他情况下不起作用? –

回答

1

我认为推动的目标是这里的问题。

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

此行似乎是一个问题,因为安装类通常存储"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

谢谢你的有用评论,这是最终的解决方案。 – TomTom