2016-05-01 10 views
0

iOSのMultipeer Connectivity Frameworkを試しています。私はデバイスを宣伝し、他のデバイスをブラウズするシンプルなアプリを作りたいと思っています。ここに私のコードは次のとおりです。iOSのMultipeer Connectivity Frameworkに関する問題

class ViewController: UIViewController { 

    static let serviceType = "mult-demo" 
    let localPeerID = MCPeerID(displayName: UIDevice.currentDevice().name) 

    func startAdvertising() { 
     let advertiser = MCNearbyServiceAdvertiser(peer: localPeerID, discoveryInfo: nil, serviceType: ViewController.serviceType) 
    advertiser.delegate = self 
    advertiser.startAdvertisingPeer() 
    print("advertising") 
    } 

    func startBrowsing() { 
     let browser = MCNearbyServiceBrowser(peer: localPeerID, serviceType: ViewController.serviceType) 
     browser.delegate = self 
     browser.startBrowsingForPeers() 
     print("browsing") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     startAdvertising() 
     startBrowsing() 
    } 

} 

extension ViewController : MCNearbyServiceAdvertiserDelegate, MCNearbyServiceBrowserDelegate { 
    func advertiser(advertiser: MCNearbyServiceAdvertiser, didReceiveInvitationFromPeer peerID: MCPeerID, withContext context: NSData?, invitationHandler: (Bool, MCSession) -> Void) { 

     print("received invitation") 
    } 

    func browser(browser: MCNearbyServiceBrowser, foundPeer peerID: MCPeerID, withDiscoveryInfo info: [String : String]?) { 
     print("found peer \(peerID)") 
    } 

    func browser(browser: MCNearbyServiceBrowser, lostPeer peerID: MCPeerID) { 

    } 
} 

しかし、私は、彼らがお互いを発見していない同じWiFiネットワークに接続された二つのiPad(iOSの9)でそれを実行したとき。私は間違って何をしていますか?

+0

関数が終了すると、ローカル変数ではなくプロパティに 'browser'と' advertiser'を保存してください。 – Paulw11

+0

@ Paulw11修正済みですがまだ動作しません:( – Ruslan

+0

@ Paulw11問題が解決しました。どうもありがとう) – Ruslan

答えて

0

コメントに記載されているとおり、まずブラウザと広告主の「インスタンス」が強く参照されていないことを確認する必要があります。インスタンス変数を宣言することでそれを行うことができます。ローカル変数に並んでいる。

また、端末が同じWi-Fiネットワークに接続されているか、BluetoothとWi-Fiの両方がオンになっていることを確認する必要があります。それでもコンテンツ交換に関してロジックのかなり多くを処理する必要があります発見した後

Multipeer接続はiOSの間で動作し、私は評価者の複雑なAPIを持っていると信じて...

。また、あなたのアプリがAndroidで動作することを望むなら、これは可能ではありません。

もし私がそうであれば、開発とメンテナンスの時間を節約するものとして、ピアツーピア通信を行うSDKをお勧めします。例えば、トライのために

http://www.p2pkit.iohttp://www.intromi.cohttp://www.underdark.ioまたは

私はこれが役に立てば幸い近くのgoogle ...

免責事項:私はAndroidとiOS用p2pkit.ioを開発、Uepaaのために働きます。

関連する問題