React Native Expo CLI를 활용하여 졸업프로젝트 앱을 개발하고 있다.
앱 내에서 블루투스 기능을 구현하고자 하여
Expo에서 Bluetooth Low Energy (BLE) 사용한다.
구현 과정에 대해 한국어 레퍼런스가 없어서 내가 포스팅을 시작했다.
제발 내가 성공하길.. 우리 프로젝트에 블루투스 꼭 할 수 있기를🙏
- 패키지 다운로드
npx expo install react-native-ble-plx
- App.json
{
"expo": {
"plugins": [
"expo-font",
"react-native-ble-plx",
{
// BLE가 백그라운드에서도 작동하고
"isBackgroundEnabled": true,
// 기기가 BLE 중심 및 주변 기기로 모두 작동
"modes": ["peripheral", "central"],
// 블루투스 사용 권한 허용 안내 메세지
"bluetoothAlwaysPermission": "Allow $(PRODUCT_NAME) to connect to bluetooth devices"
}
]
}
}
Expo의 BLE 설정 제한:
Expo Go 자체에 BLE 기능이 포함되어 있지 않기 때문에 BLE 기능을 사용할 수 없다.
따라서 실제 Android 또는 ios 기기를 사용해야 한다.
Expo 개발 빌드를 생성하여 BLE 기능을 테스트할 수 있다.
-> Expo Go 에서 BLE '테스트' 불가. 그러나 EAS 빌드 후 실제 배포 환경에서는 BLE 기능이 잘 작동하게 된다.
- 개발 빌드 만들기
개발 빌드 만들기 - Expo Documentation
나는 윈도우 환경의 노트북 + 아이폰 (주 기기 -테스트할 기기)
Windows 환경에서는 EAS 빌드를 통해 .ipa 파일을 생성 TestFlight를 통해 아이폰에서 설치해야 함.
-> 생각보다 귀찮다. 그래서 오래된 기기이지만 공기계인 안드로이드폰으로 테스트하겠다.
- 안드로이드로 실행 -> 디바이스에 앱 설치
npx expo run:android
변경사항 파일 목록에 굉장히 많은 파일이 생겼다.
그리고 안드로이드 테스트 폰에 앱이 설치되기까지 20분 넘게 걸렸다.
configuring 100% 가 된다고 끝이 아니다..
(우리 프로젝트, 블루투스 말고 거의 모든 기능을 완성한,, 그리고 꽤 기능이 많은,,
그래서 용량이 커서 그런가,,,)
이젠 executing 이 시작되었다......
30분 걸렸다...
53분의 기다림 끝에 드디어 QR이 떴다.
53분을 기다렸으니 연결이 원활할리 있나..
다시 실행한다..
다시 실행하면 2분컷~
QR을 통한 입장 오류 - 사용 가능한 데이터가 없습니다.
adb kill-server
adb start-server
adb devices
했더니 테스트 디바이스에 앱이 설치됐다!!!!
※ 안드로이드 폰에 앱을 설치 [ npx expo run:android ]
※ 앱을 설치했더라도 개발 서버는 실행해야한다. [ npx expo start ]