Sono nuovo a MKNetworkKit
, ma sono stato in grado di aggiungerlo al mio progetto ed è perfettamente funzionante tranne quando si tratta di cambiamenti di raggiungibilità.L'operazione MKNetworkKit non riprende/completa quando cambia la raggiungibilità
Qui è la situazione:
- a disattivare Wi-Fi ed eseguire l'applicazione.
- Anche senza raggiungibilità, richiedo (utilizzando
POST
) alcuni dati creando unMKNetworkOperation
dalla sottoclasseMKNetworkEngine
. Proprio prima di richiedere dati, l'operazione è impostata come freezable (come da Mugunth Kumar's doc). - Dopo aver abilitato WiFi, viene chiamato
checkAndRestoreFrozenOperations
inMKNetworkEngine
e viene rilevata una operazione in sospeso (quella creata senza raggiungibilità), che tenta di accodarsi. - Successivamente, il mio blocco
onCompletion
non viene mai chiamato.
C'è qualcosa che non capisco sulle operazioni di congelamento + raggiungibilità in MKNetworkKit
? Il blocco funziona solo per le operazioni in cui la raggiungibilità cambia dopo l'avvio di una richiesta? O devo implementare la mia raggiungibilità modificata?
Questo è il codice nella sottoclasse MKNetworkEngine
che crea l'operazione e avvia la richiesta. Si noti che il codice irrilevante è stato soppresso.
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:@"value" forKey:@"param"];
MKNetworkOperation *op = [self operationWithPath:MYPATH
params:params
httpMethod:@"POST"];
[op setFreezable:YES];
[op onCompletion:^(MKNetworkOperation *completedOperation) {
// ...
// Here is where I process response and send the result to my completion block
// It's called when WiFi is available, but not called otherwise.
// ...
} onError:^(NSError *error) {
// It's called when WiFi is available, but not called otherwise.
DLog(@"Some error");
}];
[self enqueueOperation:op];
return op;
Ti è istituito un host in il motore? Se si guarda a come vengono gestite le operazioni bloccate, esse non funzionano a meno che non sia definito un host per il motore. –
@KenWoo Sì. Il metodo init nella mia sottoclasse del motore chiama '[super initWithHostName:]'. –
msoler
@msoler Hai funzionato? Ho un problema simile – alandalusi