The only peripheral ID that Core Bluetooth API offers after discovery is CBPeripheral.identifier.

Not MAC address.
You can’t get MAC address via Core Bluetooth. There is no public API for this. If this is an internal or jailbreak application you can get the value of the kLockdownBluetoothAddressKey key via liblockdown.dylib.

identifier has been moved to CBPeer class, which is base class of CBPeripheral. So net effect is the same.

A different central will return a different id for the same peripheral.

A central will return the same id for a peripheral. Thus, it can be stored and used later per Apple doc.
However, I don’t know how long it will return the same id.
Important: assuming the peripheral doesn’t use Bluetooth 4.0 Privacy feature, which changes its ID periodically.

Notes
– If you have OS X Mavericks, change 5.18 in the above commands to 5.16.
– If you have OS X Mountain Lion, change 5.18 in the above commands to 5.12.
– You must install Xcode Command Line Tools in advance.
– If you don’t run the 2nd command, you will get the error below:$ git svn
Can't locate loadable object for module SVN::_Core in @INC (@INC contains: /usr/local/git/lib/perl5/site_perl/5.18.2/darwin-thread-multi-2level /usr/local/git/lib/perl5/site_perl/5.18.2 /usr/local/git/lib/perl5/site_perl /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at /System/Library/Perl/Extras/5.18/SVN/Base.pm line 59.
BEGIN failed--compilation aborted at /System/Library/Perl/Extras/5.18/SVN/Core.pm line 5.
Compilation failed in require at /usr/local/git/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
BEGIN failed--compilation aborted at /usr/local/git/lib/perl5/site_perl/Git/SVN/Utils.pm line 6.
Compilation failed in require at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 26.
BEGIN failed--compilation aborted at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 33.
Compilation failed in require at /usr/local/git/libexec/git-core/git-svn line 25.
BEGIN failed--compilation aborted at /usr/local/git/libexec/git-core/git-svn line 25.

– If you don’t want to make symbolic link, you can install using this command:brew install git svn

Recent Apple’s announcement of new Swift programming language caused confusion among developers. Swift, which should be called Apple Swift, is new programing language from Apple. Other Swift languages are not Apple Swift.