name: CDrop
options:
  bundleIdPrefix: net.commilitia
  deploymentTarget:
    iOS: "26.0"
  createIntermediateGroups: true
settings:
  base:
    SWIFT_VERSION: "5.0"
    # 模拟器用 ad-hoc 签名（身份 "-"，无需 Apple 账号），使 App Group / Push 等 entitlement 在
    # 模拟器实际生效（否则共享容器不创建、远程通知注册失败）。真机签名须付费 ADP 配
    # team / provisioning profile（账号门控，见 REALDEVICE.md）。
    CODE_SIGN_IDENTITY: "-"
    CODE_SIGNING_REQUIRED: "NO"
    CODE_SIGNING_ALLOWED: "YES"
targets:
  CDrop:
    type: application
    platform: iOS
    deploymentTarget: "26.0"
    sources:
      - path: Sources
      - path: Shared
    dependencies:
      - target: CDropShare
        embed: true
      - target: CDropWidgets
        embed: true
    info:
      path: Sources/Info.plist
      properties:
        CFBundleDisplayName: Commilitia Drop
        # cdrop:// URL scheme：Share Extension 交接后经 cdrop://share 深链唤起主 app 选设备发送。
        CFBundleURLTypes:
          - CFBundleURLName: net.commilitia.Commilitia-Drop
            CFBundleURLSchemes:
              - cdrop
        # 声明支持的语言，使系统控件（EditButton 的「编辑」、滑动删除的「删除」等系统字符
        # 串）跟随设备语言本地化，而非永远英文。开发区域设简体。
        CFBundleDevelopmentRegion: zh-Hans
        CFBundleLocalizations:
          - zh-Hans
          - zh-Hant
          - en
        UILaunchScreen: {}
        # 后台续传：BGContinuedProcessingTask 的通配标识符须在此声明，系统才允许注册 / 提交
        # （见 BackgroundTaskManager）。默认资源（CPU + 网络）无需额外 entitlement。
        BGTaskSchedulerPermittedIdentifiers:
          - "net.commilitia.Commilitia-Drop.transfer.*"
        # 远程通知后台模式：APNs 推送送达 / 后台处理（如「收到文件」通知）。
        UIBackgroundModes:
          - remote-notification
        # 让接收文件落地的 Documents 目录在 Files app「我的 iPhone / Commilitia Drop」下
        # 可见、可就地打开（收到的文件有处可开、可被其他 app 取用）。
        UIFileSharingEnabled: true
        LSSupportsOpeningDocumentsInPlace: true
        NSAppTransportSecurity:
          NSAllowsLocalNetworking: true
        NSLocalNetworkUsageDescription: "Commilitia Drop 需要访问本地网络以发现同内网设备并建立直连传输。"
        NSBonjourServices:
          - "_cdrop._tcp"
        NSCameraUsageDescription: "Commilitia Drop 使用相机扫描二维码登录新设备。"
        # 图库选择：从相册选取图片 / 视频发送（PhotosPicker，见 RootView #14）。
        NSPhotoLibraryUsageDescription: "Commilitia Drop 需要访问照片库，以便从相册选取图片或视频发送给其他设备。"
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: net.commilitia.Commilitia-Drop
        TARGETED_DEVICE_FAMILY: "1,2"
        ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
        # APNs 推送的 aps-environment entitlement（见 CDrop.entitlements）。模拟器取令牌可用；
        # 真机签名须付费 ADP 开 Push 能力（账号门控）。
        CODE_SIGN_ENTITLEMENTS: CDrop.entitlements
  # Share Extension：抓分享文件 → App Group 收件箱 → 深链主 app 选设备发送（只交接、不跑引擎，
  # 见 PLAN §I5）。只编 ShareViewController + 共享的 AppGroup，绝不拉主 app Sources（避超 120MB）。
  CDropShare:
    type: app-extension
    platform: iOS
    deploymentTarget: "26.0"
    sources:
      - path: Share
      - path: Shared
    info:
      path: Share/Info.plist
      properties:
        CFBundleDisplayName: Commilitia Drop
        NSExtension:
          NSExtensionPointIdentifier: com.apple.share-services
          NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).ShareViewController
          NSExtensionAttributes:
            NSExtensionActivationRule:
              NSExtensionActivationSupportsFileWithMaxCount: 20
              NSExtensionActivationSupportsImageWithMaxCount: 20
              NSExtensionActivationSupportsMovieWithMaxCount: 20
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: net.commilitia.Commilitia-Drop.share
        TARGETED_DEVICE_FAMILY: "1,2"
        CODE_SIGN_ENTITLEMENTS: Share/CDropShare.entitlements
  # 控制中心剪贴板两控件（WidgetKit ControlWidget，iOS 18+，PLAN §I4）。纯原生 REST + 控件专用
  # 设备会话（不跑引擎）。i18n JSON 一并打包使控件标签随设备语言（t() 经 no-subdir 回退读 bundle）。
  CDropWidgets:
    type: app-extension
    platform: iOS
    deploymentTarget: "26.0"
    sources:
      - path: Widgets
      - path: Shared
      - path: Sources/Resources/i18n
    info:
      path: Widgets/Info.plist
      properties:
        CFBundleDisplayName: Commilitia Drop
        NSExtension:
          NSExtensionPointIdentifier: com.apple.widgetkit-extension
    settings:
      base:
        PRODUCT_BUNDLE_IDENTIFIER: net.commilitia.Commilitia-Drop.widgets
        TARGETED_DEVICE_FAMILY: "1,2"
        CODE_SIGN_ENTITLEMENTS: Widgets/CDropWidgets.entitlements
schemes:
  CDrop:
    build:
      targets:
        CDrop: all
    run:
      config: Debug
