Bluetooth LE for iOS
iOSにおけるBLE(Bluetooth Low Energy)開発をUnityで行うasset. ネイティブでiOSアプリを書けない自分の様なエンジニアには嬉しいasettだが,サンプルシーンを実機でデバッグするのにかなり苦戦したのでそのメモ.
https://assetstore.unity.com/packages/tools/network/bluetooth-le-for-ios-16354
1つめのエラー
‘release’ is unavailable: not available in automatic reference counting mode
対処法
- xCodeで”Unity-iPhone”のBuild settingを開く
- Apple Clang – Warings – Objective-CのOverriding Deprecated Objective-C MethodsをYes->Noに変更する.
2つめのエラー
Showing Recent Messages
Undefined symbol: OBJC_CLASS$CBMutableCharacteristic
Undefined symbol: _OBJC_CLASS$CBMutableService
Undefined symbol: _OBJC_CLASS$CBCentralManager
Undefined symbol: _OBJC_CLASS$CBPeripheralManager
Undefined symbol: _OBJC_CLASS$_CBUUID
Undefined symbol: _CBAdvertisementDataLocalNameKey
Undefined symbol: _CBAdvertisementDataServiceUUIDsKey
これは完全に自分の知識不足,bluetoothのパッケージがxCodeプロジェクト上に無いというエラー.
- “Unity-iPhone”のGeneralを開く
- Frameworks,Libraries, and Embedded Contentに
CoreBluetooth.frameworkを追加する.
3つめのエラー
プログラム自体にはエラーは発生せず,実機でデバッグしているときにクラッシュ.
for (UIScreen* screen in _displayConnection)
{
if (screen == mainScreen)
continue;
screens[screenCount++] = (__bridge void*)screen;
}
この部分で,なぞのクラッシュThread 1: EXC_BAD_ACCESS (code=1, address=0x10)が発生.良くわかならいがこのサイトを考に_displayConnectionの箇所を以下のように解決.大体294行目あたり.
_displayConnection = [[NSMapTable
mapTableWithKeyOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
valueOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
] retain];
参考サイト:https://stackoverflow.com/questions/33972747/build-crashes-on-displayavailable-in-xcode
4つめのエラー
またもやクラッシュ.
UnityGfxDeviceWorker EXC_BAD_ACCESS
次はUnity側の設定を変更.
Player Settings > Other Settings > Auto Graphics APIをMetalからOpenGLES2に変更.

参考サイト:http://ktk-kumamoto.hatenablog.com/entry/2017/03/17/211037
