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つめのエラー
プログラム自体にはエラーは発生せず,実機でデバッグしているときにクラッシュ.
1 2 3 4 5 6 7 |
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行目あたり.
1 2 3 4 5 |
_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