iOS18Xcode16APP快捷功能开发

224 阅读1分钟

1.按如下步骤创建

创建Intent文件,命名为MyIntent intent文件.jpg

接着创建Intent,这个命名无所谓,不是必须一致 Xnip2025-03-21_17-04-06.jpg

创建完成如图 Xnip2025-03-21_17-52-12.jpg

接着创建IntentWeidget,也就是子target

image.png Xnip2025-03-21_17-05-21.jpg

创建完成如图

Xnip2025-03-21_17-06-27.jpg

我们回到最早创建的MyIntent文件,添加对IntentWeidget的支持

Xnip2025-03-21_17-06-56.jpg

如果不出意外的话这时候运行Demo就能在快捷指令里看到了。 如果运行报错,看看info.plist文件里是否自动添加了相关信息,没有的话就手动补充上去,记得主工程和子taget都要检查

Xnip2025-03-21_17-15-09.jpg

Xnip2025-03-21_17-15-30.jpg

2.自定义快捷键样式

我们可以在创建好的intent手动调整样式,,如果想要更灵活的话也可以转成代码调整。 (ps:查资料这时候编译一下应该就会自动生成有对应的代码文件可以编辑,但我实际操作下来并没有,可以用以下方法手动生成代码文件)

Xnip2025-03-21_17-19-20.jpg 生成的代码文件(图中是Intent),可以调整标题、样式等等

struct Intent: AppIntent {

    static let title: LocalizedStringResource = "开始播放视频"

    static var openAppWhenRun: Bool = true //打开APP

    func perform() async throws -> some IntentResult & ProvidesDialog {

        return .result(dialog: "好的,马上开始播放")

    }

}

  


struct IntentShortcuts: AppShortcutsProvider {

    static var appShortcuts: [AppShortcut] {

        AppShortcut(

            intent: Intent(),

            phrases: [

                "\(.applicationName) 测试", //.applicationName必须要有

            ],

            shortTitle: "测试", // 快捷指令的标题

            systemImageName: "plus.app" // 系统图标

        )

    }

}

AppIntent 在实现快捷指令时需要根据需求实现以下方法:

  • title(必须实现) :快捷指令名称_

  • description(可选) :快捷指令描述_

  • openAppWhenRun(可选) :执行快捷指令时打开App

  • perform(必须实现) :业务逻辑处理

这时候的效果:

IMG_0162.PNG

IMG_0163.PNG

IMG_0164.PNG

IMG_0165.PNG

Demo

更多效果请参照iOS快捷功能