Как получить доступ к WidgetCenter из WidgetKit в Xamarin.iOS?

Мне нужно уведомить WidgetKit, чтобы перезагрузить мой виджет iOS 14. В Swift это можно сделать с помощью WidgetCenter:

WidgetCenter.shared.reloadAllTimelines()

Однако WidgetKit, похоже, недоступен в Xamarin.iOS.


person Wojciech Kulik    schedule 03.10.2020    source источник
comment
docs.microsoft.com/en-us / xamarin / ios / platform / ios14 /   -  person Jason    schedule 03.10.2020
comment
@ Джейсон Как это отвечает на вопрос? Речь идет о добавлении виджета iOS 14, который у меня уже есть. Не о доступе к WidgetCenter из Xamarin.iOS.   -  person Wojciech Kulik    schedule 03.10.2020


Ответы (1)


reloadAllTimelines WidgetKit в настоящее время недоступен для Xamarin.iOS (он доступен только через платформы на основе Swift, а технически Xamarin.iOS связывает платформы ObjC).

Он находится в списке улучшений Xamarin.iOS.

В настоящее время вам нужно написать библиотеку Swift, а затем связать ее с Xamarin.iOS, чтобы ее можно было вызвать из кода .Net.


Стороннее репо / проект, который предоставляет WidgetKit ReloadTimeLinesOfKind, ReloadAllTimeLines, & GetCurrentConfigurationsWithCompletion (см. Комментарий Войцеха Кулика ниже)

person SushiHangover    schedule 03.10.2020
comment
Спасибо, перейдя по вашим ссылкам, я обнаружил эту проблему на GitHub: github.com/xamarin/ xamarin-macios / issues / 8931 и один парень уже реализовали эту прокси-библиотеку: github.com/xamarin/xamarin-macios/issues/ Я попробовал, и он работает с небольшими изменениями, которые я там описал! - person Wojciech Kulik; 03.10.2020
comment
@WojciechKulik Спасибо за ссылку # 8931, которая ведет на github.com/Csaba8472/WidgetCenterProxy ApiDefinitions.cs точно то, что я изобразил, я не уверен, почему Xamarin не просто генерирует определения Swift и автоматически включает ссылки на фреймворк на основе Swift, если код пользователя ссылается на них ... - person SushiHangover; 03.10.2020