5

iOS 7 Multipeer Connectivity フレームワークを使用して自分自身を宣伝し、他のデバイスを参照するアプリがあります。MCNearbyServiceBrowserインスタンスが自分自身 (アプリが実行されているデバイス) を見つけてbrowser:foundPeer...デリゲート メソッドを呼び出すのはなぜですか? PeerIDデバイスのアドバタイズを開始するために作成した実際のものとPeerID、デリゲート メソッドで検出されたものをログに記録すると、一意の ID は異なりますが、表示名は同じです。理由はありますか?

4

1 に答える 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 に答える