iOS 7 Multipeer Connectivity フレームワークを使用して自分自身を宣伝し、他のデバイスを参照するアプリがあります。MCNearbyServiceBrowser
インスタンスが自分自身 (アプリが実行されているデバイス) を見つけてbrowser:foundPeer...
デリゲート メソッドを呼び出すのはなぜですか? PeerID
デバイスのアドバタイズを開始するために作成した実際のものとPeerID
、デリゲート メソッドで検出されたものをログに記録すると、一意の ID は異なりますが、表示名は同じです。理由はありますか?
1 に答える
0
残念ながら、これは非常に一般的であり、基盤となる bonjour 検出サービス メカニズムが原因です。これは、ボンジュールの可用性を再ブロードキャストする特定のネットワーク デバイスなど、さまざまな要因に大きく依存します。
アプリでこれを回避する最善の方法は、MCPeerID に一意の文字列を使用し (私は通常、新しい UUID 文字列を使用します)、各ピア ID の表示名をローカルのものと照合してから、ピア ブラウザー UI に表示することです。
迅速にそれはこのようになります
let uuid = NSUUID().UUIDString
self.peer = MCPeerID(displayName: uuid)
...
...セッションデリゲートから見つかったピアメッセージを取得すると:
if peerID.displayName != self.peer.displayName { ... ここで使用可能なピア配列にピアを追加します }
于 2016-05-18T18:46:44.830 に答える