mcpField
I
ios

ios

github.com/alphaonedevDevelopment41 installs
Repository

About ios

ios is a development skill for building native iOS apps with Apple's SDK, for developers working with Swift or Objective-C. It focuses on scene-based lifecycle handling, permissions, and Human Interface Guidelines.

Key features

  1. 01UIKit と SwiftUI による UI 構築
  2. 02シーンベースのライフサイクル管理
  3. 03Info.plist の権限設定
  4. 04HIG に沿ったアクセシビリティとレイアウト
  5. 05Xcode によるビルドとテスト

Use cases

  1. 01ネイティブ iOS アプリの開発
  2. 02カメラや位置情報の権限対応
  3. 03シーン状態の管理
  4. 04iOS 機能のクロスプラットフォーム統合

Install

Copy the command and run it in a terminal.

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

After installing, type/iosin Claude Code to confirm it loaded.

Details

From the project README

ios

Purpose

This skill handles core iOS development tasks using Apple's SDK, focusing on app lifecycle management (scene-based), permissions via NSUsageDescription in Info.plist, and adherence to Human Interface Guidelines (HIG) for UI/UX consistency.

When to Use

  • Building native iOS apps with Swift or Objective-C.
  • Managing app states in scene-based architectures (e.g., iOS 13+).
  • Requesting user permissions like camera or location.
  • Ensuring apps follow HIG for accessibility and design standards.
  • Integrating iOS-specific features in cross-platform projects.

Key Capabilities

  • Access iOS SDK components like UIKit and SwiftUI for UI building.
  • Handle scene-based lifecycle events (e.g., sceneDidBecomeActive).
  • Manage permissions by adding keys to Info.plist (e.g., NSCameraUsageDescription).
  • Enforce HIG through practices like adaptive layouts and voiceover support.
  • Support for Xcode tools and Apple ecosystem integration.

Usage Patterns

  • Start by setting up an Xcode project: Use xcodegen or create via Xcode UI, then add dependencies via Swift Package Manager.
  • For app lifecycle, implement UISceneDelegate methods in your scene manifest.
  • To handle permissions, edit Info.plist directly or via Xcode's property list editor, adding strings for each usage description.
  • Follow HIG by using Auto Layout constraints and testing with Accessibility Inspector.
  • Test apps on simulators or devices using Xcode's build scheme: Select device, then run xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 14' build.

Common Commands/API

  • CLI Commands: Use xcodebuild for building: xcodebuild -workspace MyApp.xcworkspace -scheme MyApp clean build. For archiving: xcodebuild -scheme MyApp -configuration Release archive.
  • API Endpoints: Not applicable for direct endpoints; use iOS APIs like AVCaptureDevice.requestAccess(for: .video) for camera permission.
  • Code Snippets:
    • Request camera permission:
      import AVFoundation
      AVCaptureDevice.requestAccess(for: .video) { granted in
          if granted { print("Access granted") } else { print("Denied") }
      }
      
    • Handle scene lifecycle in SceneDelegate.swift:
      func sceneDidBecomeActive(_ scene: UIScene) {
          // Resume tasks, e.g., start timers
      }
      func sceneWillResignActive(_ scene: UIScene) {
          // Pause tasks
      }
      
    • Add permission to Info.plist (XML format):
      <key>NSCameraUsageDescription</key>
      <string>This app uses the camera for photo capture.</string>
      
  • Config Formats: Use Info.plist for permissions (key-value pairs) or entitlements files for capabilities like iCloud (e.g., <key>com.apple.security.application-groups</key><string>group.com.example</string>).

Integration Notes

  • Integrate with other tools by linking via Xcode: Add pods with CocoaPods (pod install) or packages in Package.swift.
  • For Apple services like App Store Connect, use environment variables for API keys: Set $APPLE_API_KEY and reference in scripts (e.g., xcrun altool --upload-app --file MyApp.ipa --username $APPLE_USERNAME --password $APPLE_API_KEY).
  • When combining with Android (via mobile cluster), use shared configs but handle iOS-specific code in conditional blocks (e.g., #if os(iOS) in Swift).
  • For CI/CD, integrate with GitHub Actions: Use actions/checkout then run xcodebuild in a macOS runner.
  • If using third-party SDKs, add them via Swift Package Manager: Edit Package.swift and resolve with swift package resolve.

Error Handling

  • For permission denials, check status with AVAuthorizationStatus.authorized and prompt users via UIAlertController if needed.
  • Handle build errors from xcodebuild by parsing output: Look for "Command PhaseScriptExecution failed" and fix scripts; use xcodebuild -verbose for details.
  • For lifecycle issues, add logging in delegate methods (e.g., print("Scene error: \(error)") in sceneWillEnterForeground).
  • Common fixes: If Info.plist keys are missing, Xcode will error on build; add them via the project editor. For HIG violations, use Xcode's accessibility audit tool and resolve warnings.
  • Use try-catch for API calls: e.g., do { try AVAudioSession.sharedInstance().setCategory(.playAndRecord) } catch { print(error.localizedDescription) }.

Usage Examples

  • Example 1: Basic App with Camera Permission Create a new Xcode project, add NSCameraUsageDescription to Info.plist, and implement permission request in 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 */ } } }
    }
    

    Build and run with xcodebuild -scheme MyApp build to test on simulator.

  • Example 2: Managing App Lifecycle In a scene-based app, handle state changes in SceneDelegate.swift:

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

    Use xcodebuild test to verify lifecycle events during app testing.

Graph Relationships

  • Related to: mobile (cluster), as it shares mobile development patterns.
  • Connected to: android (skill), via cross-platform mobile integration.
  • Links with: apple-ecosystem (tag), for broader Apple services.
  • Associated with: sdk-tools (implied), for shared SDK usage in iOS context.

Comments

Markdown supported