カメラとマイク:プラットフォームの挙動
カメラとマイクに関するユーザーフロー、ライフサイクル状態、権限プロンプト、オフライン時の挙動、およびプラットフォーム固有のエッジケースを定義します。採用の境界と観察可能な失敗の証拠を固定しつつ、環境固有の制限は設定可能なままにします。
パッケージの状態: 参照コンテキストは人間によるレビュー準備完了です。契約とテストシナリオは 完了していますが、採用された実装がそれらを通過したという主張はしていません。
決定
カメラとマイクについては、明示的なネイティブアダプターを備えたプラットフォーム中立のドメイン契約を採用します。可視化された状態、可能な限り元に戻せる選択、保持された入力、およびアクセス可能な回復を備えた決定論的なユーザージャーニーを定義します。このパッケージは参照契約であり、採用チームは自身の環境の証拠に基づいて数値制限、プロバイダー、管轄区域、および運用責任者を選択しなければなりません。
範囲
- このUXブロックで説明されるカメラとマイクのアクター、入力、出力、状態、ポリシーまたはスキーマのバージョン、および外部に見える結果。
- 主および代替インターフェース、バックグラウンド作業、キャッシュ、統合、サポートパス、および同じ境界を行使できる証拠。
- 参照を安全に適用するために必要な採用固有の設定、展開、回復、および検証の責任。
このブロックの外
- すべての採用者に対して普遍的なベンダー、フレームワーク、管轄区域、数値閾値、保持期間、またはサービスレベル目標を選択すること。
- パッケージ化されたシナリオが下流の実装で実行されたことや、この参照が法的、セキュリティ、またはアクセシビリティ認証を付与することを主張すること。
契約
- 機能が依存するフォアグラウンド、バックグラウンド、終了済み、オフライン、復元済み、サインアウト済み、および権限拒否状態をモデル化する。
- OSのコールバックや外部リンクを信頼できない入力として扱い、結果のドメインアクションを再認可する。
- 機密キーはプラットフォーム保護機能を通じてのみ保存し、通知、ログ、バックアップ、クリップボードにコピーされる値は最小限に抑える。
- 同期操作は経過時間の仮定ではなく、耐久的なバージョンまたは操作識別子で冪等性を持たせる。
- 実際に作業が保留中の間のみ進捗を表示し、ユーザーの確定した意図を隠すことなく重複起動を防止する。
- 検証、権限、接続、競合、および致命的失敗を区別する平易でアクション固有のメッセージを使用する。
- カメラまたはマイクへのアクセスは、目的、デバイス選択、範囲、期間、送信、録音、および拒否の結果を説明するユーザーアクションの後にのみ要求する。
- 永続的なキャプチャ状態を表示し、トラックを迅速に停止し、バックグラウンド化やデバイス変更を処理し、保存されたメディアを保護し、サーバーまたは第三者への送信を再認可する。
実装ガイダンス
- 最長、空、遅延、オフライン、拒否、および支援技術パスをプロトタイプ化してから、ハッピーパスのレイアウトを確定する。
- フレームワークやベンダーの詳細を選択する前に、カメラとマイクの入力、出力、アクター、状態、不変条件、副作用、および証拠をモデル化する。
- 適用されるカメラとマイクの契約またはポリシーバージョンをマテリアル状態と共に保存し、マイグレーション、リプレイ、およびサポートの判断が帰属可能であるようにする。
- 制御された展開の背後にパスを導入し、期待される結果と観察された結果を比較し、採用の証拠が完了するまでテスト済みの回復ルートを維持する。
失敗処理と安全策
- 中断されたネイティブ作業は耐久的なチェックポイントから再開するか、副作用を重複させることなく安全な可視状態に戻る。
- 無効または矛盾するカメラとマイクの状態は拒否または隔離される。実装は権限を拡大したり効果を重複させる値を推測しない。
- リトライは制限され耐久的な識別子を使用する。使い果たした後は、作業は検査可能な終端状態に達し、責任者が明確である。
検証と運用
- キーボード、タッチ、スクリーンリーダー、狭いビューポート、遅延ネットワーク、および回復可能なサーバーエラーでジャーニーを完了する。
- カメラとマイクの成功、拒否、検証失敗、依存失敗、リトライ使い果たし、および回復を契約バージョンごとに監視し、機密ペイロードの詳細は含めない。
- ポリシー、スキーマ、依存関係、マイグレーション、または境界の変更後に正負のフィクスチャを再実行し、結果の証拠を保持する。
採用の前提
- 例の名前と値は具体的なフィクスチャであり、普遍的なデフォルトではない。採用者は文書化された証拠と所有権を通じてそれらを置き換える。
- 採用システムは認証済みのID、耐久的な操作または記録バージョン、制限されたテレメトリ、および変更のための制御されたパスを提供できる。
このパッケージの実行可能に見える例はフィクスチャおよび受け入れ契約です。構造とメタデータを検証するためにコレクションバリデーターを実行し、ターゲットリポジトリでシナリオを翻訳および実行してから実装証拠を記録してください。