From 55255bf0f8ea6bddf1bc4c0b6a90c3252940c54d Mon Sep 17 00:00:00 2001 From: jinyaqiu Date: Wed, 3 Sep 2025 15:43:52 +0800 Subject: [PATCH] feat: yangshi --- .../View/Owner/PermissionManagementView.swift | 61 ++++++++++++------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/wake/View/Owner/PermissionManagementView.swift b/wake/View/Owner/PermissionManagementView.swift index d42fdee..d78a4c9 100644 --- a/wake/View/Owner/PermissionManagementView.swift +++ b/wake/View/Owner/PermissionManagementView.swift @@ -26,19 +26,23 @@ struct PermissionManagementView: View { // 1. 相册权限 PermissionRow( title: "Gallery Permissions", - isEnabled: photoLibraryStatus == .authorized - ) { - requestPhotoLibraryPermission() - } + isEnabled: photoLibraryStatus == .authorized, + action: { + requestPhotoLibraryPermission() + }, + openSettings: openAppSettings + ) .background(Color.white) // 2. 通知权限 PermissionRow( title: "Notification Permissions", - isEnabled: notificationStatus == .authorized - ) { - requestNotificationPermission() - } + isEnabled: notificationStatus == .authorized, + action: { + requestNotificationPermission() + }, + openSettings: openAppSettings + ) .background(Color.white) } .background(Color.white) @@ -122,9 +126,11 @@ struct PermissionManagementView: View { /// 打开应用设置页面 private func openAppSettings() { - if let url = URL(string: UIApplication.openSettingsURLString) { - UIApplication.shared.open(url) + guard let settingsUrl = URL(string: UIApplication.openSettingsURLString), + UIApplication.shared.canOpenURL(settingsUrl) else { + return } + UIApplication.shared.open(settingsUrl) } } @@ -133,6 +139,14 @@ struct PermissionRow: View { let title: String // 权限名称 let isEnabled: Bool // 是否已授权 let action: () -> Void // 点击事件 + let openSettings: () -> Void // 打开设置页面的函数 + + init(title: String, isEnabled: Bool, action: @escaping () -> Void, openSettings: @escaping () -> Void) { + self.title = title + self.isEnabled = isEnabled + self.action = action + self.openSettings = openSettings + } var body: some View { Button(action: action) { @@ -145,18 +159,23 @@ struct PermissionRow: View { Spacer() // 权限开关 - Toggle("", isOn: .constant(isEnabled)) - .labelsHidden() - .tint(Color.themePrimary) - .disabled(true) - .onAppear { - // 使用主题色并确保完全不透明 - let themeColor = UIColor(Color.themePrimary) - UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).onTintColor = themeColor - UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).thumbTintColor = .white - // 确保使用不透明的背景 - UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).backgroundColor = UIColor.clear + Toggle("", isOn: .init( + get: { isEnabled }, + set: { newValue in + // 打开系统设置 + openSettings() } + )) + .labelsHidden() + .tint(Color.themePrimary) + .onAppear { + // 使用主题色并确保完全不透明 + let themeColor = UIColor(Color.themePrimary) + UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).onTintColor = themeColor + UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).thumbTintColor = .white + // 确保使用不透明的背景 + UISwitch.appearance(whenContainedInInstancesOf: [UIView.self]).backgroundColor = UIColor.clear + } } .padding() }