MultiPeerConnectivityまとめ - enpitut2019/dj-yusaku GitHub Wiki
https://developer.apple.com/documentation/multipeerconnectivity
接続デバイス間の通信管理
MultiPeerConnectivityしたいなら、どのデバイスもこれのインスタンスを作る
session.send(なんとか)ってすると送れる
.sendStreamとか.sendResourseとかある
送られてきたら実行される関数ども イベント駆動のような感じ
だいたい実装必須
[重要] sessionメソッドの中でUIの更新を行うにはメインスレッドに処理を移す必要がある。
DispatchQueue.main.async
などを使う
advertiserAssistant.start()すると俺を招待(invite)してくれ〜って電波を出す
スマホとワイヤレスイヤホンで言ったら、ワイヤレスイヤホン側
実装が必須なメソッドはない
招待してくれ電波を出してるやつを見つけて接続する
スマホとワイヤレスイヤホンで言ったら、スマホ側
present(browserViewController, animated: true, completion: nil)みたいにして画面を出す
DoneされたらどうするかCancelされたらどうするか (必須)
画面表示中に新しく見つかったピアがいた場合どうするか (必須じゃない) true -> 表示 false ->表示しない
上の要素で十分だが、MCBrowserViewControllerによるViewがイケてないと感じたら下を使う
.startAdvertisingPeer()すると見つけてくれする
UIは自分で作る
実装必須なメソッドがある
.startBrowsingForPeers()で見つけ始めるUIは自分で作る
メソッドの中身でbrowser.invitePeerする
一つのセッションで接続できるのは最大8デバイス
Invite peers to join the session using an MCNearbyServiceBrowser object, an MCBrowserViewController object, or your own peer discovery code. (Sessions currently support up to 8 peers, including the local peer.)
MCSessionの説明より
-
https://qiita.com/hryk224/items/8b850d98e75605cf4d85
- iOSとAppleTVでの例
- 上を理解するのに参考になるはず
-
https://qiita.com/somtd/items/045536da81dbde425b07
- 肝心なところがリンク切れ
-
https://github.com/dingwilson/MultiPeer
- ラッパーライブラリ
- シングルトン
- 接続確認のUIは存在せず、勝手に繋がる
- MCNearbyServiceAdvertiserとMCNearbyServiceBrowserを使っている
- session.sendのみ使う
- sendResourse,sendStreamは使ってない
-
https://github.com/dingwilson/MultiPeer_Sample
- サンプルアプリ
- 文字列、もしくは写真ライブラリから選択した画像を送信できる
-
https://qiita.com/k-boy/items/91de738db8797ea46516
- BeerKitの話
-
https://dev.classmethod.jp/references/ios-multipeer-apiusage/
- DeveloperIOの記事
- Objective-Cだがわかりやすい
-
http://iorisomo.hatenablog.com/entry/2014/03/01/150924
- 個人ブログ
- Objective-Cだがわかりやすい
-
https://github.com/tsuu32/MC_Sample
- tsuu32が作ったMCAdvertiserAssistantとMCBrowserViewControllerを使ったサンプル
- advetiseしてるデバイスをbrowserで見つけられるが、browserのUIでデバイスを選択しても、相手デバイスでaccept/declineのalertが表示されない
- よって繋がらない...
- [追記] 原因がわかったので繋がるよう修正した
-
https://qiita.com/tomoyuki_HAYAKAWA/items/9c6fe8929633ba1476eb
- MCAdvertiserAssistantとMCBrowserViewControllerを使ったサンプル
- githubのサンプルをビルドしたら繋がった
-
https://www.ioscreator.com/tutorials/multipeer-connectivity-ios-tutorial
- MCAdvertiserAssistantとMCBrowserViewControllerを使ったサンプル
- githubのサンプルをビルドしたら繋がった
-
- Xcode 11以降だと
MCAdvertiserAssistant
が壊れて使えないとのこと。
- Xcode 11以降だと