(Sembra che questo problema è stato riscontrato da altri nelle settimane precedenti, ma non ci sono stati eventuali soluzioni che ho trovato.)su Dati per complicazione: ExtensionDelegate non Chiamato
sto cercando di fai una cosa molto semplice: Ottieni dati dalla mia app iOS o dalla mia app Watch sul mio controller di complicazione.
Mi sto rivelando molto meno capace di ottenere questo risultato di quanto pensassi. watchos 2 Guida transizione indica che avrei dovuto "[prendere] i dati necessari dal delegato estensione" utilizzando il seguente codice:
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];
Grande. Tranne, non sono stato in grado di capire come farlo funzionare sul lato dell'estensione. Anche se ancora più importante, non riesco nemmeno a ottenere che il codice delegato dell'estensione venga eseguito da un avvio di un controller complicato. Quando eseguo la complicazione, ricevo questo messaggio: "L'estensione ha ricevuto la richiesta di svegliarsi per il supporto delle complicazioni". Tuttavia, nessuno dei codici all'interno dei metodi del delegato di un'estensione sembra essere eseguito. Ho anche impostato i punti di interruzione all'interno di ogni metodo e nessuno di questi punti di interruzione viene colpito.
Sembra anche "transferCurrentComplicationUserInfo:" è consigliato anche per gli aggiornamenti di complicazioni, anche se non è chiaro con precisione come viene utilizzato. Per quanto ne ho ricavato, è abituato a risvegliare l'estensione dell'orologio in modo che ExtensionDelegate possa memorizzare i nuovi dati per la prossima volta che viene eseguito il controller di complicanze, ma a causa del problema precedente non sono stato in grado di confermare.
Ho una soluzione alternativa (eseguire il ping del server dal controller di complicazione e sperare che le variabili di sessione persistano in modo da poter inviare dati rilevanti), ma ci sono tutte le possibilità che se non riesco a ottenere questo ha funzionato il mio lavoro di complicazione sarà hosed. Qualsiasi aiuto qui sarebbe tremendo.
A proposito, ecco il codice che ho per "getCurrentTimelineEntryForComplication", se questo è utile a tutti.
- (void)getCurrentTimelineEntryForComplication:(CLKComplication *)complication withHandler:(void(^)(CLKComplicationTimelineEntry * __nullable))handler {
NSDate* entryDate = [NSDate date];
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSString* data = [myDelegate.complicationData objectForKey:@"meow"];
NSLog(@"complication data: %@", data);
CLKComplicationTimelineEntry* entry = [self getTimelineEntry:@"2015-08-25 00:19:42" entryDate:entryDate complication:complication];
handler(entry);
}
dove nell'estensione WatchKit attivi la WCSession? Quale oggetto hai impostato come delegato? – ccjensen
@ccjensen che ha lo stesso identico problema, avete mai immaginato qualcosa? – SRMR
Non ho mai avuto risposta alle mie domande quindi non penso che questo sia mai stato capito – ccjensen