29e5c0a739
- 命名去缩写:xcodegen 项目 + 四 target CDrop*→CommilitiaDrop*(CommilitiaDrop / …Share / …Widgets / …Tests);3 个 widget/control kind net.commilitia.cdrop.*→net.commilitia.Commilitia-Drop.*(旧装控件将成孤儿,需在设备重加);Tests @testable import CommilitiaDrop。刻意不动线协议 / 身份标识——bundle ID 家族、URL scheme cdrop://、Bonjour _cdrop._tcp、keychain service、DataChannel cdrop-file、entitlements 文件名——以免破跨端互通或丢会话 - 新增 macOS app target CommilitiaDropMac(platform macOS / deploymentTarget 26.0 / ARCHS arm64 / 与 iOS 同 bundle net.commilitia.Commilitia-Drop,同 App Store 记录 + 同 App Group):sources 仅 MacApp/,Info.plist 经 xcodegen 生成,本地 ad-hoc 免账号编译 - Mac 壳 MacApp/(Allman,#if os(macOS) 守卫,独立 @main 不与 iOS CDropApp 冲突):CommilitiaDropMacApp(@main + 单窗口 Window + windowResizability contentMinSize + 去 ⌘N + MenuBarExtra window 风格)、MacRootView(NavigationSplitView 侧栏五区骨架 传输/文件/消息/设备/设置 + 占位详情 MacPlaceholder + 品牌头)、MacMenuContent(菜单栏占位) - Support/macOS/AppMac.entitlements:App Group group.net.commilitia.Commilitia-Drop 预置待用;macOS 下 App Group 属受限能力须 provisioning profile,故脚手架阶段 project.yml 暂不引用,待 Phase 6 Developer ID 签名再挂 - 根 Justfile:ios-sim-build / ios-device 跟随重命名(项目 / scheme / .app 路径);新增 mac-build(xcodegen + xcodebuild -sdk macosx,本地 ad-hoc) - 验证:CommilitiaDropMac.app 与 CommilitiaDrop.app(iOS 模拟器)均 BUILD SUCCEEDED;WebRTC 走 -clonedSourcePackagesDirPath 复用已缓存 xcframework
48 lines
1.4 KiB
Swift
48 lines
1.4 KiB
Swift
import AppIntents
|
||
import SwiftUI
|
||
import WidgetKit
|
||
|
||
// 控制中心两控件(iOS 18+ ControlWidget,PLAN 决策 C / §I4):上传 / 拉取云剪贴板,零推送、
|
||
// 用户主动触发。控件标签经 t() 跟随设备语言(i18n 单一真源,随扩展 bundle 一并打包)。另含主屏交互式
|
||
// 小组件 CloudClipboardWidget(#6):同样的上传 / 拉取,可放主屏 / 锁屏。
|
||
@main
|
||
struct CDropWidgetBundle: WidgetBundle
|
||
{
|
||
var body: some Widget
|
||
{
|
||
UploadClipboardControl()
|
||
PullClipboardControl()
|
||
CloudClipboardWidget()
|
||
}
|
||
}
|
||
|
||
struct UploadClipboardControl: ControlWidget
|
||
{
|
||
var body: some ControlWidgetConfiguration
|
||
{
|
||
StaticControlConfiguration(kind: "net.commilitia.Commilitia-Drop.control.upload")
|
||
{
|
||
ControlWidgetButton(action: UploadClipboardIntent())
|
||
{
|
||
Label(t("ios.control.upload"), systemImage: "square.and.arrow.up")
|
||
}
|
||
}
|
||
.displayName("上传剪贴板")
|
||
}
|
||
}
|
||
|
||
struct PullClipboardControl: ControlWidget
|
||
{
|
||
var body: some ControlWidgetConfiguration
|
||
{
|
||
StaticControlConfiguration(kind: "net.commilitia.Commilitia-Drop.control.pull")
|
||
{
|
||
ControlWidgetButton(action: PullClipboardIntent())
|
||
{
|
||
Label(t("ios.control.pull"), systemImage: "square.and.arrow.down")
|
||
}
|
||
}
|
||
.displayName("拉取剪贴板")
|
||
}
|
||
}
|