묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Flutter 초입문 왕초보편
Emulate Device Frame 관련 질문입니다.
안녕하세요. 앱 개발에도 관심이 생겨 Flutter에 도전을 하고 있습니다. 초입문편이 있길래 구매하여 강의 시청 중에 있는데요. 강의에서 보여지는 Android Studio 버전이 저와 달라서 일단 헷갈리는 부분이 있습니다. 현재 다운로드하는 시점에서는 Android Studio Otter로 되어 있는데, 현재 보여주시는 UI와 상당히 달라져 있어서 약간 진행하는데 텀이 발생하고 있습니다. 제가 설치한 Android Studio Otter에서는 Device Manager > device > Edit 을 클릭하여 들어가 보아도 Device Frame 관련 체크박스가 보이지 않습니다. Otter에서는 따로 지원하지 않는 것인가요?참고로 밖으로 꺼내지 않고 사이드바에 있을 경우엔 따로 Device Frame을 제거할 수 있더라구요 .. 밖으로 빼냈을 경우에만 Device Frame 체크박스를 찾을 수 없는 상황입니다 ..!
-
미해결[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!
카카오 SUPABASE SDK 로그인은 ?
카카오 SUPABASE SDK 로그인 및 CLI 업로드 강의는 어떤걸 참조해야 하나요?이것떄문에 강의 구매했는데... 뭔가 참조하여 따라하기 어렵네요
-
해결됨Flutter 앱 개발 기초
수강 기간 연장 부탁드립니다.
안녕하세요. 플러터 공부를 하다가 다른 업무를 해야되서 공부를 뒤로 미루게되어 다시 공부를 해야되는데 기간이 얼마 남지 않았습니다 ㅠㅠ 혹시 기초/실전 모두 듣고 있는데, 2개 강의 모두 1년씩 연장 가능할까? Flutter 앱 개발 기초Flutter 앱 개발 실전
-
미해결[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!
화면이 나오지 않네요
소리는 나오는데 화면이 전혀 안나오세요 강이는 애플앱스토어 배포하기 입니다.. 마우스를 아래 로가 미리보기를 보면 미리보기 화면에는 영상이 있는것 같아 보이는데..
-
해결됨Flutter 앱 개발 실전
context.read<LangService>().toggleLang 해도 언어가 변경되는 이유
context.read<LangService>().toggleLang를 사용해도 언어가 변경되었는데요그 이유는 MyApp에서 locale을 watch로 구독하고있어서 그런건가요? 원리가 궁금합니다. class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ S.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: S.delegate.supportedLocales, debugShowCheckedModeBanner: false, locale: context.watch<LangService>().locale, theme: context.themeService.themeData, home: ShoppingView(), ); } } class SettingBottomSheet extends StatelessWidget { const SettingBottomSheet({super.key}); @override Widget build(BuildContext context) { final bool isLightTheme = context.theme.brightness == Brightness.light; return BaseBottomSheet( child: Column( mainAxisSize: MainAxisSize.min, children: [ // Theme Tile Tile( icon: isLightTheme ? 'sunny' : 'moon', title: S.current.theme, subtitle: isLightTheme ? S.current.light : S.current.dark, onPressed: context.read<ThemeService>().toggleTheme, ), // Lang Tile Tile( icon: 'language', title: S.current.language, subtitle: IntlHelper.isKo ? S.current.ko : S.current.en, onPressed: context.read<LangService>().toggleLang, ), ], ), ); } }
-
해결됨Flutter 앱 개발 기초
설정 질문
오류 메시지 ``` Launching lib\main.dart on sdk gphone64 x86 64 in debug mode... ����: �⺻ Ŭ���� worker.org.gradle.process.internal.worker.GradleWorkerMain��(��) ã�ų� �ε��� �� �����ϴ�. ����: java.lang.ClassNotFoundException: worker.org.gradle.process.internal.worker.GradleWorkerMain Could not write standard input to Gradle Worker Daemon 2. java.io.IOException: 파이프가 닫히는 중입니다 at java.base/java.io.FileOutputStream.writeBytes(Native Method) at java.base/java.io.FileOutputStream.write(Unknown Source) at java.base/java.io.BufferedOutputStream.flushBuffer(Unknown Source) at java.base/java.io.BufferedOutputStream.implFlush(Unknown Source) at java.base/java.io.BufferedOutputStream.flush(Unknown Source) at org.gradle.process.internal.streams.ExecOutputHandleRunner.writeBuffer(ExecOutputHandleRunner.java:98) at org.gradle.process.internal.streams.ExecOutputHandleRunner.forwardContent(ExecOutputHandleRunner.java:85) at org.gradle.process.internal.streams.ExecOutputHandleRunner.run(ExecOutputHandleRunner.java:64) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.AbstractManagedExecutor$1.run(AbstractManagedExecutor.java:48) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) FAILURE: Build failed with an exception. What went wrong: Execution failed for task ':gradle:compileGroovy'. > Failed to run Gradle Worker Daemon > Process 'Gradle Worker Daemon 2' finished with non-zero exit value 1 Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 1s Error: Gradle task assembleDebug failed with exit code 1 ``` flutter doctorDoctor summary (to see all details, run flutter doctor -v):[√] Flutter (Channel stable, 3.29.3, on Microsoft Windows [Version 10.0.26200.6899], locale ko-KR)[√] Windows Version (11 Education 64-bit, 25H2, 2009)[√] Android toolchain - develop for Android devices (Android SDK version 36.1.0)[√] Chrome - develop for the web[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.14.18 (October 2025))[√] Android Studio (version 2024.3)[√] IntelliJ IDEA Ultimate Edition (version 2025.1)[√] VS Code (version 1.106.2)[√] Connected device (4 available)[√] Network resources• No issues found! vs 화면 1)현재 문제를 요약해보면 설정에 따라 휴대폰 띄우기까지 성공2) 세모 눌러서 run without Debugging 하면 1번의 메시지 출력 왜 안될까요..?
-
미해결비전공자 혼자서 하루 만에 수익화 앱 출시하기
개인사업자 조직계정 등록에 관하여
선생님 안녕하세요 개인사업자로 duns를 발급받아 조직계정으로 계정을 생성을 하면 테스트없이 앱출시가 가능한걸로 알고 있는데 여기저기 확인해보니 인앱결제, 구독 서비스 같은 경우는 문제가 될 확률이 매우높고(개인사업자가 조직계정을 생성하였기때문에), 하지만 애드몹 광고 수익은 문제가 되지 않을거라는 말이 있는데 어떻게 생각하시는지 궁금합니다. 이것도 약간으 꼼수가 되는건지 여기서 꼼수라하는것은 조직계정을 발급을 통한 테스트 패스입니다.
-
해결됨[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!
text overflow 관련 문의
테스트 오버플로어 상황이.. 강의 내용과 다르게 화면이 좀 다르게 나오는데.. 버전 차이인가요?
-
미해결Flutter 중급 1편 - 클린 아키텍처
MVVM, 클린 아키텍처 관련 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 좋은 강의 정말 잘 듣고 있습니다.강의를 통해 MVVM 구조와 클린 아키텍처에 대해 배우고, 진행 중인 프로젝트에 적용해보고 있는데, 어려움을 겪고 있어 조언을 구하고자 질문 글을 올리게 되었습니다. 회원 정보 관련api - repository - use_case - view_model -view 구조에서,로그인 화면에서 로그인 후 받아오는 회원 정보를 어디에 저장해 두어야 되는지 잘 모르겠습니다.회원정보는 마이페이지, 피드 등 여러 view에 사용되는데,그렇다면 각각의 view_model은 회원정보를 어디에서 읽어오는게 좋은지 궁금합니다. 새로 고침 관련note_app 강의 예제 에서는 노트 목록과 삭제가 하나의 화면(notes_view)에 있습니다.제가 구현하는 구조에서는 두 개의 view로 분리되어 있습니다.1번 view: 노트 목록 화면2번 view: 노트 상세 + 삭제 화면각 화면은 서로 다른 view_model을 사용합니다.노트 상세 화면에서 노트를 삭제했을 때, 노트 목록 화면을 어떻게 다시 업데이트 하는 것이 적절한지 고민입니다.생각나는 방법을 아래에 작성해보았는데, 어떤 방법을 사용하는 게 깔끔할지, 이외에 더 좋은 방법이 있는지 궁금합니다.두 개의 view가 하나의 view_model을 공용으로 사용 노트 상세 화면에서 노트 목록 view_model를 read 하여 _loadNotes()를 직접 호출노트 목록도 회원 정보처럼 별도로 저장해두고, view_model은 읽어오기 감사합니다!
-
해결됨누구보다 빠르게 배우는 Springboot + Flutter RestAPI 게시판 만들기
device선택시
디바이스 선택시 Chrome(web)과 저의 실물 핸드폰 연결해서 했더니 안드로이드 스튜디오 코드는 잘 돌아갑니다.하지만 BoardViewModel.dart 코드에서 설정한 url그대로 따라 쳤는데swagger ui에서계속 화면처럼 response body가 비어있습니다.. 계속나와서 혹시 전체 소스코드 공유 안될까요??
-
해결됨누구보다 빠르게 배우는 Springboot + Flutter RestAPI 게시판 만들기
노션에 cors 문서가 안보입니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다
강의 따라서 프로젝트를 진행하다가 '출근 가능/불가능 확인 로직'에서 문제를 발견했습니다. 이것저것 시도하다가 드디어 해결해서 과정 공유해봅니다.기존 코드 /// 기존의 initState() @override void initState() { super.initState(); // (아마도) 이 시점에서 오류 발생 ↓ Geolocator.getPositionStream().listen((eventPosition) { // 목적지 위치 var start = defaultLatLng; // 현재 위치 var end = LatLng(eventPosition.latitude, eventPosition.longitude); /// 거리 구하기 var distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); /// 거리가 `boundary` 내부에 들어오는지 확인 setState(() => mayChoolCheck = distance <= boundary); }); } /// 위젯 빌드 @override Widget build(BuildContext context) { /// AppBar: 제목 & 액션 버튼1 var appBar = AppBar( title: Text( '오늘도 출근', style: TextStyle(color: Colors.blue, fontWeight: FontWeight.w700), ), centerTitle: true, // 안드로이드 설정 actions: <Widget>[ /// 원래 위치로 돌아오기 버튼 IconButton( onPressed: returnToMyLocation, icon: Icon(Icons.my_location), color: Colors.blue, ), ], ); return Scaffold( backgroundColor: Colors.white, appBar: appBar, /// 권한 요청을 위한 빌더 body: FutureBuilder<void>( future: checkPermission(), // 위치 권한 묻기 대화상자는 이 시점에 생성됨 builder: (context, snapshot) { if (snapshot.hasError) { return Center(child: Text('${snapshot.error}')); } // 이하 위젯 생성 코드... }, ), ); } /// Future<void> checkPermission() async { /// 위치 서비스 활성화 여부 var isLocationServiceEnabled = await Geolocator.isLocationServiceEnabled(); /// 활성화되지 않았다면 에러 발생 (앱이 현재 위치를 사용할 수 없으므로) assert(isLocationServiceEnabled, '위치 기능을 활성화하지 않았습니다.'); /// 권한 상태 확인 var checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } /// 시뮬레이션 상 `checkedPermission`이 위치 권한 허용 상태가 아니면 에러 유도 assert( checkedPermission == LocationPermission.always || checkedPermission == LocationPermission.whileInUse, '위치 권한을 허용해주세요.', ); }오류 추적오류의 원인은 'User denied permissions .. device's location.' 즉, 사용자가 위치 권한을 아직 허용하지 않은 시점에 위치 권한이 필요한 함수를 호출하려고 함. [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: User denied permissions to access the device's location. E/flutter (13339): #0 GeolocatorAndroid.getPositionStream.<anonymous closure> (package:geolocator_android/src/geolocator_android.dart:201:9) E/flutter (13339): #1 Stream.handleError.<anonymous closure> (dart:async/stream.dart:961:16) E/flutter (13339): #2 HandleErrorStream.handleError (dart:async/stream_pipe.dart:303:17) ...#0 에서 이미 getPositionStream().<anonymous closure> 로 추적한 걸로 보아, Geolocator.getPositionStream() 함수 호출 시점에 오류 발생한 것이 분명함.문제의 원인과 해결책 (일부 ChatGPT의 도움을 받음)문제의 가장 중요한 핵심은, 처음 앱 실행 시 위치 권한 확인 로직이 완전히 끝나기 전에 위치 권한 허용이 이루어지지 않으므로, 앱 재시작 이전까지 '사용자 현재 위치 추적 기능'이 활성화되지 않고, 추가로 관련 함수에서 오류 발생 가능성이 있음.그러므로 checkPermission() 함수는 initState()에서 최초 한 번만 실행하고, Geolocator.getpositionStream() 함수는 따로 분리하여 checkPermission()이 정확히 끝난 시점에 실행되도록 로직을 변경함. 1. checkPermission() 의 리턴 타입을 Future<void> 에서 Future<bool>로 변환 /// 위치 권한 확인 및 부여 함수 Future<bool> checkPermission() async { /// 위치 서비스 활성화 여부 var isLocationServiceEnabled = await Geolocator.isLocationServiceEnabled(); assert(isLocationServiceEnabled, '위치 기능을 활성화하지 않았습니다.'); /// 권한 상태 확인 var checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } /// 위치 권한 허용 여부를 리턴 return checkedPermission == LocationPermission.always || checkedPermission == LocationPermission.whileInUse; }2. initState()에서 checkPermission()과 addSubscription() 함수를 차례로 실행 (.then() 메소드 활용) @override void initState() { super.initState(); checkPermission().then((permitted) { if (permitted) addSubscription(); }); } /// addSubscriptsion 함수 void addSubscription() { /// 리스너 함수: 출근체크 가능 여부 확인하기 Geolocator.getPositionStream().listen((eventPosition) { // 목적지 위치 var start = defaultLatLng; // 현재 위치 var end = LatLng(eventPosition.latitude, eventPosition.longitude); /// 거리 구하기 var distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); /// 거리가 `boundary` 내부에 들어오는지 확인 setState(() => mayChoolCheck = distance <= boundary); }); } 3. 위젯 재빌드 시 FutureBuilder의 future 함수 재호출을 방지하기 위해 비동기 결과를 미리 필드로 빼놓기ChatGPT는 이를 'Cashing Future' 라고 부른다고 함.(이 코드 부분에 중요한 로직이 하나 빠져서 방금 재수정했습니다.)/// 권한 확인 여부 리턴 값 late final Future<bool> permissionFuture; @override void initState() { super.initState(); /// checkPermission()의 결과를 값으로 저장 permissionFuture = checkPermission().then((permitted) { if (permitted) addSubscription(); return permitted; }); } /// 위젯 빌드 @override Widget build(BuildContext context) { /// AppBar: 제목 & 액션 버튼1 var appBar = AppBar(...); return Scaffold( backgroundColor: Colors.white, appBar: appBar, /// 권한 요청을 위한 빌더 body: FutureBuilder<bool>( future: permissionFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting || !snapshot.hasData) { return ColoredBox( color: Colors.blue, child: Center(child: CircularProgressIndicator()), ); } /// snapshot.data가 false 값인 경우는 사용자가 위치 권한 요청을 거부했을 때 if (snapshot.hasError || snapshot.data! == false) { return Center(child: Text('위치 권한을 허용해주세요.\n${snapshot.error}')); } /// 이하 위젯 생성 코드 ... }, ), ); } 이렇게 했을 때 앱 삭제 후 다시 빌드 했을 때, 그리고 재시작 했을 때도 정상적으로 잘 작동했습니다.코드가 많이 훼손된 느낌도 들긴 하지만.. 나름대로 공부가 돼서 기분은 좋네요.주저리주저리 쓰느라 정신 없었는데.. 잘 이해가 안 되거나 하고 싶은 피드백이 있다면 꼭 말씀해주세요!아무쪼록 끝까지 읽어주셔서 감사합니다.
-
해결됨Flutter 앱 개발 기초
수강 기간 연장 신청 요청드립니다.
기초 와 실전을 같이 듣고 있습니다.한번 더 듣고 싶어서 기간 연장을 요청드립니다.
-
해결됨Flutter 앱 개발 실전
수강 기간 연장 신청 요청드립니다.
현재 공부 중인데요. 한번 더 상세하게 듣고 싶어서요.
-
해결됨Flutter 앱 개발 기초
수강기간 연장 부탁드립니다.
오픈 카카오톡으로 문의주시면 더 빠르게 답변 받으실 수 있어요 🙂 수강기간 연장 부탁드립니다.
-
해결됨Flutter 앱 개발 기초
수강기간 연장 부탁드립니다.
오픈 카카오톡으로 문의주시면 더 빠르게 답변 받으실 수 있어요 🙂 수강기간 연장 부탁드립니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
StatefulWidget 실습 에러가 발생합니다.[해결완료]
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.오타가 있었네요 ^^;;해결 되었습니다. 안녕하세요.StatefulWidget 생성해보기 강의의 코드를 그대로 작성했는데요. 첨부 사진과 같은 에러가 발생합니다.코드 이상은 없는듯 한데, 저장하니 에러가 발생합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Video Player 프로젝트에 대한 추가 질문
선생님 강의 너무 잘 듣고 있습니다.video_player 프로젝트 관련 내용 모두 확인했고, 여기에 하나만 간단하게 비디오에서 나가기 버튼을 추가해보았습니다. 일단 제가 작성해본 코드부터 공유하겠습니다.테스트 상 로고화면으로는 잘 돌아갑니다. _VideoPlayerState의 dispose() 함수도 정상적으로 실행돼요. 다만 로직이 실제 앱에서 실행되어도 충분히 괜찮은 로직일지, 혹은 더 안전한 방법이나 기타 필요한 수정사항이 있다면 알려주시면 감사하겠습니다. _HomeScreenState 내부class _HomeScreenState extends State<HomeScreen> { // bool showVideo = false; XFile? video; @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black87, body: video == null ? _VideoSelector(onLogoTap: openPicker) : _VideoPlayer( video: video!, onImageIconPressed: openPicker, onExitIconPressed: exitPlayer, // 나가기 버튼 함수 ), ); } void openPicker() async { // setState(() => showVideo = true); /// ImageSource.gallary: 사진 앱에 저장된 이미지/비디오 파일 선택 /// ImageSource.camera: 디바이스가 즉시 촬영한 이미지/비디오 파일 선택 const source = ImageSource.gallery; /// pickVideo(): 사용자 비디오 파일을 선택 final picked = await ImagePicker().pickVideo(source: source); // print(picked); setState(() => video = picked); } /// ↓↓ 여기에 비디오에서 나가기 로직 추가 void exitPlayer() { setState(() { // print('info: exitIconButton 클릭'); video = null; }); } } _VideoPlayerState 내부class _VideoPlayerState extends State<_VideoPlayer> { late VideoPlayerController _videoPlayerController; bool showButton = true; // ... /// 위젯 상태 제거 @override void dispose() { _videoPlayerController.dispose(); print('info: 비디오 플레이어 종료 중..'); super.dispose(); } @override Widget build(BuildContext context) { final VideoPlayerValue videoPlayer = _videoPlayerController.value; // final position = videoPlayer.position; // final duration = videoPlayer.duration; return Center( child: AspectRatio( aspectRatio: videoPlayer.aspectRatio, child: GestureDetector( onTap: () => setState(() => showButton = !showButton), child: Stack( children: <Widget>[ VideoPlayer(_videoPlayerController), /// 영상 화면 커버 if (showButton) Container( width: double.infinity, height: double.infinity, color: Colors.black.withAlpha(128), ), /// 재생/중지와 뒤로&앞으로 버튼 if (showButton) _PlayButton( isPlaying: videoPlayer.isPlaying, onReversePressed: onReversePressed, onPlayPressed: onPlayPressed, onForwardPressed: onForwardPressed, ), /// 하단 슬라이더 if (showButton) _BottomSlider( position: videoPlayer.position, duration: videoPlayer.duration, onSliderMoved: onSliderMoved, ), /// 화면 상단 버튼 if (showButton) _TopButtons( // ← 여기를 2개의 버튼으로 확장 onExitPressed: widget.onExitIconPressed, onImagePressed: widget.onImageIconPressed, ), ], ), ), ), ); } _TopButtons 내부class _TopButtons extends StatelessWidget { final VoidCallback onImagePressed; final VoidCallback onExitPressed; const _TopButtons({ required this.onExitPressed, required this.onImagePressed, }); @override Widget build(BuildContext context) { return Positioned( left: 4, right: 4, top: 0, // Row로 감싸고 왼쪽에 '나가기' 버튼 추가 child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: <IconButton>[ // 나가기 버튼 IconButton( onPressed: onExitPressed, icon: Icon(Icons.chevron_left, color: Colors.white), ), // 다른 영상 선택 버튼 IconButton( onPressed: onImagePressed, icon: Icon(Icons.photo_camera_back, color: Colors.white), ), ], ), ); } }
-
해결됨비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
lovable cloud 에서 카카오 로그인이 지원이 안됩니다.
[진도] 실용적인 도구 만들기 1: 개인 비용 관리 앱 (Supabase, 로그인 기능)[질문]강의에서는 supabase 를 사용해서 카카오 로그인을 추가 했으나현재 lovable 에서는 업데이트가 되어서ai 로 명령시 supabase 를 추가로 연결 하지 않고 자동 Lovable Cloud 기능을 탑재합니다. 이경우카카오 기능 추가를 명령하면 아래와 같이 지원이 안된다고 나옵니다. 그럼 supabase 추가로 연결 해야하나요? 카카오 로그인은 Lovable Cloud에서 기본 지원하지 않습니다. 현재 사용 가능한 소셜 로그인은 다음과 같습니다:지원되는 소셜 로그인:Google ✅ (현재 활성화됨)GitHubFacebookAppleDiscordTwitterSlackSpotify카카오 로그인을 원하시면 커스텀 OAuth 구현이나 카카오 REST API를 직접 연동해야 하는데, 이는 복잡한 작업입니다.추천 방안:구글 로그인 사용 (대부분의 한국 사용자가 구글 계정 보유)이메일/비밀번호 로그인 사용카카오 로그인은 Lovable Cloud에서 기본 지원하지 않습니다. 현재 사용 가능한 소셜 로그인은 다음과 같습니다:지원되는 소셜 로그인:Google ✅ (현재 활성화됨)GitHubFacebookAppleDiscordTwitterSlackSpotify카카오 로그인을 원하시면 커스텀 OAuth 구현이나 카카오 REST API를 직접 연동해야 하는데, 이는 복잡한 작업입니다.추천 방안:구글 로그인 사용 (대부분의 한국 사용자가 구글 계정 보유)이메일/비밀번호 로그인 사용
-
미해결비개발자 4주만에 수익화 서비스 만들기: AI 바이브코딩 웹 + 앱 ALL IN ONE
Google Search Console에 Sitemaps
Google Search Console에 Sitemaps로 이동하여 sitemap.xml, rss.xml, robots.txt를 제출하였습니다.robots.txt는 오류 발생, rss.xml, sitemap.xml은 가져올 수 없음 이라는 상태가 발생하였는데GPT나 Cursor에게도 물어봤는데 같은 에러 발생하였습니다.어떻게 해결하면 될까요?네이버 서치 어드바이저에는 등록을 완료하였는데 특이사항은 없습니다.