Firebase onDisconnect已破坏飞行模式

时间:2015-02-22 21:29:56

标签: ios objective-c firebase

因此,当应用程序变为活动状态以及初始化帐户时,我通过在名为isOnline的firebase中将标志设置为true来构建我的应用程序中的状态。在大多数情况下,当我杀死应用程序时,用户被标记为脱机。但是当我进入飞行模式时,我的断开处理程序从未被调用,用户仍然在线显示。

重新建立连接后,我执行一个写入firebase的操作,并且在写入时(可能是任何内容),isOnline标志设置为false。我有点困惑。

这就是我处理网上的方式:

- (void)goOnline
{
    Firebase *connectedref = [[[Firebase alloc] initWithUrl:kPULFirebaseURL] childByAppendingPath:@".info/connected"];
    [connectedref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
        if ([snapshot.value boolValue])
        {
            Firebase *fire = [[[[[Firebase alloc] initWithUrl:kPULFirebaseURL] childByAppendingPath:@"users"] childByAppendingPath:[PULAccount currentUser].uid] childByAppendingPath:@"isOnline"];
            [fire setValue:@(YES)];

            [fire onDisconnectSetValue:@(NO)];
        }
    }];
}

我在应用启动时以及激活应用时在我的应用代理中调用goOnline。当应用程序进入后台时,仍然会将活动发布到firebase,因此isOnline仍然符合预期。如果已经设置了断开处理程序(在变为活动状态的情况下),再次设置它是不正确的吗?

当应用终止或后台活动停止10-20分钟时,isOnline设置为false,这是正确的。

这是处理存在的正确流程吗?为什么在处理差/无网络连接时遇到问题?

0 个答案:

没有答案