在 UNO 平台上使用 Shiny

Using Shiny with UNO Platform

寻找在 UNO 平台上构建的跨平台项目中使用 shinyorg/shiny nuget 包的方法。

面对一些超出我 iOS 开发(有限)技能的挑战,我正在专门寻找如何将 Shiny.Core 集成到解决方案 iOS 项目中。

更准确地说,我正在寻找放置此初始化覆盖的位置:

public override void PerformFetch(UIApplication application, Action<UIBackgroundFetchResult> completionHandler)
    => this.ShinyPerformFetch(completionHandler);

因为当我尝试在 iOS 项目的 Main.cs(应用程序 class)中添加它时,我找不到从哪里开始...

iOS 项目中的 Main.cs class 包含一个静态 Main 方法(它是应用程序的主要入口点),其中调用 UIApplication.Main(args, null, typeof(App));制作完成。

UIApplication 实际上是 UIKit.UIApplication

按照本指南https://github.com/shinyorg/shiny/tree/master/src/Shiny.Core 的说明进行操作:

* Add the following as the first line in your AppDelegate.cs - FinishedLaunching method

using Shiny;
this.ShinyFinishedLaunching(new YourStartup());


** IOS JOBS **
If you plan to use jobs in iOS, please do the following:

1. Add this to your AppDelegate.cs

public override void PerformFetch(UIApplication application, Action<UIBackgroundFetchResult> completionHandler)
    => this.ShinyPerformFetch(completionHandler);

在 iOS,AppDelegate 实际上是应用程序中的 App class,是从默认的 Uno Platform 模板创建的。

Windows.UI.Xaml.Application 继承自 UIApplicationDelegate 并提供了一种声明方式:

#if __IOS__
public override void PerformFetch(UIApplication application, Action<UIBackgroundFetchResult> completionHandler)
    => this.ShinyPerformFetch(completionHandler);
#endif

为了让其他平台的代码忽略此 iOS 特定代码