使用Parse和Swift将推送通知从用户发送给用户
问题描述:
我无法将推送通知从用户发送到用户。我使用了一个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'
答
找到答案!
而不是使用
query.whereKey("currentUser", equalTo: userQuery)
的正确的代码
query.whereKey("currentUser", matchesQuery: userQuery)
+0
你介意发布完整的代码吗?从您在问题中尝试的所有不同方式混淆了一下,然后您最终完全使用了哪些代码。 @ user3353890 – lukaivicev 2015-12-17 22:13:29
亲爱user3353890;你可以提供控制台输出,你得到的错误[PFInternalUtils assertValidClassForQuery:]?问候。 – kingspeech 2014-10-11 06:32:13
当然!我的错。我有一个异常断点,并忘记关闭它以获取控制台输出...输出错误状态:'NSInvalidArgumentException',原因:'不能做类型比较查询:PFQuery'...我也会修改我的这个问题。 – user3353890 2014-10-11 06:41:51
尊敬的用户3353890;你可以检查你的用户查询,如果它返回结果?我认为有一个与返回用户对象(关系)有关的问题。 – kingspeech 2014-10-11 07:08:28