問題タブ [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.
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 が停止することはありません。
どこを見渡せばいいのかわからない!
ios - 着信 NSStream をビューに変換する
NSData のストリームを正常に送信しています。以下のデリゲート メソッドは、そのストリームを取得し、NSMutableData self.data に追加します。このデータを取得して UIView/AVCaptureVideoPreviewLayer (ビデオを表示する必要があります) にするにはどうすればよいですか? 別の変換、AVCaptureSession > NSStream > MCSession > NSStream > が欠けているように感じます。
これでストリームを送信します:
ios - MCSession の証明書の承認
キーチェーンに自己署名証明書を作成し、MultipeerConnectivity フレームワークを使用してデバイス間でデータを転送しています。
セッションを作成するときに、MCSession でピアを招待するときに securityIdentity を渡すことができます。
しかし、securityIdentity は NSArray です。NSArray で証明書を渡す方法と、それを認証する方法
ios - マルチピア接続のセッション
A、B、C、D の 4 つのデバイスがあり、A は B に接続し、C は D に接続し、A は C に接続しますが、B と C の間の距離が長すぎて接続できません。
- A と C は同じセッションにいますか?
- B と D は同じセッションにいますか?
- 彼らはセッションでどのようにコミュニケーションを取っていますか?
- MCSession のリファレンスによると、セッションは現在最大 8 つのピアをサポートしていますが、8 つ以上のピアがあります。どのように機能しますか?
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 つしか持っていませんが、一方向にしか機能しない理由を知りたいと思っています。何か案は?