ios – Multipeer Connectivity foundDevice两次

ios – Multipeer Connectivity foundDevice两次,第1张

概述我有下面的代码,我的目标是让mac识别具有Multipeer Connectivity的iOS设备.这在大多数情况下起作用,除了当我运行这两个时我得到两个“FOUND !!!”在控制台中.我怎样才能解决这个问题? 这是我的iOS设备代码: import UIKitimport MultipeerConnectivityclass ViewController: UIViewControlle 我有下面的代码,我的目标是让mac识别具有Multipeer Connectivity的iOS设备.这在大多数情况下起作用,除了当我运行这两个时我得到两个“FOUND !!!”在控制台中.我怎样才能解决这个问题?

这是我的iOS设备代码:

import UIKitimport MultipeerConnectivityclass VIEwController: UIVIEwController,MCNearbyServicebrowserDelegate,MCNearbyServiceAdvertiserDelegate {let browser = MCNearbyServicebrowser(peer: MCPeerID(displayname: "iOS Device"),serviceType: "example-test")let peerID = MCPeerID(displayname: "iOS Device")let advertiser = MCNearbyServiceAdvertiser(peer: MCPeerID(displayname: "iOS Device"),discoveryInfo: nil,serviceType: "example-test")overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    advertiser.delegate = self    advertiser.startAdvertisingPeer()    browser.delegate = self    browser.startbrowsingForPeers()}func browser(_ browser: MCNearbyServicebrowser,lostPeer peerID: MCPeerID) {}func browser(_ browser: MCNearbyServicebrowser,dIDNotStartbrowsingForPeers error: Error) {}func browser(_ browser: MCNearbyServicebrowser,foundPeer peerID: MCPeerID,withdiscoveryInfo info: [String : String]?) {    print("FOUND!!!")}func advertiser(_ advertiser: MCNearbyServiceAdvertiser,dIDNotStartAdvertisingPeer error: Error) {}func advertiser(_ advertiser: MCNearbyServiceAdvertiser,dIDReceiveInvitationFromPeer peerID: MCPeerID,withContext context: Data?,invitationHandler: @escaPing (Bool,MCSession?) -> VoID) {} }

对于mac:

import MultipeerConnectivityclass ConnectionsManager: NSObject,MCNearbyServiceAdvertiserDelegate {let browser : MCNearbyServicebrowserlet advertiser: MCNearbyServiceAdvertiserlet peerID = MCPeerID(displayname: "macDevice")overrIDe init() {    advertiser = MCNearbyServiceAdvertiser(peer: MCPeerID(displayname: "mac Device"),serviceType: "example-test")    browser = MCNearbyServicebrowser(peer: MCPeerID(displayname: "mac Device"),serviceType: "example-test")    super.init()    advertiser.delegate = self    advertiser.startAdvertisingPeer()    browser.delegate = self    browser.startbrowsingForPeers()}deinit {    browser.stopbrowsingForPeers()    advertiser.stopAdvertisingPeer()}    func browser(_ browser: MCNearbyServicebrowser,lostPeer peerID: MCPeerID) {    }    func browser(_ browser: MCNearbyServicebrowser,dIDNotStartbrowsingForPeers error: Error) {    }    func browser(_ browser: MCNearbyServicebrowser,withdiscoveryInfo info: [String : String]?) {        print("FOUND!!!")    }    func advertiser(_ advertiser: MCNearbyServiceAdvertiser,dIDNotStartAdvertisingPeer error: Error) {    }    func advertiser(_ advertiser: MCNearbyServiceAdvertiser,MCSession?) -> VoID) {    }    }

谢谢,

解决方法 这种情况正在发生,因为设计将其可用性宣传给其他设备.

每当外围设备准备好进行通信时,它们就会以数据包的形式发送该信息,这称为广告.基于广告数据设计可以在发现时返回附加数据.

If the peripheral supports active scanning and the application is in the foreground,you will get two calls to the dIDdiscoverPeripheral. The first call contains the data in the advertising packet from the peripheral. The second call contains additional data from the scan response packet from the peripheral.

有关更多信息,请访问this thread.

怎么解决这个?您可以保留您收到的ID列表,并丢弃您为该特定对等ID获得的任何其他发现调用.

(有关bluetooth advertising的更多信息,请查看蓝牙文档)

总结

以上是内存溢出为你收集整理的ios – Multipeer Connectivity foundDevice两次全部内容,希望文章能够帮你解决ios – Multipeer Connectivity foundDevice两次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1062887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存