Parse.com 用户在离线时注销

Posted

技术标签:

【中文标题】Parse.com 用户在离线时注销【英文标题】:Parse.com user log out while offline 【发布时间】:2016-04-19 22:52:27 【问题描述】:

这是我遇到的问题。 我正在使用 Parse.com 构建具有登录/注销功能的应用程序。 当设备连接到网络时,我实现 PFUser.logOut() 没有问题。 我的问题是用户离线时。即使没有互联网连接,我也希望能够将它们注销。 到目前为止,我已经尝试从 localDatastore 中删除会话并取消固定 PFUser.currentUser()?.unpinInBackground()。这些都没有奏效。 有什么想法吗?

【问题讨论】:

【参考方案1】:

您可以尝试这样注销:

PFUser.logOutInBackgroundWithBlock( (error) -> Void in
    if error != nil 
        PFUser.currentUser()?.username = nil
    
)

要检查用户是否使用此解决方案登录,您需要检查他的用户名:

if let _ = PFUser.currentUser()?.username 
    //The user is logged in
    //self.performSegueWithIdentifier("showLoggedViewController", sender: self)

【讨论】:

是的,这是个好主意,但 Parse SDK 说:“'无法删除 PFUser 的'用户名'字段。'” 我的日志只显示网络错误:[Error]: The Internet connection appears to be offline. (Code: 100, Version: 1.12.0) [Error]: Network connection failed. Making attempt 1 after sleeping for 1.966949 seconds. 但没有关于他无法删除 PFUser 的用户名字段... 如果你离开它,只要尝试所有尝试,那么它会显示错误吗? Parse 似乎尝试了 4 次连接网络(时间间隔是随机的,可能需要 15/30 秒才能到达最后一次尝试) 是的,确切地说,这就是我要避免的……我不希望用户等待半分钟后退出。否则,如果之后您连接并打开应用程序,Parse 会记得注销:D【参考方案2】:

看来您必须连接到 Internet 才能执行注销。不过文档中并未明确提及。

【讨论】:

以上是关于Parse.com 用户在离线时注销的主要内容,如果未能解决你的问题,请参考以下文章

即使在离线时如何缓存网页以在我的 android 应用程序中使用

MoPub“onInterstitialFailed”adListener 在离线时不起作用

如何在离线时安装 npm 包?

Chrome 在离线时禁用按钮和输入元素

仅在离线时使用 ServiceWorker 缓存

HERE 地图自动建议在离线时不会从下载的地图包中返回预期结果