文件
AUSleeping-IOS/AreYouSleeping/Views/AgreementView.swift
T

81 行
3.6 KiB
Swift

import SwiftUI
struct AgreementView: View {
@EnvironmentObject var store: Store
var body: some View {
VStack(spacing: 0) {
ScrollView {
VStack(alignment: .leading, spacing: 16) {
Text("用户协议与隐私说明")
.font(.title).bold()
Text("欢迎使用「睡了吗」。\n\n本协议说明应用功能与数据使用方式,请仔细阅读。")
.font(.body).foregroundColor(.secondary)
section("一、应用功能") {
Text("1. 睡眠监督:在您设定的就寝时段,提醒您按时入睡。\n(注:iOS 系统限制,本应用无法直接屏蔽其他应用,仅提供通知提醒。)\n2. 作息记录:记录您的入睡与起床时间,生成睡眠统计。\n3. 控制码功能(见第二条)。")
}
section("二、控制码功能") {
Text("本应用会为您的手机生成一个独一无二的控制码。\n\n• 控制码绑定本机,卸载重装后才会变更。\n• 您可以将控制码分享给朋友。朋友输入您的控制码后可以远程设置您的就寝/起床时间、提醒您入睡/起床。\n• 您可以随时在设置中停止分享。\n• 请仅将控制码分享给您信任的人。")
}
section("三、数据与隐私") {
Text("• 您的作息设置、睡眠记录会同步到服务器,以便朋友通过控制码查看和远程操作。\n• 服务器仅存储与功能相关的必要数据,不会出售或分享给第三方。\n• 您可以在应用设置中随时停止监督服务,断开与服务器同步。")
}
section("四、所需权限") {
Text("• 通知:发送就寝提醒与朋友远程消息\n• 网络访问:与服务器同步作息数据、接收朋友远程指令")
}
Spacer().frame(height: 16)
VStack(spacing: 4) {
Text("解释权归 JGZ_YES 所有")
.font(.footnote).foregroundColor(.secondary)
Text("(c) 2026 JGZ_YES")
.font(.footnote).foregroundColor(.secondary)
}
.frame(maxWidth: .infinity)
}
.padding(24)
}
// 底部按钮
HStack(spacing: 12) {
Button("不同意") {
exit(0)
}
.buttonStyle(.bordered)
.tint(.secondary)
.controlSize(.large)
Button("同意并继续") {
store.agreed = true
store.ensureControlCode()
store.save()
Task {
_ = await ApiClient.bind(code: store.controlCode, nickname: store.nickname)
}
}
.buttonStyle(.borderedProminent)
.tint(.blue)
.controlSize(.large)
}
.padding(.horizontal, 16)
.padding(.vertical, 12)
.background(.regularMaterial)
}
}
@ViewBuilder
private func section(_ title: String, @ViewBuilder content: () -> some View) -> some View {
VStack(alignment: .leading, spacing: 8) {
Text(title).font(.headline)
content().font(.subheadline).foregroundColor(.secondary)
.lineSpacing(4)
}
}
}