Firebase onDisconnect在飞行模式下损坏

所以,当应用程序变为活动状态并初始化帐户时,通过在firebase中将名为isOnline的标志设置为true,我可以在应用程序中build立状态。 在大多数情况下,这个工作,当我杀了应用程序的用户被标记为离线。 但是当我进入飞行模式时,我的断开连接处理程序不会被调用,用户仍然在线。

在重新build立连接之后,我做了一个写入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在应用程序委托中调用goOnline 。 当应用程序进入后台,仍然有活动被发布到firebase,所以在线仍然如预期的那样。 如果已经设置断开连接处理程序(在成为活动状态的情况下),是否设置断开连接处理程序是不正确的?

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

这是处理存在的正确stream程吗? 为什么在处理较差/没有networking连接时遇到问题?