분류 전체보기 (91) 썸네일형 리스트형 몬터레이 한영 전환 shift-space 딜레이 없이 어떤 환경이건 한영 전환은 shift-space를 사용해야 하는 오래된 못된 버릇이 있어서, 환경이 바뀔 때마다 고생이다. 예전에는 설정 - 키보드 - 단축키 - 입력소스 에서 '입력 메뉴에서 다음 소스 선택' 에서 Fn-Shift-Space 를 누르면 Shift-Space가 등록되었는데, 몬터레이에서는 Fn-Shift-Space를 눌러도 Shift-Space 키가 등록되지 않는다. 여기 저기 좀 찾아보니 com.apple.symbolichotkeys.plist 를 수정하는 방법이 있어서 해봤지만, 일반적으로 하라는대로 하면 한영 전환 시에 shift를 좀 오래 누르고 있으면 'ABC/두벌식' 선택 창이 나오면서 한영 전환이 씹히는 일이 생긴다. '이전 입력 소스 선택' 을 Shift-Space로 설정했.. Flutter: svg 파일 사용하기. flutter_svg 색 제대로 나오지 않는 문제 디자인 팀에서 이미지 리소스 만들어줄 때 svg 형식으로 받으면 하나의 파일로 여러 크기 대응되는 등 .jpg나 .png 파일에 비해 장점이 있다. flutter_svg 패키지를 이용하면 다른 이미지 파일들처럼 간단하게 적용할 수 있는데, import 'package:flutter_svg/svg.dart'; // 대략 아래와 같이 간단하게 사용할 수 있다. Container( margin: const EdgeInsets.all(6.0), child: SvgPicture.asset( 'assets/icons/somesvgfile.svg', height: 25.0 ), ) flutter_svg 패키지는 svg 포맷의 style을 지원하지 않기 때문에 가끔 svg 파일로 export 할 때 style 사용하도.. 사진 파일의 exif, modification date 정리하기 exif 에 저장되어 있는 시간과 파일명에 있는 시간과, 파일 자체의 creation, modification date가 모두 동일하면 참으로 행복하겠지만, 여러 가지 경우에 이 정보들이 달라지곤 한다. 시스템 간 파일 복사 시 복사된 시간으로 creation, modification date 변경될 수 있음 필터 적용 등 사진 수정 시 수정된 시간으로 modification date 변경될 수 있음 필터 적용, crop 등 사진 수정 시 exif 데이터 삭제될 수 있음 특정 사진 앱으로 촬영한 경우 아예 exif date 생성되지 않는 경우 있음 해외에서 촬영한 경우 timezone 정보 반영되지 않는 경우 있음. 핸드폰으로 촬영하는 경우 exif 데이터는 현지 시간으로 반영되지만, 파일명이나 파일 생.. Flutter: GetX 와 FutureBuilder StatefulWidget 을 사용해서 만들었던 위젯을 GetX의 Dependency Injection을 이용해서 View - Controller 패턴으로 수정하는 과정에서 GetX와 FutureBuilder를 잘못 사용했던 케이스 // main.dart // App Main class class MyApp extends StatelessWidget { MyApp({Key? key}) : super(key: key); final AppController c = Get.put(AppController()); @override Widget build(BuildContext context) { return FutureBuilder( future: AppController.to.initialize(), buil.. Flutter Push Notification (2) - Heads up notification 플러터 푸시 알림 (2) - 상단 알림창 (Heads up notification) 띄우기 지난 포스트에서 언급했지만, 안드로이드/ iOS 모두 foreground 모드에서는 푸시 알림 수신 시에도 시스템 알림창이 뜨지 않는다. 앱 사용 중에 수신되는 푸시 알림에 반응하고 싶다면 FirebaseMessaging.onMessage 에서 직접 처리해줘야 한다. 간단하게 하려면 FirebaseMessagong.onMessage 에서 alert dialog 표시하도록 해주기만 하면 된다. FirebaseMessaging.onMessage.listen((RemoteMessage rm) { message.value = rm; Get.dialog(AlertDialog( title: Text(rm.notificatio.. Flutter: 푸시 알림 iOS 설정 - .p8 인증키 Firebase를 이용해서 Push Notification을 구현할 때 iOS는 안드로이드에 비해 뭔가 신경써줘야할 것이 많기도 하고, 문제가 생겼을 때 원인을 찾기도 좀 어렵다. 최근 애플이 인증 방법으로 인증서(.p12)를 이용한 방법에 인증키(.p8)를 이용해서 서버사이드 토큰을 이용하는 방식을 추가하면서 그나마 일이 좀 간단해졌다. 인증서를 이용할 때에는 Apple Developer 의 Identifiers 에서 해당 번들 ID의 configuration에서 인증서를 만들고 APN 인증서를 Firebase 콘솔에 등록해줘야 했다. 새로운 방식으로 인증키를 이용하면 앱마다 별도의 APN 인증서를 만들 필요가 없고 하나의 인증키(.p8)로 푸시 알림을 발송할 수 있다. Apple Developer 사.. Flutter Push Notification (1) - 푸시 알림 받기 이것은 며칠간 했던 닭질의 정리 차원에서 쓰는 글 flutter 앱에서 FCM 처리하는 예제는 참 많지만, firebase_messaging 버전이 낮거나, 필요한 기능들을 고려하지 않은 것이 대부분이라 고생 좀 했다. 필요해서 구현한 기능은 다음과 같다. android, iOS에서 모두 수신 가능(당연히)하고 동일하게 동작해야 한다. 앱이 foreground에 있을 때 heads-up notification 노출되어야 함 앱이 background에 있거나 종료 상태라도 수신 가능해야 하고 heads-up notification 노출되어야 함(잠김 상태가 아닐 때) 안드로이드 status bar 에 알림 아이콘이 정상적으로 표시되어야 함. Firebase Console 설정이나 인증서 발급 같은 부분은 .. [flutter] Firebase Analytics flutter 프로젝트에 Firebase Analytics를 넣어본다. 일단 Analytics가 동작하게 하는 것은 하라는대로만 하면 잘 된다. 디버그모드를 활성화하고, Firebase console의 DebugView에서 보면 기본적으로 동작하도록 설정되어 있는 screen_view, user_engagement 이벤트 같은 것들이 집계되는 것을 실시간으로 확인할 수 있다. ❯ adb shell setprop debug.firebase.analytics.app KR.CO.MY.PACKAGE.NAME 그런데, 잘 보면 screen_view 이벤트에 문제가 있다. 화면 이동해도 제대로 기록되지 않거나, 기록이 되어도 screen_class가 MainActivity 라는 정보만 남아 있어서 거의 쓸모가 없다.. 이전 1 ··· 6 7 8 9 10 11 12 다음