mcpField
M
matrixscan-ar-net-ios

matrixscan-ar-net-ios

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

matrixscan-ar-net-ios について

非MAUIの.NET for iOSでScandit MatrixScan ARを扱うコーディングエージェント向けスキルです。付属のリファレンスでAPIを確認し、コンパイル時や実行時の問題につながる推測を避ける方針です。

主な機能

  1. 01.NET for iOSの導入ガイド
  2. 02APIの注意点とライフサイクル情報
  3. 03導入・移行リファレンスへの振り分け
  4. 04APIとドキュメントリンクの確認方針

活用シーン

  1. 01.NET for iOSアプリへのBarcodeAr導入
  2. 02バーコードのハイライトや注釈のカスタマイズ
  3. 03既存の統合をSDK 8.xへ移行

インストール

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

$npx skills add https://github.com/scandit/skills --skill matrixscan-ar-net-ios

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

同梱ファイルreferences/integration.mdreferences/migration.md

詳細

iOS 向け MatrixScan AR .NET スキル

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

学習データに含まれている Scandit SDK API は、古くなっていたり、誤っていたりする可能性があります。BarcodeAr API は比較的新しく(dotnet.ios 7.2 で導入)、Swift ネイティブ SDK とはいくつかの点で異なります。プロバイダーはデリゲートベースではなく非同期/Taskベースであり、ハイライトとアノテーションのコンストラクターが受け取るのは**Barcode のみ**(context 引数なし)で、リスナーインターフェイスのメソッドは1 つのみです。また、BarcodeArView は UIView のサブクラスではなく IDisposable で、.NET バインディングでは PascalCase を使用し、TimeInterval の代わりに TimeSpan を使用します。

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

.NET-iOS 固有の注意点:

  • このスキルの対象は、MAUI を使用しない .NET for iOS ワークロードです(プロジェクトに <TargetFramework>net10.0-ios</TargetFramework> または同様の設定があり、<UseMaui> フラグがありません)。MAUI アプリでは、MAUI 向けのスキルを使用してください。BarcodeArView のホスト方法が大きく異なります(XAML/Microsoft.Maui.Controls.View)。
  • BarcodeAr はコンテキストを受け取る new コンストラクターを使用します:new BarcodeAr(dataCaptureContext, settings)。.NET に BarcodeAr.Create(...)/BarcodeAr.ForDataCaptureContext(...) ファクトリーはありません。BarcodeArSettings も通常の new を使用します(DataCaptureContext.ForLicenseKey(key) は引き続きファクトリー形式です。これは Core にあります)。
  • BarcodeArView.Create(parentView, barcodeAr, dataCaptureContext, viewSettings, cameraSettings) はファクトリーです(BarcodeAr 自体とは異なります)。cameraSettings 引数は null 許容です。BarcodeAr.RecommendedCameraSettings を使用するには null を渡してください。parentView は UIView です(通常はホストするビューコントローラーの this.View、または専用のコンテナー UIView アウトレット)。BarcodeArView は自動的に parentView にアタッチされるため、this.View.AddSubview(...) を呼び出さないでください。
  • BarcodeArView は UIView のサブクラスではなく、IDisposable です。 クラスには、必要に応じて(iOS では global using View = UIKit.UIView; により View が UIView にエイリアスされるため、ネイティブ相互運用などで)UIKit.UIView に変換する public static implicit operator View(BarcodeArView view) が宣言されていますが、自分でビュー階層に追加する必要はありません。Create ファクトリーが自動的に parentView にアタッチします。
  • iOS の .NET BarcodeArView に OnResume()/OnPause() はありません。 これらのメソッドは(バインディング内の #if __ANDROID__ でガードされている)Android 専用です。iOS では、公式の MatrixScanARSimpleSample と同様に、ライフサイクルの ViewWillAppear で barcodeArView.Start() を、ViewWillDisappear で barcodeArView.Stop() を呼び出します。.NET iOS のビューコントローラーから barcodeArView.OnResume() を呼び出すとコンパイルエラーになります。
  • BarcodeArView.Dispose() が後処理を行います。 BarcodeArView に OnDestroy() メソッドはありません(これは Android の Java/Kotlin の慣例です)。ビューコントローラーの Dispose(bool) オーバーライドから Dispose() を呼び出すか、短期間だけ使用するインスタンスを所有している場合は using のセマンティクスを利用してください。
  • iOS 専用のビューコントロールです。 ShouldShowMacroModeControl(bool)と MacroModeControlPosition(Anchor)はiOS のみに存在します(Android では公開されていません)。これらは、クロスプラットフォームの ShouldShowTorchControl/ShouldShowZoomControl/ShouldShowCameraSwitchControl と、それぞれに対応する *Position と並んでいます。iOS のコントロールについて質問された場合は、これらにも触れてください。
  • IBarcodeArListener のメソッドは 1 つだけです: OnSessionUpdated(BarcodeAr, BarcodeArSession, IFrameData)。dotnet.ios には、Swift の BarcodeArListener プロトコルにあるような OnObservationStarted/OnObservationStopped コールバックはありません。これらを宣言するとコンパイルエラーになります。インターフェイスに含まれていません。
  • 慣用的な C# では、リスナーインターフェイスよりイベント API(barcodeAr.SessionUpdated += handler)を優先してください。ハンドラーには BarcodeAr、Session、FrameData を含む BarcodeArEventArgs が渡されます。他のプラットフォームとの一貫性を保つため、AddListener(IBarcodeArListener) も引き続き使用できます。
  • OnSessionUpdated/SessionUpdated はバックグラウンドの認識キューで実行されます。 UI を更新する場合は、DispatchQueue.MainQueue.DispatchAsync(() => { … })(CoreFoundation のもの)を使ってディスパッチしてください。InvokeOnMainThread は使用しないでください。動作はしますが、公式の Scandit .NET iOS サンプルでは一貫して DispatchQueue.MainQueue.DispatchAsync を使用しています。
  • プロバイダーインターフェイスはデリゲートベースではなく、非同期です。 IBarcodeArHighlightProvider.HighlightForBarcodeAsync(Barcode) は Task<IBarcodeArHighlight?> を返し、IBarcodeArAnnotationProvider.AnnotationForBarcodeAsync(Barcode) は Task<IBarcodeArAnnotation?> を返します。.NET バインディングにはデリゲート/completionHandler 引数はありません。特定のバーコードのハイライト/アノテーションを抑制するには、Task.FromResult<IBarcodeArHighlight?>(null) を返すか、async メソッドから null を返してください。
  • ハイライトとアノテーションのコンストラクターが受け取る引数は Barcode のみです(context 引数はありません)。new BarcodeArRectangleHighlight(barcode)、new BarcodeArCircleHighlight(barcode, BarcodeArCircleHighlightPreset.Dot)、new BarcodeArInfoAnnotation(barcode)、new BarcodeArStatusIconAnnotation(barcode)、new BarcodeArPopoverAnnotation(barcode, buttons) を使用してください。UIViewController または UIView を渡すとコンパイルエラーになります。
  • シンボロジー名は C# の PascalCase です:Symbology.Ean13Upca、Symbology.Ean8、Symbology.Code128、Symbology.Code39、Symbology.Qr、Symbology.DataMatrix、Symbology.InterleavedTwoOfFive。Swift の camelCase 形式(.ean13UPCA、.qr)ではありません。
  • BarcodeArSettings には Enabled 切り替え機能はありません。BarcodeAr 自体にも Enabled プロパティはありません。スキャンを一時停止/再開するには、barcodeArView.Pause()/barcodeArView.Start() を使用してください。
  • .NET の BarcodeArViewSettings は最小限の設定のみです。 プロパティは SoundEnabled、HapticEnabled、DefaultCameraPosition の 3 つだけです。TriggerButtonCollapseTimeout、InactiveStateTimeout、ToastSettings、DefaultMiniPreviewSize のようなプロパティを作り上げないでください。これらは BarcodeAr ではなく SparkScan のものです。
  • BarcodeArFeedback は Scandit.DataCapture.Barcode.Ar.Feedback にあり、Core.Common.Feedback.Feedback 型のプロパティ Scanned と Tapped を持ちます。引数なしの new BarcodeArFeedback() は、両イベントを無音にするフィードバックオブジェクトを生成します。これを barcodeAr.Feedback に割り当てると、デフォルトのビープ音/振動が無効になります。デフォルトに戻すには、静的プロパティ BarcodeArFeedback.DefaultFeedback を使用してください(.NET では静的プロパティであり、Swift の BarcodeArFeedback.default() メソッドではありません)。
  • ハイライトのタップ操作は、BarcodeArView の HighlightForBarcodeTapped イベント(EventHandler<HighlightForBarcodeTappedEventArgs>)として公開されています。.NET の BarcodeArView に UiListener/UIDelegate プロパティはありません。Swift の BarcodeArViewUIDelegate は C# のイベントとして公開されています。イベント引数には BarcodeAr、Barcode、Highlight が含まれます。
  • barcodeAr.Feedback はプロパティ(get/set)です。ApplySettingsAsync(BarcodeArSettings) は Task を返します。BarcodeAr.RecommendedCameraSettings は静的プロパティであり、メソッドではありません(Swift SDK では BarcodeAr.recommendedCameraSettings はクラス変数です。.NET では getter であり、dotnet.ios に BarcodeAr.CreateRecommendedCameraSettings() メソッドはありません)。
  • .NET API ツリーに BarcodeArFilter/SetBarcodeFilter はありません。 8.1 で追加された Swift の setBarcodeFilter(...) メソッドは、現在 dotnet.ios では公開されていません。使用しないでください。
  • ビューコントローラーのコンストラクターは、VC のインスタンス化方法によって異なります。 ストーリーボード/XIB から VC が生成される場合(通常、プロジェクトに Info.plist で UIMainStoryboardFile が設定された Main.storyboard がある場合)は、public MyVC(IntPtr handle) : base(handle) { } コンストラクターを残してください。ランタイムは実際のネイティブハンドルを渡してこれを呼び出します。プログラムでインスタンス化する VC(Main.storyboard がなく、SceneDelegate.WillConnect または AppDelegate でルートビューコントローラーを設定する場合)では、引数なしの public MyVC() : base() { } を宣言し、new MyVC() でインスタンス化してください。(IntPtr) コンストラクターに IntPtr.Zero を渡さないでください。 ネイティブピアが初期化されず、ViewDidLoad が実行されないことがあります。その結果、カメラプレビューもスキャンもない黒い画面が表示されます。
  • SDK 8.0 以降では明示的な初期化が必要です。 Scandit のコードを実行する前に、AppDelegate.FinishedLaunching(またはプロジェクトに AppDelegate がない場合は SceneDelegate.WillConnect の最初)で ScanditCaptureCore.Initialize() と ScanditBarcodeCapture.Initialize() を呼び出してください。これを行わないと、DI コンテナーに登録がないため、最初の new BarcodeAr(...)/BarcodeArView.Create(...) の呼び出しで起動時にクラッシュします。6.x/7.x では不要です。 完全な AppDelegate.cs のテンプレートについては、references/integration.md を参照してください。
  • NuGet パッケージは Scandit.DataCapture.Core と Scandit.DataCapture.Barcode です。ここでは個別の *.Maui パッケージはありません。それらは MAUI プロジェクト専用です。トレーニングデータからバージョンを推測しないでください。 バージョンを固定する前に、https://www.nuget.org/packages/Scandit.DataCapture.Barcode/ から WebFetch で最新の安定版を取得してください。存在しないバージョン(たとえば、公開されているのが 8.4.0 のみなのに 8.13.0 を指定するなど)を作り上げると、dotnet restore は Unable to find package Scandit.DataCapture.Core with version (>= …) で失敗します。手順全体については、references/integration.md のステップ 0 を参照してください。
  • iOS の SupportedOSPlatformVersion は 15.0 以上である必要があります。 .csproj に設定してください。公式の Scandit iOS サンプルでは、Info.plist の MinimumOSVersion が 15.0 で、プロジェクトの <SupportedOSPlatformVersion> もこれに一致しています。
  • 必須の Info.plist キーは NSCameraUsageDescription(Privacy - Camera Usage Description)です。これがないと、初回のカメラアクセス時にアプリがクラッシュします。カメラを初めて開くときに iOS が自動的にユーザーに確認します。呼び出しが必要な独立した実行時リクエスト API(Android 形式の RequestPermissions など)はありません。手動での権限フローが必要な .NET Android スキルとの重要な違いです。

インテントルーティング

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

  • BarcodeAr を一から統合する、設定を構成する、ハイライトや注釈をカスタマイズする、セッション更新を処理する、フィードバックをカスタマイズする、またはタップ操作を接続する場合(例:「.NET iOS アプリに MatrixScan AR を追加する」「C# でバーコード AR スキャンを設定する」「追跡中のすべてのバーコードに四角形のハイライトを表示する」「バーコードデータを含む情報注釈を表示する」「ビープ音を消す」「ハイライトのタップに反応する」「円形のハイライトに切り替える」「マクロモードの切り替えを表示する」)→ references/integration.md を読み、そこに記載された手順に従ってください。
  • 既存の MatrixScan AR 統合を移行またはアップグレードする場合(例:「v7 から v8 にアップグレードする」「Scandit .NET SDK を v8 に上げる」「BarcodeAr の SDK バージョン間で何が変わったか」「8.x に移行するときに BarcodeAr のコードを変更する必要があるか」)→ references/migration.md を読み、そこに記載された手順に従ってください。

API の使用ポリシー

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

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

  1. まず、すでに取得したページに直接リンクがあるか確認してください。トピックページには関連する API シンボルへの直接リンクがあります。取得を依頼するときは、必ずリンクも含めるよう指定してください。
  2. 直接リンクが見つからなかった場合は、API インデックス(以下の表の Full API reference を参照)を取得し、そこから実際のリンクを抽出してアクセスしてください。

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

ライセンスキー

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

次の手順を順番に実行してください。MCP のためにユーザーの作業を止めてはいけません。

  1. Scandit MCP サーバーが接続されている場合 — 製品に native、プラットフォームに ios を指定して ensure_scanner_setup を呼び出し、次に get_license_env_command が返すコマンドを実行して、キーをプロジェクトの .env に書き込みます。チャットにはマスクされたプレビューのみを表示し、キー全体を出力してはいけません。

  2. 接続されていない場合 — 一度接続することを提案してから、手順 1 に進みます。

    • Claude Code:claude mcp add --transport http scandit https://ssl.scandit.com/mcp
    • Cursor:{"mcpServers": {"scandit": {"url": "https://ssl.scandit.com/mcp"}}} を ~/.cursor/mcp.json に追加します
    • VS Code:{"servers": {"scandit": {"type": "http", "url": "https://ssl.scandit.com/mcp"}}} を MCP ユーザー設定に追加します

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

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

次に、プレースホルダーの代わりにキーをコードに設定します。キーを .env に置いただけでは、アプリには反映されません。.NET は .env を自動で読み込まないため、以下の最も簡単な方法を使用してください。どのプラットフォームでも、最も簡単なのは .env を読み込み、キーをライセンスキー呼び出しに直接設定する方法です。その場合も、チャットにはマスクされたプレビューのみを表示してください。

参考情報

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

トピックリソース
はじめにはじめに(.NET for iOS)
高度なトピック(カスタムハイライト、カスタムアノテーション、タップ操作、ポップオーバー、フィルター)高度な設定
メジャー SDK バージョン間の移行6 → 7 · 7 → 8
API リファレンス全文BarcodeAr API(.NET iOS)

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

公式 RST ドキュメント(docs/source/barcode-capture/api/barcode-ar*.rst および api/ui/barcode-ar-*.rst)で :available: dotnet.ios と記載されているすべてのクラスについては、references/integration.md で説明しています。

  • BarcodeAr — new BarcodeAr(DataCaptureContext?, BarcodeArSettings)、Feedback(取得/設定)、ApplySettingsAsync(BarcodeArSettings) → Task、AddListener(IBarcodeArListener) / RemoveListener(IBarcodeArListener)、event EventHandler<BarcodeArEventArgs> SessionUpdated、静的プロパティ RecommendedCameraSettings、Dispose。
  • BarcodeArSettings — new BarcodeArSettings()、EnableSymbology(Symbology, bool)、EnableSymbologies(ICollection<Symbology>)、GetSymbologySettings(Symbology)、EnabledSymbologies(取得)、ExpectsOnlyUniqueBarcodes(取得/設定)、SetProperty / GetProperty<T> / TryGetProperty<T>、Dispose。
  • IBarcodeArListener — メソッドは OnSessionUpdated(BarcodeAr, BarcodeArSession, IFrameData) のみです(OnObservation* コールバックはありません)。
  • BarcodeArSession — AddedTrackedBarcodes(IReadOnlyList<TrackedBarcode>)、RemovedTrackedBarcodes(IReadOnlyList<int>)、TrackedBarcodes(IReadOnlyDictionary<int, TrackedBarcode>)、Reset()。
  • BarcodeArEventArgs — BarcodeAr、Session、FrameData。
  • BarcodeArFeedback — new BarcodeArFeedback()(無音)、静的プロパティ DefaultFeedback(デフォルト値)、Scanned / Tapped(Core.Common.Feedback.Feedback)、Dispose。
  • BarcodeArView — static Create(UIView parentView, BarcodeAr, DataCaptureContext, BarcodeArViewSettings, CameraSettings?)、HighlightProvider(IBarcodeArHighlightProvider? を取得/設定)、AnnotationProvider(IBarcodeArAnnotationProvider? を取得/設定)、ShouldShowTorchControl / ShouldShowZoomControl / ShouldShowCameraSwitchControl / ShouldShowMacroModeControl(iOS のみ)、TorchControlPosition / ZoomControlPosition / CameraSwitchControlPosition / MacroModeControlPosition(iOS のみ)(Anchor)、Start()、Stop()、Pause()、Reset()、GetNotificationPresenter()、event EventHandler<HighlightForBarcodeTappedEventArgs> HighlightForBarcodeTapped、UIKit.UIView への暗黙的な変換、Dispose。iOS には OnResume() / OnPause() はありません。これらは Android のみです。
  • BarcodeArViewSettings — SoundEnabled(デフォルトは true)、HapticEnabled(デフォルトは true)、DefaultCameraPosition(デフォルトは WorldFacing)。
  • HighlightForBarcodeTappedEventArgs — BarcodeAr、Barcode、Highlight(IBarcodeArHighlight)。
  • ハイライト:IBarcodeArHighlight : IDisposable、IBarcodeArHighlightProvider.HighlightForBarcodeAsync(Barcode) → Task<IBarcodeArHighlight?>、BarcodeArRectangleHighlight(Barcode)(Barcode / Brush / Icon)、BarcodeArCircleHighlight(Barcode, BarcodeArCircleHighlightPreset)(Barcode / Brush / Icon / Size)、BarcodeArCircleHighlightPreset 列挙型(Dot、Icon)。
  • アノテーション:IBarcodeArAnnotation : IDisposable(AnnotationTrigger を宣言)、IBarcodeArAnnotationProvider.AnnotationForBarcodeAsync(Barcode) → Task<IBarcodeArAnnotation?>。
    • BarcodeArStatusIconAnnotation(Barcode) — AnnotationTrigger、HasTip、Icon、Text、TextColor、BackgroundColor。
    • BarcodeArInfoAnnotation(Barcode) — HasTip、EntireAnnotationTappable、Anchor(BarcodeArInfoAnnotationAnchor)、AnnotationTrigger、Width(BarcodeArInfoAnnotationWidthPreset)、Body(IReadOnlyCollection<BarcodeArInfoAnnotationBodyComponent>)、Header(BarcodeArInfoAnnotationHeader?)、Footer(BarcodeArInfoAnnotationFooter?)、BackgroundColor、Listener(IBarcodeArInfoAnnotationListener?)。
    • BarcodeArPopoverAnnotation(Barcode, IList<BarcodeArPopoverAnnotationButton>) — AnnotationTrigger、EntirePopoverTappable、Listener(IBarcodeArPopoverAnnotationListener?)、Buttons。
    • BarcodeArPopoverAnnotationButton(ScanditIcon, string) — Text、TextSize、Typeface、TextColor、Enabled、Icon。
    • BarcodeArAnnotationTrigger 列挙型:HighlightTapAndBarcodeScan、HighlightTap。
  • 情報アノテーションのサブパッケージ(Scandit.DataCapture.Barcode.Ar.UI.Annotations.Info):BarcodeArInfoAnnotationBodyComponent(Text、TextColor、TextSize、Typeface、StyledTextFormatted、LeftIcon、RightIcon、LeftIconTappable、RightIconTappable、TextAlignment)、BarcodeArInfoAnnotationHeader(Text、TextSize、Typeface、TextColor、Icon、BackgroundColor)、BarcodeArInfoAnnotationFooter(Text、TextSize、Typeface、TextColor、Icon、BackgroundColor)、BarcodeArInfoAnnotationAnchor 列挙型(Left、Right、Bottom、Top)、BarcodeArInfoAnnotationWidthPreset 列挙型(Small、Medium、Large)、IBarcodeArInfoAnnotationListener(OnInfoAnnotationHeaderTapped、OnInfoAnnotationFooterTapped、OnInfoAnnotationLeftIconTapped、OnInfoAnnotationRightIconTapped、OnInfoAnnotationTapped)。
  • IBarcodeArPopoverAnnotationListener — OnPopoverButtonTapped、OnPopoverTapped。
  • TrackedBarcode(Scandit.DataCapture.Barcode.Batch.Data 内)— Barcode、Identifier、Location。

コメント