swiftでmultipeerconnectivityライブラリを使用し、bluetooth通信を実装しました。
一度接続をし、通信後画面遷移しそこでは通信をしないでまた接続したViewに戻って再通信を行いたいのですが、
AppDelegate.swiftで
var session:MCSession!
とし、以下のコードで接続をします。
swift
1 self.peerID = MCPeerID(displayName: UIDevice.current.name) 2 app.session = MCSession(peer: peerID) 3 app.session?.delegate = self 4 5 6 self.browser = MCBrowserViewController(serviceType:serviceType, 7 session:app.session!) 8 9 self.browser.delegate = self 10 11 self.assistant = MCAdvertiserAssistant(serviceType:serviceType,discoveryInfo:nil, session:app.session!) 12 13 self.assistant.start()
一度画面遷移した後、再び接続した画面に戻って再通信をすると必ず
fatal error: Index out of range
と、エラーが出てしまいます。
再び接続した画面に戻った時に
app.session.delegate = self
としているのですがうまくいきません。
送信部分
let sendmine = NSData(bytes:self.send_turn_decition,length:self.send_turn_decition.count*MemoryLayout<UInt8>.size) do { try app.session?.send(sendmine as Data,toPeers: (app.session?.connectedPeers)!,with: MCSessionSendDataMode.unreliable) } catch { print("Error sending data: \(error.localizedDescription)") }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。