Search code examples
xcode7multipeer-connectivityswift2

multipeer connectivity advertiser


I have a class that implement MCNearbyServiceAdvertiserDelegate. Upon initialization I am able to see the advertised peer from the client if I call MPCManager.advertiser.startadvertisingpeer(). I am trying to implement a method to stop advertising, change the advertiser discoveryInfo and then start advertising again with the new discovery info in place.

The methods sucessfully stop advertising peer but it do not start advertising again. Can you please help me with that

Code details

classMPCManager:NSObject,MCSessionDelegate,MCNearbyServiceBrowserDelegate, MCNearbyServiceAdvertiserDelegate {

var delegate: MPCManagerDelegate?

var session: MCSession!
var sessionList: [MCSession]! = []
var peer: MCPeerID!

var browser: MCNearbyServiceBrowser!

var advertiser: MCNearbyServiceAdvertiser!

var foundPeers:[NSDictionary]! = [] 

var invitationHandler: ((Bool, MCSession!)->Void)!

var discoveryInfo:[String: String]!

init(discoveryInfo:[String:String]!, peer:MCPeerID!) {
    super.init()
    self.discoveryInfo = discoveryInfo
    self.peer = peer
    session = MCSession(peer: self.peer)
    session.delegate = self
    browser = MCNearbyServiceBrowser(peer: peer, serviceType: "myservicetype")
    browser.delegate = self
    advertiser = MCNearbyServiceAdvertiser(peer: self.peer, discoveryInfo: self.discoveryInfo, serviceType: "myservicetype")
    advertiser.delegate = self
}
 /////some other methods
///the problematic method
 func setAdvertising(discoveryInfo:[String:String]!){
    print("setting advertising")
    self.discoveryInfo = discoveryInfo
    advertiser.stopAdvertisingPeer()
    advertiser = nil
    self.advertiser =  MCNearbyServiceAdvertiser(peer: self.peer, discoveryInfo: self.discoveryInfo, serviceType: "myservicetype")
   self.advertiser.delegate = self
   print("advertising from set advertising")
   advertiser.startAdvertisingPeer()
 }

Solution

  • Finally get it work. I sought in another posts to use discovery info as dictionary instead of [String:String] strange thing but its working now :D!. Thanks all that take time to read