본문 바로가기

일::개발

(68)
Flutter: 안드로이드 소셜로그인/ invalid android_key_hash Firebase를 이용한 구글 인증이나 카카오 인증을 구현하려면 각각의 플랫폼 관리 페이지(Firebase Console, https://developer.kakao.com)에 안드로이드 키 해시를 등록해줘야 한다. 이전 포스트(https://uaremine.tistory.com/32 )에서 다뤘지만, 간단하게 다시 설명하면, 만들어진 바이너리는 개발자가 만든 정상적인 파일임을 확인하기 위해 개발자의 private키로 서명해서 배포하고, 다운로드한 클라이언트(안드로이드)는 개발자의 공개키로 해당 바이너리의 서명을 확인하는 절차를 거친다. 개발자 --> (개발자의 키로 서명) --> 서명된 바이너리 --> (개발자의 공개키로 확인) --> 클라이언트 그러나 요즘은 구글플레이에서 배포용 앱 서명을 제공하기 ..
Flutter: facebook event SDK 적용 (2) https://uaremine.tistory.com/58 까지 앱 등록을 마쳤다면 이제 Events Manager 설정을 해보자. Events manager(https://business.facebook.com/events_manager2) 작업에는 facebook business 관리자 권한이 필요하다. Data sources에서 생성한 앱을 선택하면 몇 가지 탭이 나오는데, 목표는 Overview 나 Test events 탭에 앱의 동작 이벤트가 기록되도록 하는 것이다. 일단 Settings 탭에 들어가서 필요한 설정을 하면 되는데, 아마 iOS SDK를 업데이트하라는 메시지가 떠 있을 것이다. Update SDK를 클릭한 후에 Facebook SDK 탭에서 다 했다 라고 체크해야 없어진다. 이 작업..
Flutter: facebook event SDK 적용 (1) 어찌어찌 출시해서 스스로 잘 돌아가고 있던 (다른 말로 하면 신경 끄고 있던) 앱에 facebook 광고를 위해 SDK를 적용해달라는 요청이 들어왔다. 앱에 광고를 노출하는 것은 아니고, facebook 에 앱 설치 광고를 내고, 그 효과를 측정하기 위해 앱에서 이벤트를 리포트하는 기능을 넣어달라는 것이다. facebook에서 제공하는 자료가 좀 불친절하고(내용이 부실하고 그나마 여기 저기 흩어져 있음), iOS 14.5부터 새롭게 추가된 기능&정책이 있어서 생각보다 시행착오를 많이 겪고 오래 걸린 작업이었다. 이미(!) 잊어버린 것도 있고, 빠뜨린 작업도 있을 수 있지만, 기록 차원에서 했던 일들을 정리해본다. 전반적인 내용은 facebook 문서(https://developers.facebook.co..
Flutter Push Notification (4) - 푸시 알림에 이미지 넣어서 보내기 계획에 없었지만, 된다고 해서 해본 푸시 알림에 이미지 넣어서 보내는 방법. 일단 안드로이드의 경우에는 특별히 해줄 것이 없다. 그냥 메시지 전송할 때 이미지 URL을 넣어서 보내주기만 하면 된다. Firebase Console 에서는 테스트 메시지 발송할 때 Notification image 필드에 이미지 URL을 넣어주면 되고, Firebase API를 이용해서 서버에서 발송할 경우에는 메시지를 아래와 같이 구성해주면 된다. message = { notification: { body: 'This is an FCM notification that displays an image!', title: 'FCM Notification', }, android: { notification: { image: '{i..
Flutter: iOS 빌드 문제. Module not found, No such module iOS 에서 빌드가 안 되는 문제가 가끔 발생한다. 가장 흔히 나오는 문제가 시뮬레이터에서 안 되는 것인데, 보통은 xcode 의 Runner > Build Settings > Excluded Architectures 를 i386 arm64 둘 다 지정해주면 해결된다. 유사한 해결책으로 Podfile에 post_install do |installer| installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |build_configuration| build_configuration.build_settings['EXCLUDED_ARC..
Flutter: You need to use a Theme.AppCompat theme (or descendant) with this activity 네이버 로그인 (https://pub.dev/packages/flutter_naver_login)을 구현하다 보니 E/MethodChannel#flutter_naver_login( 7529): java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 이런 에러가 나와버렸는데, 꼭 네이버 로그인에서만 발생하는 문제는 아니고, 카카오 로그인에서 나오는 경우도 있고 그렇다. 이것은 Android Activity(이 경우에는 네이버 로그인에서 사용하는)에 AppCompat theme이 적용되어야 하기 때문이다. 간단하게 수정하고자 하면 styles.xml 에서 Normal T..
Flutter: Firebase를 이용한 사용자 인증 (1) 이전 프로젝트에서는 사용자 인증에 Firebase를 사용하지 않았다. Custom Backend 에서 별도로 사용자의 부가 정보를 관리해야 할 필요가 있었고, 백엔드에서 사용하는 legacy 회원 정보 테이블과 Firebase의 사용자 정보 간 동기화 문제 등등 복잡함이 예상되는 부분이 있어서 Firebase를 사용하지 않고, 개별 플랫폼 (이메일/암호, 구글, 애플, 네이버, 카카오)에 각각 연동해서 인증 정보를 받아오는 방식으로 구현했다. 이렇게 해도 큰 어려움은 없었는데, 사실 제일 복잡한 부분은 인증 공급자의 인증을 거친 사용자가 백엔드에 REST API로 요청할 때 어떻게 인증할 것인가 하는 문제였다. 인증 공급자별로 제대로 된 인증을 거친 사용자인지 다시 확인해야 했는데, 자세한 내용은 설명하..
Flutter: getx routing to same page with different data. (controller 중복으로 만들기 feat. tag) 다른 데이터를 가진 같은 페이지로 이동할 때의 문제다. product id 를 파라미터로 가지는 ProductScreen 페이지 간 이동하는 간단한 예를 보면 import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:route_sample/app_pages.dart'; import 'dart:math'; class ProductScreen extends GetView { const ProductScreen({Key? key}) : super(key: key); @override Widget build(BuildContext context) { Get.put(ProductScreenController()); ..