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()
}
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