原生 macOS 引擎 + Broker 登录接通(Phase 3a)
- 引擎 / 鉴权跨平台 in-place(iOS 路径 #if 守卫、逐字不变,仅加 macOS/AppKit 分支):EngineController(import 守卫 + 剪贴板 UIPasteboard→NSPasteboard 上下行两处 + device_type 平台条件)、EngineWebView(UIViewRepresentable→typealias 统一后分 NSViewRepresentable)、Theme(动态色 Color(nsColor:dynamicProvider) 同 RGB)、DeviceNameStore(Host.current().localizedName)、PushRegistry(NSApplication.registerForRemoteNotifications)、Auth/BrokerLogin(presentationAnchor→NSApplication.keyWindow)、Auth/AuthManager(死 import UIKit 守卫)
- BackgroundTaskManager:整文件 #if os(iOS)(BGContinuedProcessingTask 为 API_UNAVAILABLE(macos)、编译级拒绝)+ macOS 同签名 no-op stub,使 EngineController.syncBackgroundTask 调用点无须改动
- device_type 修正(非机械):Mac 原生客户端 boot 注入 device_type=macos(与桌面 Wails 客户端一致,后端 / 各端已识别),不再硬编 ios——否则其他端设备列表图标错、且触发其 isWakeable 的 contains("ios") 误判本 Mac 可推送唤醒
- CommilitiaDropMac target 纳入「引擎 + 登录」最小集:Shared + Sources/Engine + Sources/Auth(除 iOS 专属 LoginView)+ RecordsStore / PushRegistry / LocalNetworkPermission / DeviceNameStore / BackgroundTaskManager + Resources/i18n;依赖 WebRTC;Info.plist 加 cdrop:// 回调 scheme(ASWebAuthenticationSession OAuth 回调)+ 本地网络(NSLocalNetworkUsageDescription / NSBonjourServices _cdrop._tcp)
- Mac 壳接引擎:CommilitiaDropMacApp(@State auth + engine,MacAppRoot 登录门 + 会话激活分桶记录)、MacLoginView(Broker 账户登录,免相机)、MacRootView(背景挂离屏引擎 WebView 保活 + 设备真实 presence 列表 + 设置账号/登出/引擎日志)、MacMenuContent(账号 + 在线设备数)。传输/文件/消息详情暂占位,随 Phase 3b 复用 iOS 视图
- 验证:just mac-build(CommilitiaDropMac.app)+ iOS 模拟器(CommilitiaDrop.app)均 BUILD SUCCEEDED。运行期登录 / 引擎联通待真机自测(Broker OAuth 需账号交互)
This commit is contained in:
@@ -180,6 +180,24 @@ targets:
|
||||
deploymentTarget: "26.0"
|
||||
sources:
|
||||
- path: MacApp
|
||||
- path: Shared
|
||||
# 复用 iOS 引擎与鉴权(跨平台 in-place,UIKit 处 #if 守卫 / AppKit 分支)。仅纳入「引擎 + 登录」
|
||||
# 最小集:Engine 全部 + Auth(除 iOS 专属 LoginView,Mac 另写原生登录)+ 若干单例 + i18n。iOS UI
|
||||
# 树(RootView / MessagesView / ScannerView / AppDelegate 等)暂不纳入,随 Phase 3b 复用。
|
||||
- path: Sources/Engine
|
||||
- path: Sources/Auth
|
||||
excludes:
|
||||
- LoginView.swift
|
||||
- path: Sources/RecordsStore.swift
|
||||
- path: Sources/PushRegistry.swift
|
||||
- path: Sources/LocalNetworkPermission.swift
|
||||
- path: Sources/DeviceNameStore.swift
|
||||
- path: Sources/BackgroundTaskManager.swift
|
||||
- path: Sources/Resources/i18n
|
||||
dependencies:
|
||||
# 原生数据面 libwebrtc(LibWebRtcEngine)。macOS 切片缺子头,构建经 just mac-prep 补齐
|
||||
# (scripts/patch-macos-webrtc-headers.sh)。
|
||||
- package: WebRTC
|
||||
info:
|
||||
path: Support/macOS/App-Info.plist
|
||||
properties:
|
||||
@@ -191,6 +209,15 @@ targets:
|
||||
- zh-Hans
|
||||
- zh-Hant
|
||||
- en
|
||||
# ASWebAuthenticationSession 的 OAuth 回调经 cdrop:// scheme 回到 app(同 iOS)。
|
||||
CFBundleURLTypes:
|
||||
- CFBundleURLName: net.commilitia.Commilitia-Drop
|
||||
CFBundleURLSchemes:
|
||||
- cdrop
|
||||
# 本地网络:libwebrtc 收集 host 候选、同内网直连须本地网络权限(macOS 15+ 亦弹窗)。
|
||||
NSLocalNetworkUsageDescription: "Commilitia Drop 需要访问本地网络以发现同内网设备并建立直连传输。"
|
||||
NSBonjourServices:
|
||||
- "_cdrop._tcp"
|
||||
settings:
|
||||
base:
|
||||
PRODUCT_BUNDLE_IDENTIFIER: net.commilitia.Commilitia-Drop
|
||||
|
||||
Reference in New Issue
Block a user