alann-maulana / flutter_beacon

An hybrid iBeacon scanner and transmitter SDK for Flutter Android and iOS.
Apache License 2.0
117 stars 144 forks source link

Get Mac Address iOS #58

Closed alfin87aa closed 4 years ago

alfin87aa commented 4 years ago

Hi,

I have managed to differentiate beacons from one another with the same UUID on Android with Mac Address, but on iOS it can't get a Mac Address beacon, is there another method to distinguish beacons with the same UUID, Thank you very much for your great work.

dariocavada commented 4 years ago

Yes, each iBeacon has a major and minor code. You can use those codes to distinguish beacons.

When you listen to beacons, in the RangeResult you receive a list of Beacons. Each Beacon is an object with the following structure:

const Beacon({
    this.proximityUUID,
    this.macAddress,
    this.major,
    this.minor,
    this.rssi,
    this.txPower,
    this.accuracy,
    Proximity proximity,
  })
alfin87aa commented 4 years ago

Hi @dariocavada,

thanks for your help, i want asking how to change major or minor code of iBeacon in flutter, I tried searching but couldn't find it.

dariocavada commented 4 years ago

You cannot change major minor of iBeacon in flutter.

You have to change your iBeacon (major & minor) with a dedicated App.

For example I use BlueUp Beacons and in order to setup major/minor for that beacon I use the BlueApp Manager App.

https://www.blueupbeacons.com/index.php?page=managerapp

This procedure depends a lot on what brand of beacon you use.

SimeonVSimeonov commented 4 years ago

If you step into class Beacon, you'll see this

/// Class for managing Beacon object. class Beacon { /// The proximity UUID of beacon. final String proximityUUID;

/// The mac address of beacon. /// /// From iOS this value will be null final String macAddress;

/// The major value of beacon. final int major;

/// The minor value of beacon. final int minor;

/// The rssi value of beacon. final int rssi;

/// The transmission power of beacon. /// /// From iOS this value will be null final int txPower;

/// The accuracy of distance of beacon in meter. final double accuracy;

/// The proximity of beacon. final Proximity _proximity;

/// Create beacon object. const Beacon({ this.proximityUUID, this.macAddress, this.major, this.minor, this.rssi, this.txPower, this.accuracy, Proximity proximity, }) : this._proximity = proximity;

alann-maulana commented 4 years ago

Hi,

I have managed to differentiate beacons from one another with the same UUID on Android with Mac Address, but on iOS it can't get a Mac Address beacon, is there another method to distinguish beacons with the same UUID, Thank you very much for your great work.

No, you can't get mac address of beacon from iOS platform. Check this stackoverflow thread https://stackoverflow.com/questions/30722263/how-to-get-mac-address-of-beacon-when-ranging-and-monitoring-in-ios