mcpField
I
ios

ios

github.com/alphaonedev开发41 次安装
代码仓库

关于 ios

ios 是使用 Apple SDK 构建原生 iOS 应用的开发技能,适用于 Swift 或 Objective-C 开发者。重点包括基于场景的生命周期管理、权限配置和遵循 Human Interface Guidelines。

主要功能

  1. 01使用 UIKit 和 SwiftUI 构建界面
  2. 02基于场景的生命周期管理
  3. 03在 Info.plist 配置权限
  4. 04遵循 HIG 的无障碍与布局实践
  5. 05使用 Xcode 构建和测试

适用场景

  1. 01开发原生 iOS 应用
  2. 02处理相机或位置权限
  3. 03管理场景状态
  4. 04在跨平台项目中集成 iOS 功能

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alphaonedev/openclaw-graph --skill ios

安装后在 Claude Code 中输入/ios确认已加载。

详细介绍

iOS

用途

此技能使用 Apple 的 SDK 处理 iOS 开发的核心任务,重点关注应用生命周期管理(基于场景)、通过 Info.plist 中的 NSUsageDescription 请求权限,以及遵循人机界面指南(HIG)以保持 UI/UX 一致性。

适用场景

  • 使用 Swift 或 Objective-C 构建原生 iOS 应用。
  • 在基于场景的架构(例如 iOS 13+)中管理应用状态。
  • 请求相机或位置等用户权限。
  • 确保应用遵循 HIG 的无障碍和设计标准。
  • 在跨平台项目中集成 iOS 专属功能。

核心能力

  • 使用 UIKit 和 SwiftUI 等 iOS SDK 组件构建 UI。
  • 处理基于场景的生命周期事件(例如 sceneDidBecomeActive)。
  • 通过向 Info.plist 添加键(例如 NSCameraUsageDescription)来管理权限。
  • 通过自适应布局和 VoiceOver 支持等实践来遵循 HIG。
  • 支持 Xcode 工具和 Apple 生态系统集成。

使用模式

  • 首先设置 Xcode 项目:使用 xcodegen 或通过 Xcode UI 创建项目,然后使用 Swift Package Manager 添加依赖项。
  • 对于应用生命周期,在场景清单中实现 UISceneDelegate 方法。
  • 要处理权限,请直接编辑 Info.plist,或使用 Xcode 的属性列表编辑器,为每种用途说明添加字符串。
  • 遵循 HIG:使用 Auto Layout 约束,并通过 Accessibility Inspector 进行测试。
  • 使用 Xcode 的构建方案在模拟器或设备上测试应用:选择设备,然后运行 xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' build。

常用命令/API

  • 命令行命令:使用 xcodebuild 进行构建:xcodebuild -workspace MyApp.xcworkspace -scheme MyApp clean build。归档时使用:xcodebuild -scheme MyApp -configuration Release archive。
  • API 端点:不适用于直接端点;使用 iOS API,例如 AVCaptureDevice.requestAccess(for: .video) 请求相机权限。
  • 代码片段:
    • 请求相机权限:
      import AVFoundation
      AVCaptureDevice.requestAccess(for: .video) { granted in
          if granted { print("Access granted") } else { print("Denied") }
      }
      
    • 在 SceneDelegate.swift 中处理场景生命周期:
      func sceneDidBecomeActive(_ scene: UIScene) {
          // Resume tasks, e.g., start timers
      }
      func sceneWillResignActive(_ scene: UIScene) {
          // Pause tasks
      }
      
    • 向 Info.plist 添加权限(XML 格式):
      <key>NSCameraUsageDescription</key>
      <string>This app uses the camera for photo capture.</string>
      
  • 配置格式:使用 Info.plist 设置权限(键值对),或使用 entitlements 文件配置 iCloud 等功能(例如 <key>com.apple.security.application-groups</key><string>group.com.example</string>)。

集成说明

  • 通过 Xcode 与其他工具集成:使用 CocoaPods 添加 pod(pod install),或在 Package.swift 中添加包。
  • 对于 App Store Connect 等 Apple 服务,使用环境变量存储 API 密钥:设置 $APPLE_API_KEY,并在脚本中引用(例如 xcrun altool --upload-app --file MyApp.ipa --username $APPLE_USERNAME --password $APPLE_API_KEY)。
  • 与 Android(通过 mobile cluster)结合使用时,使用共享配置,但在条件代码块中处理 iOS 专属代码(例如 Swift 中的 #if os(iOS))。
  • 对于 CI/CD,使用 GitHub Actions 集成:先使用 actions/checkout,然后在 macOS runner 中运行 xcodebuild。
  • 如果使用第三方 SDK,请通过 Swift Package Manager 添加:编辑 Package.swift,然后使用 swift package resolve 解析依赖项。

错误处理

  • 对于权限拒绝,请使用 AVAuthorizationStatus.authorized 检查状态,并在需要时通过 UIAlertController 提示用户。
  • 通过解析输出处理 xcodebuild 的构建错误:查找 "Command PhaseScriptExecution failed" 并修复脚本;使用 xcodebuild -verbose 获取详细信息。
  • 对于生命周期问题,在代理方法中添加日志记录(例如,在 sceneWillEnterForeground 中使用 print("Scene error: \(error)"))。
  • 常见修复方法:如果缺少 Info.plist 键,Xcode 会在构建时出错;请通过项目编辑器添加这些键。对于违反 HIG 的情况,请使用 Xcode 的辅助功能审核工具并解决警告。
  • 对 API 调用使用 try-catch:例如,do { try AVAudioSession.sharedInstance().setCategory(.playAndRecord) } catch { print(error.localizedDescription) }。

用法示例

  • 示例 1:具有相机权限的基础应用 创建新的 Xcode 项目,将 NSCameraUsageDescription 添加到 Info.plist,并在 ViewController.swift 中实现权限请求:

    import UIKit
    import AVFoundation
    class ViewController: UIViewController {
        override func viewDidLoad() { super.viewDidLoad(); requestCamera() }
        func requestCamera() { AVCaptureDevice.requestAccess(for: .video) { granted in if granted { /* Proceed */ } } }
    }
    

    使用 xcodebuild -scheme MyApp build 构建并运行,以在模拟器上测试。

  • 示例 2:管理应用生命周期 在基于场景的应用中,于 SceneDelegate.swift 中处理状态变化:

    import UIKit
    class SceneDelegate: UIResponder, UIWindowSceneDelegate {
        func sceneDidBecomeActive(_ scene: UIScene) { print("App active") }
        func sceneWillEnterForeground(_ scene: UIScene) { /* Reload data */ }
    }
    

    使用 xcodebuild test 在应用测试期间验证生命周期事件。

图关系

  • 相关:mobile(集群),因为它共享移动开发模式。
  • 连接:android(技能),通过跨平台移动集成。
  • 链接:apple-ecosystem(标签),用于更广泛的 Apple 服务。
  • 关联:sdk-tools(隐含),用于 iOS 场景中的共享 SDK 使用。

评论

支持 Markdown