- 개발가이드
- iOS
iOS
오픈Api 연동 프로세스
- step 1.검색
- step 2.연결
- step 3.페어링
- step 4.정보수집
- step 5.데이터저장
- step 6.서비스제공
참고사항
- 파일 추가
아래 그림의 1번 상자와 같이 데모앱의 Bluetooth 폴더 하위에 .h, .m 등 2개의 파일을 생성한다.
파일명 중복을 막기 위해 “장치명칭.h”, “장치명칭.m” 처럼 각 파일 앞에 참여업체에서 사용할 장치명칭을 붙여서 파일을 생성합니다.
오픈Api 참여업체 장치정보 추가
- Device Scan
데모앱 MainViewController.m –(void)viewDidLoad 함수를 확인하면 위 그림의 2번 상자와 같이 [[jBleManager jUtilsDeviceInfo] setJBleDeviceInfo:typeList:nameList:] 함수를 이용하여 참여업체에서 연동할 장치의 정보를 추가 할 수 있습니다.
setJBleDeviceInfo 함수는 장치종류, 장치 검색 시 사용할 ServiceUUID, 장치명칭 등 총 3가지 매개변수를 받습니다.
- 장치종류는 JENUMDeviceServiceType 참고하세요. 아래 그림의 3번 상자 내용을 확인하면 “pedometer”로 검색할 장치종류가 설정되어 있습니다. 참여업체에서 추가하려는 장치종류로 변경 후 사용하시면 됩니다.
- ServiceUUID는 장치 검색 시 필요한 항목입니다. 검색 시 사용자가 선택한 장치종류만 검색하기 때문에 수집합니다.
- 장치명칭은 고정으로 사용되는 부분만 입력합니다. 예를 들어 블루투스 검색 시 확인되는 장치명칭이 “band-3300”일 때 “bnad” 부분은 고정이고 “3300” 부분이 장치마다 다를 경우 “band” 부분만 입력합니다. Dictionary를 이용하여 키에 참여업체명칭을 설정하여 장치명칭과 함께 전달합니다.
- Device Pairing 및 Data Sync
데모앱 MainViewController.m –(void)jBleManagerDidConnect: 함수를 확인하면 검색 혹은 이미 저장되어 있는 장치 선택 시 참여업체에서 구현한 objc 파일을 호출하기 전에 검색된 장치와 연결 후 위 그림의 4번 상자와 같이 “장치명칭” objc 파일을 호출합니다.
- Pairing 및 Data Sync는 동일한 jBleManagerDidConnect 함수를 이용하며, 참여업체에서 구현한 objc 파일을 실행합니다.
데모앱 MainViewController.m –(void)jBleActionPairDeviceResult: 페어링 성공 시 참여업체에서 [jBleManager pairDevice:deviceInfo:deviceType:] 함수를 호출하면 실행되는 함수입니다. 수집된 장치정보가 확인되면 페어링이 정상으로 처리된 것입니다.
- 페어링 도중 문제 발생시 [jBleManager pairDeviceFailed:] 함수를 호출하여 데모앱 MainViewController.m –(void)jBleActionPairDeviceFailed: 함수에 실패 정보를 전달합니다.
데모앱 MainViewController.m –(void)jBleActionSyncDataResult:deviceType: 함수는 장치에 저장되어 있는 측정 정보를 수신하고 수신된 데이터에 맞는 객체에 담아 [jBleManager deviceSyncData:deviceType:] 함수를 통해 호출 페이지에 정보를 전달합니다. 전달된 정보가 확인되면 데이터 수신이 정상으로 처리된 것입니다.
- 정보 수신 중 문제 발생시 [jBleManager deviceSyncDataFailed:] 함수를 호출하여 데모앱 MainViewController.m –(void)jBleActionSyncDataFailed: 함수에 실패 정보를 전달합니다.
참여업체 개발
- Header File
필요한 변수 선언(선택) 및 +(instancetype)sharedInstance; 함수를 필수로 정의합니다.
- Objective-C File
iOS 오픈Api는 기본적으로 CoreBluetooth를 사용하여 모든 기능을 구현했습니다. 장치 접속 이후 정보를 설정 또는 수집에 대한 부분은 delegate 함수명칭만 다르고 기능은 동일합니다. 페어링 기능 구현과 정보수신 기능 구현을 Objective-C File 하나로 처리합니다.
- jBleManager 객체를 사용하기 위해 AppDelegate.h, <CoreBluetooth/CoreBluetooth.h>, <JOpenApi/JOpenApi-Swift.h> 등 Header File을 추가합니다.
- CBPeripheralDelegate 기능을 그대로 구현하고 있는 JBLEManagerPeripheralDelegate를 상속받아 구현에 필요한 함수를 정의합니다. JBLEManagerDeviceControllDelegate는 호출 페이지에서 실행되고 있는 장치에 추가 명령을 내리기 위한 delegate입니다.
- (instancetype)sharedInstance 함수를 선언하고 필요한 변수 초기화를 진행합니다. 위 그림 1번 상자와 같이 JBLEManagerPeripheralDelegate를 상속받아 구현하였기 때문에 jBleManager.peripheralDelegate 변수에 해당 장치를 설정합니다.
페어링과 정보수신을 구분하는 구분자는 jBleManager.isPairingDevice 이며 isPairingDevice 값이 true이면 페어링, false이면 정보 수신으로 판단합니다.
해당 값을 결정하는 조건은 사용자가 선택한 장치의 종류가 이미 저장되어 있는지를 판단하고 저장되어 있는 장치가 없을 경우 isPairingDevice 변수에 true 값을 설정합니다.
위 그림처럼 jBleManager.isPairingDevice 값이 true면 [jBleManager pairDevice:deviceInfo:deviceType:] 함수를 호출하여 수집된 장치정보를 Dictionary 형태로 전달합니다.
JBLEManagerPeripheralDelegate 기능을 이용하여 장치에 저장되어 있는 측정 정보를 수신 받고, 위 그림 2번 상자와 같이 수신 받은 정보에 맞는 표준인터페이스를 선택하여 객체 속성에 맞는 정보를 빠짐없이 설정합니다.
설정한 객체를 위 그림 3번 상자와 같이 [jBleManager deviceSyncData:deviceType:] 함수에 전달합니다.
- 첨부된 그림은 데모앱에서만 사용하는 샘플 코드이다. 참여업체에 맞게 구현하면 됩니다.