2015-04-25 37 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