我一直試圖在兩個iOS設備之間設置'雙向iBeacon通信'。我試圖使用This Technique on PubNub,我想我已經設法啓動發射器。但是,這兩款手機都不匹配,如video所示。帶有2個iPhone的雙向iBeacon
由於我缺乏經驗,本指南對我來說不是很清楚,請查看我的代碼。我沒有收到任何錯誤,並且兩個iPhone都能正常工作,並且我可以看到Emitter正確傳輸,但它們不匹配。
對於這兩個發射器和接收器,我已導入CoreLocation和CoreBluetooth框架和我在info.plist中通過點擊添加「NSLocationAlwaysUsageDescription」和「NSLocationWhenInUseUsageDescription」的「+」(而不是從源代碼編碼的)。
發射器代碼:
class ViewController: UIViewController, CBPeripheralManagerDelegate {
var major = 9
var minor = 6
let uuid = NSUUID(UUIDString: "0CF052C2-97CA-407C-84F8-B62AAC4E9020")
var peripheralManager = CBPeripheralManager()
var advertisedData = NSDictionary()
}
override func viewDidLoad() {
super.viewDidLoad()
let region = CLBeaconRegion(proximityUUID: uuid, major: 9, minor: 6, identifier: "com.yourcampany.example")
self.advertisedData = region.peripheralDataWithMeasuredPower(nil)
self.peripheralManager = CBPeripheralManager(delegate: self, queue: nil, options: nil)
func peripheralManagerDidUpdateState(peripheral: CBPeripheralManager!) {
switch peripheral.state {
case CBPeripheralManagerState.PoweredOn:
self.peripheralManager.startAdvertising(advertisedData)
self.powerON.text = "Power ON"
default:
break
}
}
接收器代碼:
class ViewController: UIViewController, CLLocationManagerDelegate {
@IBOutlet var label: UILabel!
var region = CLBeaconRegion()
var locationManager = CLLocationManager()
let uuid = NSUUID(UUIDString: "0CF052C2-97CA-407C-84F8-B62AAC4E9020")
override func viewDidLoad() {
super.viewDidLoad()
region = CLBeaconRegion(proximityUUID: uuid, identifier: "com.yourcampany.example")
self.locationManager.delegate = self
self.locationManager.requestAlwaysAuthorization()
self.locationManager.startMonitoringForRegion(self.region)
}
func locationManager(manager: CLLocationManager!, didRangeBeacons beacons: NSArray!, inRegion region: CLBeaconRegion!) {
var beacon = beacons.lastObject as CLBeacon
switch beacon.proximity {
case CLProximity.Immediate:
self.label.text = "Immediate"
case CLProximity.Near:
self.label.text = "Near"
default:
self.label.text = "AAA"
}
}
我Main.storyboard標籤不設置任何一個值 「立竿見影」 的,「近「或」AAA「。
另外,如果我想傳輸一個字符串(由5-6個字符組成),最合乎邏輯的方法是什麼。我已經讀過不可能發送大量數據,但是如何處理一些字符串? [也許使用CentralManager和PeripheralManager]你需要確保做
你得到提示接收器上的位置,使用情況如何?如果沒有,您可能沒有正確設置權限。 – davidgyoung 2015-04-04 21:26:41
你似乎沒有調用'startRangingBeaconsInRegion:' – Paulw11 2015-04-04 21:54:37
@davidyoung:通過說出提示,你的意思是控制檯?我沒有得到任何提示在控制檯接收器(而我在控制檯的發射器)。 此外,我非常確定發射器工作正常,因爲當藍牙關閉時,我有一個文本標籤,說加載,但是當我打開藍牙,它說「開機」。 @ Paulw11:我應該在哪裏放置'startRangingBeaconsInRegion:'?我很困擾。 – senty 2015-04-04 21:58:18