2014-04-09 41 views
5

kullanırken kullanıcının çevrimiçi olup olmadığını belirleme Bir mesaj göndermeden önce (yani, Firebase nesnesinde setValue çağrısı), kullanıcının çevrimiçi veya çevrimdışı olup olmadığını belirlemek için önerilen bir yol var mı? ÖrneğinFirebase iOS SDK

: onlar mesela bir tünele girdiler eğer kullanıcı bağlantısını kaybedebilir çünkü

[firebase setValue:someValue withCompletionBlock:^(NSError *error, Firebase *ref) { 

    // This block is ONLY executed if the write actually completes. But what if the user was offline when this was attempted? 
    // It would be nicer if the block is *always* executed, and error tells us if the write failed due to network issues. 

}]; 

Biz iOS uygulamasında bu gerekir. Firebase bunu yapmak için yerleşik bir yol sunmuyorsa, iOS'un Ulaşılabilirlik API'sini izlemeyi tercih ederiz.

cevap

5

Onlar Temelde Böyle bir şey yapabiliriz .info/connected Ref

Firebase* connectedRef = [[Firebase alloc] initWithUrl:@"https://SampleChat.firebaseIO-demo.com/.info/connected"]; 
[connectedRef observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot, NSString *prevName) { 
    if([snapshot.value boolValue]) { 
     // connection established (or I've reconnected after a loss of connection) 
    } 
    else { 
     // disconnected 
    } 
}]; 
1

gözlemlemek bu here.

adamış onların docs bir bölümü var. Gözlemciyi kurun ve durum değişikliği ile ilgili bildirim gönderin. Temel olarak kabul edilen yanıtla aynıdır, ancak firebase çerçevesinin yeni sürümüne uyarlanmıştır.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    FIRDatabaseReference *ref = [[FIRDatabase database] referenceWithPath:@".info/connected"]; 
    [ref observeEventType:FIRDataEventTypeValue withBlock:^(FIRDataSnapshot * _Nonnull snapshot) { 
      NSString *value = snapshot.value; 
      NSLog(@"Firebase connectivity status: %@", value); 
      self.firebaseConnected = value.boolValue; 

      [[NSNotificationCenter defaultCenter] postNotificationName:@".fireBaseConnectionStatus" object:nil]; 
    }]; 
} 

Daha sonra uygulamanızın herhangi bir görünüm denetleyicisinde bunu yapabilirsiniz. Bildirimleri gözlemleyin ve buna göre bir şeyler yapın (kullanıcı arayüzünüzü, vb. Güncelleyin).

Bu yardımcı olacaktır umarım.

PS. Belki de, erişilebilirlik ile ilgili temel erişilebilirliği izlemek için ilginç bir fikir bulacaksınız. [Mh] framework. Daha sonra, aynı zamanda, firebase'in wifi veya 3g'ye bağlı olması durumunda nasıl hareket edeceğinize de karar verebilirsiniz.

İlgili konular