iOS 18 控制中心小部件刹车 iOS 17 小部件

问题描述 投票:0回答:1

创建新的控制中心小部件后,我遇到了一些奇怪的小部件问题。

这是我的控制中心小部件的代码示例

@available(iOS 18.0, *)
struct OpenAppIntent: AppIntent {

    static var title: LocalizedStringResource = "Button Control Widget"

    static var isDiscoverable: Bool = false
    static var openAppWhenRun: Bool = true

    func perform() async throws -> some IntentResult & OpensIntent {
        return .result(opensIntent: OpenURLIntent())
    }
}

@available(iOS 18.0, *)
struct ActionButtonControlWidget: ControlWidget {

    let kind: String = "widget.ShortcutControlButtonWidget"

    var body: some ControlWidgetConfiguration {
        StaticControlConfiguration(kind: kind) {
            ControlWidgetButton(action: OpenAppIntent()) {
                Image("someimage")
                Text("someTitle")
            }
        }
    }
}

这是WidgetBundle的代码

struct WidgetBundle: SwiftUI.WidgetBundle {

    init() {
        //do some init
    }

    var body: some Widget {
        Widget1()
        Widget2()
        Widget3()
        Widget4()

        if #available(iOS 16.1, *) {
            LiveActivityWidget()
        }

        if #available(iOS 18.0, *) {
            ActionButtonControlWidget()
        }
    }
}

此后,在 iOS 17 上,主屏幕上的所有小部件都会停止工作,如果您想添加新的小部件,应用程序不会在小部件中心看到此小部件。也许以前有人遇到过这个问题。谢谢。

一般来说,它看起来不像代码问题,因为#available和@available使用正确。

widget control-center ios18
1个回答
0
投票

这是我的 WidgetBundle 的代码

@main
struct CredWidgetBundle: WidgetBundle {
    @WidgetBundleBuilder
    var body: some Widget {
        Widget1()
        Widget2()
        Widget3()
        if #available(iOS 18, *) {
            Control1()
        }
    }
}

使用 Xcode16 beta 进行构建,一切在模拟器上都能完美运行,但在设备上遇到相同的问题,其中应用程序小部件在小部件中心不可用。 使用 App Store 中的 Xcode16 发行版,它可以工作。 ps:我已经清除了派生数据并从 Xcode 进行了全新构建

当前正在尝试调试另一个问题,其中控件的自定义图标不可见

© www.soinside.com 2019 - 2024. All rights reserved.