2014-10-11 77 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