Get Data to Complication: ExtensionDelegate nicht aufgerufen

(Es sieht so aus, als ob dieses Problem in den letzten Wochen von anderen aufgetreten ist, aber ich habe keine Lösung gefunden.)

Ich versuche, eine wirklich grundlegende Sache zu tun:Holen Sie Daten von meiner iOS-App oder meiner Watch-App an meinen Complication Controller.

Ich entpuppe mich als weitaus weniger fähig, dies zu erreichen, als ich dachte. Das watchOS 2 Transition Guide gibt an, dass ich die erforderlichen Daten mit dem folgenden Code "[holen]" soll:

ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];  
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];

Groß. Außer, ich war nicht in der Lage herauszufinden, wie dies auf der Erweiterungsseite funktioniert. Noch wichtiger ist jedoch, dass ich nicht einmal den Code eines Erweiterungsdelegaten von einem Start eines Komplikationscontrollers zum Laufen bringen kann. Wenn ich die Komplikation ausführe, wird die folgende Meldung angezeigt: "Die Erweiterung hat die Anforderung erhalten, für die Komplikationsunterstützung aufgeweckt zu werden." Es scheint jedoch keiner der Codes in einer der Methoden des Erweiterungsdelegaten ausgeführt zu werden. Ich habe in jeder Methode auch Haltepunkte gesetzt, von denen keiner betroffen ist.

s sieht auch so aus, als würde "transferCurrentComplicationUserInfo:" auch für Komplikationsaktualisierungen verwendet, obwohl nicht klar ist, wie es genau verwendet wird. Soweit ich es zusammengetragen habe, wird die Watch-Erweiterung aktiviert, damit ExtensionDelegate die neuen Daten für die nächste Ausführung des Komplikationscontrollers speichern kann. Aufgrund der vorherigen Ausgabe konnte ich dies jedoch nicht bestätigen.

Ich habe vielleicht eine Problemumgehung (Pingen des Servers vom Komplikations-Controller und Hoffen, dass Sitzungsvariablen bestehen bleiben, damit ich relevante Daten senden kann), aber es besteht die Möglichkeit, dass meine Komplikationsarbeit abgesprengt wird, wenn ich das nicht hinbekomme . Jede Hilfe hier wäre enorm.

Übrigens, hier ist der Code, den ich für "getCurrentTimelineEntryForComplication" habe, wenn das überhaupt hilfreich ist.

- (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);  
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage