Ho scritto un'applicazione basata su schede in Xcode/RestKit e sto tentando di utilizzare RKReachabilityObserver per determinare la connettività Internet sul dispositivo.Il modo migliore per implementare RKReachabilityObserver in RestKit
Idealmente mi piacerebbe avere un'unica variabile di raggiungibilità nella mia applicazione (se possibile), ma attualmente la mia implementazione è conforme al seguente codice e non funziona molto bene se replicata sulle mie 4 schede.
Se qualcuno ha qualche suggerimento su un modo migliore per farlo, sarei davvero grato ai vostri commenti.
View.he
@property (nonatomic, retain) RKReachabilityObserver *observer;
View.m
@interface AppViewController()
{
RKReachabilityObserver *_observer;
}
@property (nonatomic) BOOL networkIsAvailable;
@synthesize observer = _observer;
-(id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
self.observer = [[RKReachabilityObserver alloc] initWithHost:@"mydomain"];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name:RKReachabilityDidChangeNotification
object:_observer];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// determine network availability
if (! [_observer isReachabilityDetermined]) {
_networkIsAvailable = YES;
}
else
{
_networkIsAvailable = NO;
}
_text.returnKeyType = UIReturnKeyDone;
_text.delegate = self;
}
- (void)reachabilityChanged:(NSNotification *)notification {
RKReachabilityObserver* observer = (RKReachabilityObserver *) [notification object];
if ([observer isNetworkReachable]) {
if ([observer isConnectionRequired]) {
_networkIsAvailable = YES;
NSLog(@"Reachable");
return;
}
}
else
{
_networkIsAvailable = NO;
NSLog(@"Not reachable");
}
}
poi ovunque a mio avviso, faccio semplicemente ....
if (_networkIsAvailable == YES)
{...
ho implementato su più punti di vista (che sembra essere causa del problema
Qual è l'approccio suggerito per un'applicazione a visualizzazione multipla?
Ho usato il singleton invece e funziona perfettamente. Grazie. – Nick
Ciao mja. C'è un modo per toccare un host selezionato con il singleton SharedClient? Inoltre, il tempo per il primo carico è di circa 2 secondi. È normale? – Nick
Ci sono stati alcuni problemi su iOS5 relativi all'API di raggiungibilità. È preferibile che tu definisca il tuo baseURL come indirizzo IP (se possibile), quindi RestKit utilizzerà l'IP per determinare lo stato: i problemi erano legati al modo in cui iOS gestisce le richieste DNS quando determina lo stato di raggiungibilità. Sì, ci può essere un po 'di ritardo. Stai provando sul dispositivo o sul simulatore? Se dispositivo, cosa iOS hai (e anche connettività - Edge/3G/WiFi) – mja