2014-10-11 79 views
3

我無法將推送通知從用戶發送到用戶。我使用了一個Parse後端,我的所有代碼都在Swift中。我可以添加一個推送通知到服務器沒有問題,但我似乎無法添加推送通知接收器沒有得到突出顯示的錯誤[PFInternalUtils assertValidClassForQuery:]。我知道這與我如何查詢收件人有關,但我不知道如何解決。任何幫助表示讚賞。這是我的完整代碼:使用Parse和Swift將推送通知從用戶發送給用戶

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() 

這個作品 如果我拿出查詢,代碼工作,只需發送一個推送通知解析:

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',原因:'無法對類型進行比較查詢:PFQuery'

+0

親愛user3353890;你可以提供控制檯輸出,你得到的錯誤[PFInternalUtils assertValidClassForQuery:]?問候。 – kingspeech 2014-10-11 06:32:13

+0

當然!我的錯。我有一個異常斷點,並忘記關閉它以獲取控制檯輸出...輸出錯誤狀態:'NSInvalidArgumentException',原因:'不能做類型比較查詢:PFQuery'...我也會修改我的這個問題。 – user3353890 2014-10-11 06:41:51

+0

尊敬的用戶3353890;你可以檢查你的用戶查詢,如果它返回結果?我認爲有一個與返回用戶對象(關係)有關的問題。 – kingspeech 2014-10-11 07:08:28

回答

3

找到答案!

而不是使用

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

的正確的代碼

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

你介意發佈完整的代碼嗎?從您在問題中嘗試的所有不同方式混淆了一下,然後您最終完全使用了哪些代碼。 @ user3353890 – lukaivicev 2015-12-17 22:13:29