質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

1回答

1820閲覧

multipeerconnectivityのデータ送信ができない

afuroda

総合スコア36

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/12/30 04:21

###前提・実現したいこと
multiprrrconnectivityを用いて簡単な2端末間でのクイズアプリを作っているのですが、senddataを用いて、データを送信したいのですが、データの送信は出来ているのですが、func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) に届かないんです。

###該当のソースコード

swift

1 2 func session(session: MCSession, peer peerID: MCPeerID, didChangeState state: MCSessionState) { 3 4 } 5 func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) { 6 print("recivedata") 7 8 } 9 10 func session(session: MCSession, didReceiveStream stream: NSInputStream, withName streamName: String, fromPeer peerID: MCPeerID) { 11 } 12 13 func session(session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, withProgress progress: NSProgress) { 14 } 15 16 func session(session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, atURL localURL: NSURL, withError error: NSError?) { 17 } 18 func send(){ 19 do{ 20 try appdelegate.session?.sendData(data, toPeers: (appdelegate.session?.connectedPeers)!, withMode: MCSessionSendDataMode.Unreliable) 21 print("senddata") 22 } 23 catch{ 24 print("error") 25 } 26 } 27
func button1push(sender: UIButton){ print("1push") if answer == "1"{ self.view.backgroundColor = UIColor.redColor() image.alpha = 1 image.image = imageo send() } else { self.view.backgroundColor = UIColor.blueColor() image.alpha = 1 image.image = imagex } }

###試したこと
プログラムを実行してみると、デバックエリアにsenddataとは表示されますが、recivedataと表示されませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
seift2を使っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

MCSessionDelegateはコードにありますか?

投稿2017/01/01 08:40

fromageblanc

総合スコア2724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

afuroda

2017/01/02 08:04

返信が遅れてすいませんMCSessionDelegateはclassに書いてあります。 import UIKit import MultipeerConnectivity class secondViewController: UIViewController,MCSessionDelegate { var answer = String() let imageo = UIImage(named: "o.png") let imagex = UIImage(named: "x.png") let data = NSData() //ボタンの生成 var image = UIImageView() var text = UILabel() var button1 = UIButton() var button2 = UIButton() var button3 = UIButton() var button4 = UIButton() let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate override func viewDidLoad() { qizu1() //ボタンのサイズ設定 image.frame = CGRectMake(0, 0, 300, 300) text.frame = CGRectMake(0, 0, 300, 150) button1.frame = CGRectMake(0, 0, 300, 100) button2.frame = CGRectMake(0, 0, 300, 100) button3.frame = CGRectMake(0, 0, 300, 100) button4.frame = CGRectMake(0, 0, 300, 100) //ボタンの背景色設定 self.text.backgroundColor = UIColor.orangeColor() button1.backgroundColor = UIColor.cyanColor() button2.backgroundColor = UIColor.redColor() button3.backgroundColor = UIColor.yellowColor() button4.backgroundColor = UIColor.greenColor() //ボタンの位置を指定する image.layer.position = CGPoint(x: self.view.frame.width/2, y: 300) text.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.width/4) button1.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.width/1.2) button2.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.width/0.9) button3.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.width/0.7) button4.layer.position = CGPoint(x: self.view.frame.width/2, y: self.view.frame.width/0.6) //ボタンを画面に表示させる self.view.addSubview(image) self.view.addSubview(text) self.view.addSubview(button1) self.view.addSubview(button2) self.view.addSubview(button3) self.view.addSubview(button4) //ボタンにイベントを追加する button1.addTarget(self, action: #selector(self.button1push), forControlEvents: .TouchUpInside) button2.addTarget(self, action: #selector(self.button2push), forControlEvents: .TouchUpInside) button3.addTarget(self, action: #selector(self.button3push), forControlEvents: .TouchUpInside) button4.addTarget(self, action: #selector(self.button4push), forControlEvents: .TouchUpInside) self.qizu1() //各パーツの文字の色 text.textColor = UIColor.darkTextColor() button1.setTitleColor(UIColor.darkTextColor(), forState: .Normal) button2.setTitleColor(UIColor.darkTextColor(), forState: .Normal) button3.setTitleColor(UIColor.darkTextColor(), forState: .Normal) button4.setTitleColor(UIColor.darkTextColor(), forState: .Normal) //ボタンの角を丸める button1.layer.masksToBounds = true button2.layer.masksToBounds = true button3.layer.masksToBounds = true button4.layer.masksToBounds = true // コーナーの半径を設定する. button1.layer.cornerRadius = 20.0 button2.layer.cornerRadius = 20.0 button3.layer.cornerRadius = 20.0 button4.layer.cornerRadius = 20.0 text.textAlignment = NSTextAlignment.Center text.font = UIFont(name: "HiraMinProN-W3", size: 50) button1.titleLabel?.font = UIFont.systemFontOfSize(50) button2.titleLabel?.font = UIFont.systemFontOfSize(50) button3.titleLabel?.font = UIFont.systemFontOfSize(50) button4.titleLabel?.font = UIFont.systemFontOfSize(50) appdelegate.session?.delegate = self self.view.bringSubviewToFront(image) super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } //各ボタンが押された時に実行されるメソッド func button1push(sender: UIButton){ print("1push") if answer == "1"{ self.view.backgroundColor = UIColor.redColor() image.alpha = 1 image.image = imageo send() } else { self.view.backgroundColor = UIColor.blueColor() image.alpha = 1 image.image = imagex } } func button2push(sender: UIButton){ if answer == "2"{ self.view.backgroundColor = UIColor.redColor() image.image = imageo image.alpha = 1 send() } else { self.view.backgroundColor = UIColor.blueColor() image.image = imagex image.alpha = 1 } } func button3push(sender: UIButton){ if answer == "3"{ self.view.backgroundColor = UIColor.redColor() image.image = imageo image.alpha = 1 send() } else { self.view.backgroundColor = UIColor.blueColor() image.image = imagex image.alpha = 1 } } func button4push(sender: UIButton){ if answer == "4"{ self.view.backgroundColor = UIColor.redColor() image.image = imageo image.alpha = 1 send() } else { self.view.backgroundColor = UIColor.blueColor() image.image = imagex image.alpha = 1 } } func session(session: MCSession, peer peerID: MCPeerID, didChangeState state: MCSessionState) { } func session(session: MCSession, didReceiveData data: NSData, fromPeer peerID: MCPeerID) { print("recivedata") } func session(session: MCSession, didReceiveStream stream: NSInputStream, withName streamName: String, fromPeer peerID: MCPeerID) { } func session(session: MCSession, didStartReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, withProgress progress: NSProgress) { } func session(session: MCSession, didFinishReceivingResourceWithName resourceName: String, fromPeer peerID: MCPeerID, atURL localURL: NSURL, withError error: NSError?) { } func send(){ do{ try appdelegate.session?.sendData(data, toPeers: (appdelegate.session?.connectedPeers)!, withMode: MCSessionSendDataMode.Unreliable) print("senddata") } catch{ print("error") } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問