I reset the PeerID and Session on the Browser side whenever I get disconnected and want to reconnect:
// reset my PeerID. Sometimes when trying to reconnect to the same Advertiser with the same PeerID nothing happens
mcPeerID = [[MCPeerID alloc] initWithDisplayName:[UIDevice currentDevice].name];
mcSession = [[MCSession alloc] initWithPeer:mcPeerID];
mcSession.delegate = self;
mcNearbyServiceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:mcPeerID serviceType:kMCServiceType];
mcNearbyServiceBrowser.delegate = self;
[mcNearbyServiceBrowser startBrowsingForPeers];
On the Advertiser side, the connectedPeers count is decremented correctly on the disconnect, so reconnecting as a * different * browser doesn't seem to have a negative impact (maybe this isn't proper coding, but it works). With a new PeerID I can reconnect without issue. I reset the Session at the same time to keep them in sync (ie, I don't want a Session laying about that was init'd from the old PeerID).