iOS/Objective C
iOS 개발 제약 사항 정리 (Bluetooth)
디안.
2017. 12. 27. 14:30
android를 하다가 최근 iOS로 넘어오게 되면서 개발하는데 있어 android보다 iOS에 개발 제약 사항이 많다는 사실을 알게 되었습니다.
개발에 필요한 부분을 찾으면서 하나 하나 적다보니 너무 뒤죽박죽 이기도해서 한번에 살펴보는 것이 좋을 것 같네요.
사실 구글에 검색하다보면 다 알게되는 내용이지만,
다른 분들도 개발하는데 있어 도움이 되는 글이 되었으면 좋겠습니다.
1. Bluetooth ON / OFF
private api인 BluetoothManager framework가 있지만, 일반 앱에서는 사용할 수 없다고 합니다.
(* private api 사용 시 앱 등록과정에서 reject 된다고 함.)
apple에서는 해당 기능을 사용하지 않고 사용자가 bluetooth 상태 변화를 control하도록 유도하는 것을 권장하고 있습니다.
app 내에서 bluetooth 상태를 받아 상태 체크 후 사용자에게 setting page를 출력 시키는 정도의 기능 유도는 가능합니다.
- bluetooth state 얻기 (*Objective C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | bluetoothManager = [[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()]; swith ( bluetoothManager.state ) { case CBCentralManagerStateResetting: break; case CBCentralManagerStateUnsupported: break; case CBCentralManagerStateUnauthorized: break; case CBCentralManagerStatePoweredOff: break; case CBCentralManagerStatePoweredOn: break; } | cs |
Bluetooth 상태 확인 관련 api : https://developer.apple.com/documentation/corebluetooth/cbcentralmanager?language=objc
- bluetooth setting.page 연결 code (*Objective C)
1 2 3 4 5 6 7 | NSString *btUrl = @"App-Prefs:root=Bluetooth"; if( [[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)] ) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:btUrl] options:@{}completionHandler:^(BOOL success) { NSLog(@"URL open"); }]; } | cs |