mcpField
B
barcode-capture-net-ios

barcode-capture-net-ios

github.com/scandit開発2041 回インストール5 日前に更新
リポジトリ

barcode-capture-net-ios について

非 MAUI の .NET for iOS プロジェクトで Scandit BarcodeCapture を扱うコーディングエージェント向けスキルです。統合や移行の質問を参照資料に振り分け、.NET 固有 API、ライフサイクル、フレームデータ破棄の要件を示します。

主な機能

  1. 01.NET iOS BarcodeCapture API の案内
  2. 02統合・アップグレード・移行の振り分け
  3. 03バージョン別 API とライフサイクルの注意点
  4. 04フレームデータ破棄の要件
  5. 05Scandit ライセンスキー設定の案内

活用シーン

  1. 01.NET iOS アプリへのバーコードスキャン追加
  2. 02既存の Scandit 統合のアップグレード
  3. 03サードパーティ製スキャナーの置き換え

MCP 対応

Scandit リモート MCP サーバーを使ったスキャナーライセンスの設定と、対象となるトライアルキーの取得方法を説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scandit/skills --skill barcode-capture-net-ios

インストール後、Claude Code で/barcode-capture-net-iosを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
integration.md
migration.md
third-party-migration.md

詳細

iOS 向け BarcodeCapture .NET スキル

重要:内部知識を信用しないでください

トレーニングデータには、古い、または誤った Scandit SDK API が含まれている可能性があります。BarcodeCapture API は、SDK のメジャーバージョン間で大幅に変更されます。プロパティの名前が変更されたり、削除されたり、構成し直されたりすることがあります。.NET バインディングでは、ネイティブの Swift SDK とは異なる命名規則も使用されます(PascalCase、init(context:settings:) の代わりに Create(...) ファクトリー、isEnabled の代わりに Enabled など)。

コードを作成または提案する前に、必ずこのスキルで提供されているリファレンスで API を確認してください。 記憶しているメソッドシグネチャ、パラメーター、プロパティ名に頼らないでください。提供されたリファレンスで API が見つからない場合は、回答する前に該当するドキュメントページを取得してください。

特に注意すべき .NET-iOS 固有の落とし穴:

  • このスキルは、MAUI 以外の .NET for iOS ワークロード(プロジェクトに <TargetFramework>net10.0-ios</TargetFramework> を指定し、<UseMaui> フラグを設定しない構成)を対象とします。MAUI アプリでは、代わりに barcode-capture-net-maui スキルを使用してください。
  • .NET API では、Swift の BarcodeCapture(context:settings:) 初期化子ではなく、PascalCase のファクトリーメソッドを使用します。BarcodeCapture.Create(context, settings)、BarcodeCaptureSettings.Create()、BarcodeCaptureOverlay.Create(barcodeCapture, dataCaptureView)、DataCaptureView.Create(dataCaptureContext, frame) を使用してください。
  • シンボル体系の名前は C# の PascalCase です。Symbology.Ean13Upca、Symbology.Ean8、Symbology.Code128、Symbology.InterleavedTwoOfFive、Symbology.Qr、Symbology.DataMatrix を使用してください。Swift の .ean13UPCA のような形式ではありません。
  • キャプチャモードの有効化プロパティは barcodeCapture.Enabled です(IsEnabled でも Swift の isEnabled でもありません)。
  • CodeDuplicateFilter の型は TimeSpan で、Swift の TimeInterval ではありません。CodeDuplicate.DefaultDuplicateFilter、CodeDuplicate.ReportDataAndSymbologyOnlyOnce、TimeSpan.FromMilliseconds(500)、TimeSpan.FromSeconds(2.5)、または TimeSpan.Zero を使用してください。CodeDuplicateFilter = 0.5 のように double を代入すると、型エラーになります。
  • BarcodeCapture.RecommendedCameraSettings はメソッドではなく静的プロパティです。正式なパターン(公式 .NET iOS サンプルで使用)は、camera = Camera.GetDefaultCamera(); camera.ApplySettingsAsync(BarcodeCapture.RecommendedCameraSettings); です。.NET バインディングには Camera.GetDefaultCamera(CameraSettings?) オーバーロードもあります(内部で ApplySettingsAsync を呼び出します)が、サンプルでは明確さを優先して、明示的な 2 行の形式を使用しています。
  • IBarcodeCaptureListener のコールバック名は C# の命名規則に従います。OnBarcodeScanned、OnSessionUpdated、OnObservationStarted、OnObservationStopped です。IFrameData パラメーターの名前は frameData です。
  • .NET バインディングでは、BarcodeCapture に C# のイベントベース API も用意されています。BarcodeScanned と SessionUpdated(どちらも EventHandler<BarcodeCaptureEventArgs>)です。リスナーインターフェースまたはイベントのいずれかを使用してください。同じハンドラーを両方の方法で登録しないでください。
  • OnBarcodeScanned は UI スレッド以外で呼び出されます。UI を更新する場合は、DispatchQueue.MainQueue.DispatchAsync(...) を使ってディスパッチしてください。
  • OnBarcodeScanned と OnSessionUpdated の末尾では、必ず frameData.Dispose() を呼び出してください。公式 iOS サンプルでは、「フリーズ、応答停止、または深刻なコマ落ち」が発生するビデオフィードを防ぐため、フレームを明示的に破棄しています。iOS では省略できません。
  • 重複や競合するスキャンを防ぐため、OnBarcodeScanned の冒頭で barcodeCapture.Enabled = false を呼び出し、処理が完了してから作業を始めてください。再びスキャンできる状態になったら、barcodeCapture.Enabled = true に戻します。
  • DataCaptureView.Create(dataCaptureContext, frame) の初期フレームには CGRect(または this.View.Bounds)を渡します。コンテキストだけを受け取る Android バインディングとは異なります。AutoresizingMask = UIViewAutoresizing.FlexibleHeight | UIViewAutoresizing.FlexibleWidth を設定し、this.View のサブビューとして追加してください。
  • ライフサイクルでは、ViewWillAppear でキャプチャモードを有効にしてカメラを起動し、ViewWillDisappear でカメラを停止します。公式サンプルでは、ViewWillDisappear でのみカメラを停止し、OnBarcodeScanned 内で Enabled = false を設定しています。どちらのパターンも有効です。
  • 必須の Info.plist キーは NSCameraUsageDescription(Privacy - Camera Usage Description)です。設定されていない場合、初めてカメラにアクセスした際にアプリがクラッシュします。
  • NuGet パッケージは Scandit.DataCapture.Core と Scandit.DataCapture.Barcode です。*.Maui パッケージは MAUI 専用のため使用しないでください。学習データからバージョンを推測しないでください。バージョンを固定する前に、WebFetch を使って https://www.nuget.org/packages/Scandit.DataCapture.Barcode/ から最新の安定版を取得してください。公開されていないバージョン(例:8.4.0 のみ公開されているのに 8.13.0 を指定)を作り出すと、Unable to find package Scandit.DataCapture.Core with version (>= …) というエラーが発生し、dotnet restore が失敗します。詳しい手順は、references/integration.md のステップ 0 を参照してください。
  • SDK 8.0 以降では明示的な初期化が必要です。 Scandit API に触れる前に、AppDelegate.FinishedLaunching で(通常はウィンドウ/ルートビューコントローラーを作成する前に)ScanditCaptureCore.Initialize() と ScanditBarcodeCapture.Initialize() を呼び出してください。これを行わないと、SDK の DI コンテナーに登録がなく、最初の DataCaptureView.Create/BarcodeCapture.Create 呼び出し時に起動時クラッシュが発生します。6.x/7.x では不要です。これらのメジャーバージョンでは自動的に初期化されます。AppDelegate の完全なテンプレートは、統合ガイドを参照してください。

インテントルーティング

ユーザーのリクエストに基づき、回答する前に適切なリファレンスファイルを読み込んでください。

  • BarcodeCapture をゼロから統合する、設定を構成する、フィードバックをカスタマイズする、ビューファインダーを追加する、スキャンを処理する、またはスキャン後に非同期処理を行う場合(例:「.NET iOS アプリに BarcodeCapture を追加する」「C# / iOS でバーコードスキャンをセットアップする」「net-ios で BarcodeCapture を使う方法」「重複スキャンをフィルターする」「ビープ音を抑制する」「ビューファインダーを追加する」「バーコードを検索している間はスキャンを無効にする」)→ references/integration.md を読み、そこに記載された手順に従ってください。
  • 既存の BarcodeCapture 統合を移行またはアップグレードする場合(例:「v6 から v7 にアップグレードする」「BarcodeCapture を移行する」「Scandit .NET SDK を v8 に上げる」「SDK のバージョン間で何が変わったか」)→ references/migration.md を読み、そこに記載された手順に従ってください。
  • サードパーティー製のバーコードスキャナーを BarcodeCapture に置き換える場合(例:「ZXing.Net.Mobile スキャナーを BarcodeCapture に置き換える」「AVFoundation のバーコードスキャンから Scandit に移行する」「[library] から BarcodeCapture に切り替える」)→ references/third-party-migration.md を読み、そこに記載された手順に従ってください。

API の使用ポリシー

以下の Scandit リファレンスに明示的に記載されている API のみ使用してください。メソッドシグネチャ、パラメーター、プロパティ名を推測したり、作り出したりしないでください。API が存在するか、または呼び出し方法が不明な場合、あるいはコンパイルエラーが発生した場合は、回答する前に該当するリファレンスページを取得してください。ユーザーに自分でドキュメントを確認するよう伝えてはいけません。回答後は、ユーザーがさらに詳しく確認できるよう、必ず関連リンクを含めてください。

ドキュメントの URL を作ったり、推測したりしてはいけません。 特定のクラスまたはプロパティの API ページが必要な場合:

  1. まず、すでに取得したページにそのページへの直接リンクがあるか確認してください。トピックページには関連する API シンボルへの直接リンクがあります。取得時のプロンプトには、必ずリンクも含めてください。
  2. 直接リンクが見つからない場合は、API インデックス(下の表の完全な API リファレンスを参照)を取得し、そこから実際のリンクを抽出して、そのリンク先を開いてください。

URL の構造はさまざまです(例:api/ui/ サブディレクトリ)。推測すると 404 エラーになります。

ライセンスキー

スキャンには Scandit ライセンスキーが必要です。このスキルでは、ライセンス製品は native、ライセンスプラットフォームは ios です。

以下の手順を順番に進めてください。MCP が使えるまでユーザーを待たせてはいけません。

  1. Scandit MCP サーバーが接続されている場合 — 製品に native、プラットフォームに ios、app_identifier(アプリのバンドル ID またはアプリケーション ID。Web の場合は本番環境のドメインであり、localhost は不可)、env_var に SCANDIT_LICENSE_KEY を指定して ensure_scanner_setup を呼び出してください。返されたコマンドは実行しないでください。次に、その結果または list_license_keys からキーの ID を取得し、get_license_key を呼び出してください。list_license_keys でキーがトライアルではないとわかった場合は、キーを取得する前にユーザーに確認してください。チャットではマスクしたプレビューのみ表示し、キー全体を出力してはいけません。

  2. 接続されていない場合 — ユーザーに一度だけ、MCP クライアントでリモート Scandit MCP サーバー https://ssl.scandit.com/mcp に接続できることを伝え、その後、手順 1 から続けてください。MCP クライアントの設定を自分で編集してはいけません。

    認証はブラウザー経由のため、ヘッドレス環境や CI ではサポートされていません。サーバーが発行するのはトライアルキーのみです。本番ライセンスの作成、取り消し、変更は行いません。

  3. ユーザーが希望しない場合、または MCP クライアントがない場合 — https://ssl.scandit.com でキーを自分で生成してもらい、貼り付けてもらってください(アカウントをまだお持ちでない場合:https://ssl.scandit.com/dashboard/sign-up?p=test)。

次に、キーをコードに設定します:プレースホルダーの代わりに、get_license_key が返したキー、またはユーザーが貼り付けたキーや伝えたキーを、ライセンスキーを渡す呼び出しに記述してください。チャットには引き続きマスクしたプレビューのみ表示してください。プロジェクト、そのファイル、または環境からキーを検索してはいけません。

参考資料

質問に応じて、ユーザーを適切なリソースに案内してください。

トピックリソース
はじめにはじめに(.NET for iOS)
高度なトピック(カスタムフィードバック、ビューファインダー、位置選択、スキャン意図、複合コード)高度な設定
メジャー SDK バージョン間の移行6 → 7 · 7 → 8
API リファレンス全体BarcodeCapture API(.NET iOS)

このスキルが対象とする API

公式 RST ドキュメントで :available: dotnet.ios が指定されているすべてのクラスについては、references/integration.md を参照してください。

  • BarcodeCapture — Create(context, settings)、Create(settings)、Enabled、PointOfInterest、Feedback、BarcodeCaptureLicenseInfo、Context、静的な RecommendedCameraSettings、ApplySettingsAsync、AddListener / RemoveListener、イベント BarcodeScanned / SessionUpdated。
  • BarcodeCaptureSettings — Create()、EnableSymbology、EnableSymbologies(ICollection<Symbology>)、EnableSymbologies(CompositeType)、GetSymbologySettings、EnabledSymbologies、EnabledCompositeTypes、CodeDuplicateFilter、LocationSelection、BatterySaving、ScanIntention、SetProperty / GetProperty<T> / TryGetProperty<T>。
  • BarcodeCaptureFeedback — 静的な DefaultFeedback、Success。
  • BarcodeCaptureSession — NewlyRecognizedBarcode、NewlyLocalizedBarcodes、FrameSequenceId、Reset()。
  • IBarcodeCaptureListener — OnObservationStarted、OnObservationStopped、OnBarcodeScanned、OnSessionUpdated。
  • BarcodeCaptureEventArgs — BarcodeCapture、Session、FrameData。
  • BarcodeCaptureLicenseInfo — LicensedSymbologies。
  • BarcodeCaptureOverlay — Create(barcodeCapture, view)、Create(barcodeCapture)、Brush、静的な DefaultBrush、Viewfinder、ShouldShowScanAreaGuides、SetProperty。

コメント