Получение данных для усложнения: ExtensionDelegate не вызывается
(Похоже, что с этой проблемой сталкивались другие в предыдущие недели, но я не нашел никаких решений.)
Я пытаюсь сделать действительно простую вещь:Получите данные из моего iOS-приложения или из моего Watch-приложения на мой Complication Controller.
Я оказался гораздо менее способным сделать это, чем я думал. Руководство по переходу watchOS 2 указывает, что я должен «[получить] необходимые данные из делегата расширения», используя следующий код:
ExtensionDelegate* myDelegate = [[WKExtension sharedExtension] delegate];
NSDictionary* data = [myDelegate.myComplicationData objectForKey:ComplicationCurrentEntry];
Отлично. За исключением того, что я не смог понять, как заставить это работать на стороне расширения. Хотя еще важнее то, что я даже не могу заставить работать код делегата расширения при запуске контроллера сложности. Когда я запускаю усложнение, я получаю это сообщение: «Расширение получило запрос на пробуждение для поддержки усложнения». Однако ни один из кодов в любом из методов делегата расширения, кажется, не выполняется. Я также установил точки останова в каждом методе, и ни одна из этих точек останова не была достигнута.
Он также выглядит как «TransferCurrentComplicationUserInfo:» также предлагается использовать для обновлений усложнения, хотя неясно, как именно он используется. Насколько я понял, он используется для пробуждения расширения часов, чтобы ExtensionDelegate мог сохранять новые данные в следующий раз, когда запускается контроллер усложнений, но из-за предыдущей проблемы я не смог подтвердить.
У меня есть один, возможно, обходной путь (пинг сервера от контроллера сложности и надежда на то, что переменные сеанса сохраняются, чтобы я мог отправить соответствующие данные), но есть все шансы, что, если я не смогу решить эту проблему, моя работа по усложнению будет отложена. Любая помощь здесь будет огромной.
Кстати, вот код, который у меня есть для "getCurrentTimelineEntryForComplication", если это вообще полезно.
- (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);
}