写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP
Posted
技术标签:
【中文标题】写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP【英文标题】:Write to a Parse Installation class object that is not of the current device PFInstallation iOS Swift 3 FROM CLIENT APP 【发布时间】:2017-07-22 15:05:19 【问题描述】:我想知道用户是否可以在 Parse Installation 类中读/写不属于他们设备的行?
我尝试PFInstallation.query()
和PFQuery(className: "Installation")
查询安装类,然后编辑和保存对象。第一种方法返回以下错误:Clients aren't allowed to perform the find operation on the installation collection
。第二个在查询中没有返回任何对象。
除了设备的 PFInstallation.current() 之外,是否无法写入安装类行?或者有人知道如何做到这一点的正确方法吗?
另外,我正在尝试从客户端应用程序执行此操作,而无需主密钥
第一种方法:
let query = PFInstallation.query()
query?.findObjectsInBackground(block: (rows, error) -> Void in
if error == nil
print(rows)
else
print("Error: ", error!)
)
第二种方法:
let inst = PFQuery(className: "Installation")
inst.whereKey("deviceType", equalTo: "ios")
inst.findObjectsInBackground(block: (rows, error) -> Void in
if error == nil
for row in rows!
print("row: ", row)
else
print("ERROR: ", error!)
)
【问题讨论】:
【参考方案1】:类名是_Installation
(所有保留的表/类名以下划线开头_
)
_Installation
(More here) 中允许的操作:
Get -> 忽略 CLP,但不忽略 ACL 查找 -> 仅主密钥 * 创建 -> 忽略 CLP 更新 -> 忽略 CLP,但不忽略 ACL ** 删除 -> 仅主密钥 ** 添加字段 -> 正常行为
* 获取安装请求通常遵循 ACL。除非您提供 installationId 作为约束,否则不允许查找没有主密钥的请求。
** 安装上的更新请求确实遵守安装上定义的 ACL,但删除请求仅是主密钥。有关安装如何工作的更多信息,请查看 REST 指南的安装部分。
额外:
使用类本身提供的类名而不是输入字符串值,既安全又简单。
// Unsafe, can lead to typos, etc.
let query = PFQuery(className: "Installation")
// Better
let query = PFQuery(className: PFInstallation.parseClassName)
// Simpler
let query = PFInstallation.query()
【讨论】:
以上是关于写入不属于当前设备的 Parse Installation 类对象 PFInstallation iOS Swift 3 FROM CLIENT APP的主要内容,如果未能解决你的问题,请参考以下文章
Parse / Facebook -> 会话与当前存储的会话不匹配
Android Parse 推送通知不起作用 - 过时的设备