구글 플레이 콘솔에서는 앱이 출시되었다는 메세지를 받았지만 Google Play Store 에서 이름으로 검색하면 검색이 안될 수 있다. Google Play Store는 2019년 부터 적용한 앱의 활성도에 따라 검색 노출을 결정하는 알고리즘때문이다. 일단 구글 플레이 콘솔에서 아래와 같이 앱이 정상 출시되었다는 메세지를 받았다면 앱 페이지 링크를 통해 다운을 받을 수 있다. Google Play 에서 해당 앱 페이지는 구글 플레이 콘솔의 [대시보드] 메뉴를 선택하면 아래와 같이 "Goole play에서 보기" 링크로 확인 할 수 있다. 그리고 링크를 확인하지 않더라도 출시가 되었다면, 플레이 스토어 앱 페이지 형식에 해당 앱의 패키지 이름을 입력함으로써 앱 페이지를 접근할 수도 있다. 패키지 명은 m..
구글 플레이 콘솔에서 앱 출시를 위해 테블릿용 스크린샷을 입력할 때는 그냥 테블릿 PC에서 탭쳐한 스크린샷을 입력하면 된다. 하지만 앱 스토어 커넥트에서 앱 출시를 위해 테블릿용 스크린샷은 정해진 규격이 있다. 필수 사이즈는 2048x2732 또는 2732x2048 픽셀의 PNG 또는 JPEG 이어야 한다 (JPG 확장자일 경우 에러남...확장자를 JPEG 로 변경해줘야함) 이 크기의 스크린샷을 저장해주는 것은 iPad Pro 2세대, 3세대 뿐이다. 다른 장비는 이보다 작은 사이즈의 스크린샷이 저장된다. 회사에서 사용하고 있는 iPad Pro 11(4세대) 로 스크린 샷을 찍으면 2388x1668 로 저장된다. 따라서 앱 스토어 커넥트에 요구하는 스크린샷을 업로드하기 위해서는 캡쳐한 스크린샷을 이용해서..
이제 Flutter 입문서 마지막 책이다. 지금까지 본 책중에서 내용이 가장 알차다. 그렇다고 물론 초보가 이 책 한권을 본다면 다른 책을 안봐도 되는 것은 아닌 것 같다. 최소한 Do It 정도는 더보는 것을 추천한다. 이 두권을 보더라도 실제 앱을 짤 때에는 궁금하거나 모르는 부분이 무수히 나올텐데 이때부턴 구글링이 최고다. 몰랐던 부분, 기억하고 싶은 내용 다트 네이티브 플랫폼은 JIT(Just In Time) 컴파일 방식과 AOT(Ahead of TIme)컴파일 방식을 이용한다. JIT 컴파일 방식은 다트 가상 머신에서 제공하는 기능으로 코드의 변경된 사항을 처음부터 다시 컴파일 할 필요 없이 즉시 화면에 반영할 수 있는 핫 리로딩 기능, 실시간으로 메트릭스를 확인할 수 있는 기능 디버깅 기능을 ..
main() 에서 아래의 코드를 추가하면 시스템 UI 인 status bar(top) 와 navigation bar( bottom) 이 숨겨진 채로 Full screen에 대해서 앱의 UI 가 표시된다. SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []); 그런데 앱 실행중에 status bar, navigation bar 가 생성될 수 있는 제스쳐를 취하게 되면 숨겨두었던 system UI 가 나타나면서 UI 가 overflow 될 수 있다. 이를 감지해서 다시 system UI 를 숨겨 두기 위한 코드도 추가해 두었었다. system UI 를 감지하고 2초 후에 다시 원래 상태로 되돌리는 명령이다. SystemChrome.se..
버튼을 누르면 생성되는 팝업창의 위치를 버튼과 연관 되게 만들고 싶을 때, 버튼을 눌렀을 때 RenderBox 로 해당 버튼의 rending 관련 정보를 가져온뒤 offset 값을 화면애 대한 절대값으로 변환하여 이값을 기반하여 생성될 popup 창의 위치를 결정하는 파라미터에 넣어주면 된다. onPressed: (){ final RenderBox renderBox = context.findRenderObject() as RenderBox; final offset = renderBox.localToGlobal(Offset.zero); final left = // offset.dx 를 활용하여 popup 창의 왼쪽위 모서리 x좌표 값 계산하여 입력 final top = // offset.dy 를 활용하여 ..
TextFiled가 포커싱 되었을 때 생성되는 keyboard에 의해 가려진다면, TextField를 보이는(visible) 영역으로 가져오면(스크롤하면) 된다. 그러기 위해서는 우선 TextFiled가 scroll 가능한 widget에 쌓여져 있어야 한다. 보통 SingleChildScorllView를 이용해서 감싸고 child 에는 Column 을 이용해서, 표시하고자 하는 위젯들을 나열한다. 이 중에 TextForm filed 가 있을 것이다. 이제 keyboard가 생성되어었을때 스크롤을 얼마나 해야하는지 알아와야 한다. soft keyboard 는 system UI 이다. System UI에 의해 가려지는 크기를 받아오는 코드는 아래와 같다. MediaQuery.of(context).viewIn..
앞서본 3권의 책보다 이 책이 나에게는 더 도움이 되었다. 네가 잘 모르는 부분에 대한 내용을 포함하고 있었기 때문인데, 네이티브 API와 통신하기, 파이어베이스 애널리틱스, 푸시알림, 광고 넣기에 관한 내용이다. 사실 모바일 앱을 만든다고 하면 대부분 생각하는 아이디어들은 외부에 서버나 DB가 있어서 통신을 하며 데이터를 주고 받고, 그것을 프로세싱하여 화면에 보여주는 것들 일 텐데 이부분에 대한 내용이 대른 책들보다 많은 분량으로 설명하고 있고 여러 한가지가 아니라 3~4가지 케이스로 다르고 있어 이해하기에 도움이 되었다. jsonDecode() 함수는 JSON 형태의 데이터를 dynamic 형식의 리스트로 변환해서 반환해 준다. createState() 함수가 호출되어 상태가 생성되면 곧 바로 mo..
블루투스 scan 중 에 새로운 device 가 discover 되었다는 event를 받으면 호출 하는 함수를 아래와 같이 정의 하였다. ///--------------------------------------------------------------------------- /// 스캔된 장비 수 업데이트 메서드 /// - bleCommonData.isScanListUpdated 에서는 새로운 장비가 scan 되었을 때만 event 발생 /// 하고 기존에 scan 된 장비가 꺼졌을 때에 대해서는 인지하지 못하므로 이 메서드를 실행하여 update ///--------------------------------------------------------------------------- void up..
- Total
- Today
- Yesterday
- position
- 크롬
- Chrome
- addPostFrameCallback
- SizedBox
- 문제 해결
- BLE
- error
- 인사이트
- 이미지
- UX
- 앱개발
- Bluetooth
- firebase
- 디자인
- UI
- plugin
- hide
- 에러
- Syncfusion
- 한빛미디어
- TextField
- 다트
- TextFormField
- 앱
- IOS
- DART
- 플러터
- 앱 프로그래밍
- Flutter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |