Mac-Catalyst

【Mac开发之】如何在Mac-Catalyst应用访问AppKi

2021-01-29  本文已影响0人  飞天蛋挞

前言:最近在把一个iOS项目移植到Mac端,最开始写了一个Mac版本的StatusBarItem App,和主App拆分成了两个App。然鹅老板表示最好能把Mac app的功能通过Mac-Catalyst实现,这样就只需要一个App。。那么干饭人只能想办法了。。。

首先Mac-Catalyst是苹果发布的一个帮助开发者将iPad应用移植到macOS上的服务,这些网上有很多资料,就不说了。。但是因为纯iPad应用在移植过程中,可能还要针对Mac版本进行二次开发,比如添加StatusBarItem等。但是Mac-Catalyst仅可使用AppKit API的一小部分,如果你在代码中直接使用例如NSWindow等AppKit API中的类,你就会得到这种报错。。。

    最后找到了访问AppKit API的两种方式:使用 Dynamic或者使用Mac bundle。在我的项目里面我采用的是后者的方式,具体实现步骤如下:

1、添加Mac Bundle

命名为MacPlugin

我们将其命名为MacPlugin

2、在主Target添加MacPlugin

3、在MacPlugin中创建一个protocol

Plugin.swift

@objc(Plugin)

protocolPlugin:NSObjectProtocol {

init()

func sayHello()

}

4、实现MacPlugin.swift

classMacPlugin:NSObject, Plugin {

    required over ride init() {

    }

    func sayHello() {

        let    alert=NSAlert()

        alert.alertStyle=.informational

        alert.messageText="Hello from AppKit!"

        alert.informativeText="It Works!"

        alert.addButton(withTitle:"OK")

        alert.runModal()

    }

}

5、在主程序加载bundle

OK!以上

上一篇下一篇

猜你喜欢

热点阅读