問題タブ [mcsession]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
990 参照

multipeer-connectivity - MCNearbyServiceAdvertiser デリゲート メソッドが呼び出されたことがない

マルチピア接続フレームワークと Nearby Services (ブラウザーと広告主の両方) を使用して、デバイス間で自動接続して少量のデータを交換するアプリを実装します。

すべての接続の詳細を処理するセッション マネージャーを作成しました。そのデリゲートは、データを受信したときに UI の更新を処理するためのビュー コントローラーです。

セッション マネージャーは以下を構築します。

  • サービス アドバタイザー、デリゲートはセッション マネージャーです
  • デリゲートがセッション マネージャーでもあるサービス ブラウザー

2 つのデバイス (1 つは Xcode でログを取得し、もう 1 つはスタンドアロン) でアプリを起動すると、サービス ブラウザーのデリゲートに対応するメソッドを介して Found Peer メッセージを受け取ります。

別のメッセージで述べたように、MCPeerID の displayName プロパティ (ローカルと受信ピアの両方) を比較して、どちらが招待を送信するかを決定し、相互招待を回避します。

ここの別のメッセージで述べたように、「オプションの」MCSessionデリゲートメソッドも追加しました- (void)session:didReceiveCertificate:fromPeer:certificateHandler:

ただし、(void)advertiser:didReceiveInvitationFromPeer:withContext:invitationHandler:MCNearbyServiceAdvertiser のデリゲート メソッドは呼び出されません。(void)session:peer:didChangeState:メソッドでタイムアウトを設定した後、MCSession デリゲート メソッドによって受信される NotConnected メッセージのみがありますinvitePeer:toSession:withContext:timeout:

提案されたさまざまなオプションで:

  • セッションはセキュリティ nil および MCEncryptionNone で初期化されます。
  • discoveryInfo は nil です。
  • 招待状で送信される context は、NSData としてアーカイブされた単なる短い文字列です。

トラブルシューティングするには:

  • すべてのアイテムが存在することを確認しました (セッションとそのデリゲート、広告主とそのデリゲート)。
  • アプリがアクティブである限り、Service Browser と Advertiser が停止することはありません。

どこを見渡せばいいのかわからない!

0 投票する
2 に答える
1192 参照

ios - 着信 NSStream をビューに変換する

NSData のストリームを正常に送信しています。以下のデリゲート メソッドは、そのストリームを取得し、NSMutableData self.data に追加します。このデータを取得して UIView/AVCaptureVideoPreviewLayer (ビデオを表示する必要があります) にするにはどうすればよいですか? 別の変換、AVCaptureSession > NSStream > MCSession > NSStream > が欠けているように感じます。

これでストリームを送信します:

0 投票する
1 に答える
873 参照

ios - MCSession の証明書の承認

キーチェーンに自己署名証明書を作成し、MultipeerConnectivity フレームワークを使用してデバイス間でデータを転送しています。

セッションを作成するときに、MCSession でピアを招待するときに securityIdentity を渡すことができます。

しかし、securityIdentity は NSArray です。NSArray で証明書を渡す方法と、それを認証する方法

0 投票する
0 に答える
157 参照

ios - マルチピア接続のセッション

A、B、C、D の 4 つのデバイスがあり、A は B に接続し、C は D に接続し、A は C に接続しますが、B と C の間の距離が長すぎて接続できません。

  1. A と C は同じセッションにいますか?
  2. B と D は同じセッションにいますか?
  3. 彼らはセッションでどのようにコミュニケーションを取っていますか?
  4. MCSession のリファレンスによると、セッションは現在最大 8 つのピアをサポートしていますが、8 つ以上のピアがあります。どのように機能しますか?
0 投票する
1 に答える
664 参照

ios - iOS シミュレーターとデバイス間で MCSession を使用してファイルを送信する

ピア Apple の Multipeer Connectivity ライブラリを使用して、あるデバイスから別のデバイスにファイルを送信する必要がある iPad 用のアプリケーションがあります。ファイルは zip ファイル (私は iOS 用の ZipArchive を使用しています: https://github.com/mattconnolly/ZipArchive ) であり、iOS シミュレーターと 1 台の iPad デバイスでテストしています。iPad からシミュレーターにファイルを送信すると、常に完全に機能しますが、シミュレーターからデバイスにファイルを送信しようとすると、90% の確率で失敗します。zipファイルは通りますが、末尾から数キロバイトが抜けているため、解凍できません。私は MCSession クラスを使用しています。これは転送用の sendResourceAtURL 関数です。

  • didFinishRecomingResourceWithName デリゲート メソッド (バックグラウンド スレッドで実行) でファイルを抽出します。
  • すべての NSError 変数は (送受信時に) nil であり、問​​題を示すものは何もありません。
  • ファイルのサイズはそれほど重要ではなく、20 Kb の場合も 1 MB を超える場合も同じように動作します。
  • 送信中 (または送信後) に 2 つのピアが切断されることはありません。

送受信ファイルのファイル サイズを 3 回記録しました。

現在、iPad は 1 つしか持っていませんが、一方向にしか機能しない理由を知りたいと思っています。何か案は?