49,500원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
수업자료 다운로드 후 알집풀기에서 오류가 발생합니다.
윈도우 사용중이고, 위와 같이 오류가 납니다.파일이 없는 것 같아요.
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
Retrofit 사용해보기 강의 2:20 쯤에 작성된 복사된 코드는 어디서 받나요?
Retrofit 사용해보기 강의 2:20 쯤에 작성된 복사된 코드는 어디서 받나요?
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
강의 FCM 소개 1:56에 디펜던시 추가하는게 최신버전으로 바뀐 듯합니다.
해당 강의 1:56초에 나오는implementation("com.google.firebase:firebase-messaging-ktx")문구를 복사해서 앱 수준의 그래들 파일에 디펜던시 항목에 넣는 것이 24년 5월 9일 기준으로 동일한 제목의 FCM 관련 사이트에 접속하니 내용이 달라져 있네요. 이제 앱 매니페스트 수정을 하는 것으로 바뀐 것 같아요.
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
매칭이 되면 알람 띄우기 강의에서 오류문구 해결방안이 궁금합니다.
private fun sendNotification(){ var builder = NotificationCompat.Builder(this, "Test_Channel") .setSmallIcon(R.drawable.ic_launcher_background) .setContentTitle("매칭완료") .setContentText("매칭이 완료되었습니다. 상대방도 나를 좋아합니다.") .setPriority(NotificationCompat.PRIORITY_DEFAULT) with(NotificationManagerCompat.from(this)) { notify(123, builder.build())위 명령어에서 with(NotificationManagerCompat.from(this)) { notify(123, builder.build())이 부분이 오류가 나는 이유가 뭘까요??
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
소스코드 다운이 불가능합니다..
소스코드가 다운로드 되지 않아, 링크로 접속하려 했는데링크 또한 접속이 불가능합니다 ㅠㅠ
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
나와 다른 성별의 유저 불러오기 강의에서 에뮬레이터에서 앱이 켜졌다가 바로 꺼져요.
강의 5:19까지 코드 입력완료하고, 오류코드도 식별되지 않는데,에뮬레이터를 실행시키면 앱이 실행되고 -> 스플릿화면 -> 메인화면이 뜨자말자 앱이 꺼지네요. 에뮬레이터 화면 상에는 '앱이름' keeps stopping 문구가 뜨며 종료되네요. 어떤 문제일까요?...
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
이미지 저장하기 강의에서 회원가입 후 이미지가 파이어 베이스에 저장되지 않습니다.
강의 제목 : 이미지 저장하기문의 내용 : 4분 43초에 회원가입 후 이미지파일이 파이어 베이스에 업로드 되는 영상처럼 강의 내용대로 코드를 구성하고 동일하게 진행 했으나 이미지가 업로드가 되지 않네요. 강의0:42에서 클라우드 스토리지 SDK 추가를 1:28에서 메모리 데이터에서 업로드도 영상과 동일하게 코드 불러오고 수정하고 따라해서 하면 코드에서는 오류가 발생하지 않는데 파이어 베이스로는 이미지가 업로드가 안 되네요
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
CardStackView 구현 강의에서 CardStackLayoutManager을 찾을 수가 없어요
코드를 쳐도 아래에 자동입력 뜨는게 없고, 그대로 작성해도 빨간 글씨로 떠요
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
안드로이드 스튜디오에서 프로젝트를 만들었으나, 레이아웃 폴더? 등 강사님께서 만든 프로젝트와 다르게 저는 폴더가 없습니다.
안드로이드 스튜디오에서 프로젝트를 만들었으나, 레이아웃 폴더? 등 강사님께서 만든 프로젝트와 다르게 저는 폴더가 없습니다. 혹시 어떤 문제일까요?dependen... 뭐시기 이거 하려하는데 gradle? 파일이 없는거같아요
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
프로젝트를 새로 만들었는데, gradle 파일에서 플러그인이 오류가 발생해요
프로젝트를 새로 만들었는데, gradle 파일에서 플러그인이 오류가 발생해요위 사진처럼 빨강색으로 뜨네요.어떻게 해결해야하나요?
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
cardstackview 이미지가 어디있나요?
[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)'cardStackView 구현' 강의 에서 이미지 파일을 강의 내에 파일로 등록해두었다고 하는데 어디서 다운로드 받나요?
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
storage 이미지파일 업로드가 안됩니다
안녕하세요 firebase storage에 png파일이 upload가 안됩니다 앱은 에러없이 잘 구현되는데 db에만 추가가 안되는것같습니다 코드는 https://github.com/jsistop16/dating-app 여기에 있습니다감사합니다
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
변수 초기화 위치
안녕하세요 강의도중 질문이 있습니다 loginActivity에서 login버튼 클릭시setOnClickListener안에서 email과 password값을 선언 및 초기화를 하면 정상적으로 화면 전환이되는데 setOnClickListener 윗줄에서 email과 password를 선언 및 초기화한 후에 해당 변수값을 가지고 auth.signInWithEmailAndPassword(email, password)이렇게 매개변수에 넣어주면 mainActivity로 이동하지않고 introActivity로 이동하더라구요 제가볼땐 변수의 초기화 위치가 클릭리스너 안이냐 바깥이냐는 크게 영향이 없을것같은데.. 이유가 뭔지 알수있을가요??
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
firebase auth
auth객체 생성하고 createUserWithEmailAndPassword 메소드 실행할때 에러가 발생했습니다에러현상은 intro layout에서 회원가입 클릭시 앱이 팅기면서 꺼지고로그를 살펴보면 FATAL EXCEPTION: main Process: com.example.datingapp, PID: 18621 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.datingapp/com.example.datingapp.auth.SignUpActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.datingapp. Make sure to call FirebaseApp.initializeApp(Context) first.at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4111) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443)at android.os.Handler.dispatchMessage(Handler.java:106)at android.os.Looper.loopOnce(Looper.java:226)at android.os.Looper.loop(Looper.java:313)at android.app.ActivityThread.main(ActivityThread.java:8751)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this processcom.example.datingapp. Make sure to call FirebaseApp.initializeApp(Context) first.at com.google.firebase.FirebaseApp.getInstance(FirebaseApp.java:179)at com.google.firebase.auth.FirebaseAuth.getInstance(com.google.firebase:firebase-auth@@22.1.2:1)at com.google.firebase.auth.ktx.AuthKt.getAuth(com.google.firebase:firebase-auth-ktx@@22.1.2:8)at com.example.datingapp.auth.SignUpActivity.onCreate(SignUpActivity.kt:23)at android.app.Activity.performCreate(Activity.java:8290)at android.app.Activity.performCreate(Activity.java:8270)at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4085)at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8751) at java.lang.reflect.Method.invoke(NativeMethod) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) 이렇게 발생하고 있습니다 전체코드는 https://github.com/jsistop16/dating-app여기에 push해놓았습니다
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
splash manifest 설정시 에러
안녕하세요 e: This version (1.4.4) of the Compose Compiler requires Kotlin version 1.8.10 but you appear to be using Kotlin version 1.9.0 which is not known to be compatible. Please consult the Compose-Kotlin compatibility map located at https://developer.android.com/jetpack/androidx/releases/compose-kotlin to choose a compatible version pair (or suppressKotlinVersionCompatibilityCheck but don't say I didn't warn you!). 스플래시 화면 만들고 컴파일 돌리면 이런 에러가 발생하는데구글링해서 build.gradle에서 버전을 수정해봐도 계속 같은 에러가 발생합니다...
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
Notification 구현시 컴파일에러
class MainActivity : AppCompatActivity() { lateinit var cardStackAdapter: CardStackAdapter lateinit var manager : CardStackLayoutManager private val TAG = "MainActivity" private val usersDataList = mutableListOf<UserDataModel>() private var userCount = 0 private val uid =FireBaseAuthUtils.getUid() private lateinit var currentUserGender : String private val REQUEST_CODE = 123 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val isTiramisuOrHigher = Build.VERSION.SDK_INT>= Build.VERSION_CODES.TIRAMISU val notificationPermission = Manifest.permission.POST_NOTIFICATIONS var hasNotificationPermission = if (isTiramisuOrHigher) ContextCompat.checkSelfPermission(this,notificationPermission) == PackageManager.PERMISSION_GRANTED else true val launcher = registerForActivityResult(ActivityResultContracts.RequestPermission()){ hasNotificationPermission = it } if(!hasNotificationPermission) { launcher.launch(notificationPermission) } val setting = findViewById<ImageView>(R.id.settingIcon) setting.setOnClickListener{ // val auth = Firebase.auth // auth.signOut() // val intent = Intent(this,SettingActivity::class.java) startActivity(intent) } val cardStackView = findViewById<CardStackView>(R.id.cardStackView) manager = CardStackLayoutManager(baseContext,object : CardStackListener{ override fun onCardDragging(direction: Direction?, ratio: Float) { } override fun onCardSwiped(direction: Direction?) { if(direction == Direction.Right){ userLikeOtherUser(uid,usersDataList[userCount].uid.toString()) } if(direction == Direction.Left){ } userCount = userCount + 1 if(userCount == usersDataList.count()){ getUserDataList(currentUserGender) Toast.makeText(this@MainActivity,"유저 리스트를 새롭게 받아옵니다.",Toast.LENGTH_SHORT).show() } } override fun onCardRewound() { } override fun onCardCanceled() { } override fun onCardAppeared(view: View?, position: Int) { } override fun onCardDisappeared(view: View?, position: Int) { } }) cardStackAdapter = CardStackAdapter(baseContext,usersDataList) cardStackView.layoutManager = manager cardStackView.adapter = cardStackAdapter // getUserDataList() getMyUserData() } private fun getMyUserData(){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { val data = dataSnapshot.getValue(UserDataModel::class.java) Log.d(TAG,data.toString()) currentUserGender = data?.gender.toString() getUserDataList(currentUserGender) } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userInfoRef.child(uid).addValueEventListener(postListener) } private fun getUserDataList(currentUserGender : String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // val post = dataSnapshot.getValue<Post>() for(dataModel in dataSnapshot.children){ val user = dataModel.getValue(UserDataModel::class.java) if(!user!!.gender.toString().equals(currentUserGender)){ usersDataList.add(user!!) } } cardStackAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userInfoRef.addValueEventListener(postListener) } private fun userLikeOtherUser(myUid : String, otherUid : String) { FireBaseRef.userLikeRef.child(myUid).child(otherUid).setValue("true") getOtherUserLikeList(otherUid) } private fun getOtherUserLikeList(otherUid : String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { // 여기 리스트에서 나의 UID가 있나 확인 필요 for(dataModel in dataSnapshot.children){ val likeUserKey = dataModel.key.toString() if(likeUserKey.equals(uid)){ Toast.makeText(this@MainActivity,"매칭완료",Toast.LENGTH_SHORT).show() createNotificationChannel() sendNotification() } } } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FireBaseRef.userLikeRef.child(otherUid).addValueEventListener(postListener) } // 알림 private fun createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 채널 이름 val name = "name" val descriptionText = "description" val importance = NotificationManager.IMPORTANCE_DEFAULT val channel = NotificationChannel("TestChannel", name, importance).apply { description = descriptionText } // Register the channel with the system. val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) } } private fun sendNotification(){ var builder = NotificationCompat.Builder(this, "TestChannel") .setSmallIcon(R.drawable.ic_launcher_background) .setContentTitle("My notification") .setContentText("Hello World!") .setPriority(NotificationCompat.PRIORITY_DEFAULT) .setCategory(NotificationCompat.CATEGORY_MESSAGE) with(NotificationManagerCompat.from(this)){ notify(123,builder.build()) } } }안녕하세요. 알림기능 구현하는데notify(123,builder.build()) 위 부분에서 Call requires permission which may be rejected by user: code should explicitly check to see if permission is available (with checkPermission) or explicitly handle a potential SecurityException 이런 에러가 아직도 발생하고있는데 어떻게 해결할수 있을지 자세한 답변을 부탁드려도될까요? 구글링 해봤는데 명확히 어떤코드 입력해서 컴파일에러를 지울 수 있을지 모르겠습니다. 빠른답변 부탁드리겠습니다.
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
말씀하신대로 다 해봤는데도 안되서 질문합니다.
섹션 7. 유저가 직접 푸시 메세지 보내기(FCM) - 라이브러리 추가, Firebase Service에서 메세지 받기 부분까지 잘 됐는데Retrofit 사용해보기 ~ Invalid 캐시 삭제 까지 따라해봤는데도 "다른 사람에게 PUSH 날리기" 부분이 안되서 파일 남깁니다.혹시나 API키를 잘못 입력했나 싶어서 API키도 포함해서 메일로 보내드렸는데 확인하고 답장부탁드려요!(메일 명 : "다른 사람에게 PUSH 날리기" 에러 프로젝트 압축파일)
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
nickname, age, city 데이터 안 보임
안녕하세요!다음과 같이 코드를 작성하고, 오류도 뜨지 않지만보여야 할 데이터가 보이지 않습니다..(메인 화면입니다.)뭐가 문젠가요?!
- 해결됨[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
firebase 세팅 후 실행 오류
mingreen0107/test1 (github.com)안녕하세요!혹시 몰라 깃허브 주소도 남겨둡니다.처음엔 이 오류가 뜨다가나중엔 이 오류가 뜹니다.어떻게 해야 하나요?감사합니다 :)
- 미해결[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
섹션 6 - 토큰 받아와서 테스트 메세지 보내기가 안되네욥 ㅠ
안녕하세요! 토큰 잘받아와서 firebase에 저장하였고해당 토큰으로 테스트메세지를 전송하는데테스트 버튼을 눌러도 아무 반응이 없네용.. 혹시 해당 토큰이 해당 에뮬레이터에 정확한 토큰값이 맞는지 확인하는방법은 로그를 찍어보는 방법말고는 없는거죠? 에뮬레이터 새로 생성해서 해도 동일한거같아서..어떻게 해결을 해야할지 막막하네요 ㅠ혹시 코드가 잘못된건지... 질문드립니다 ㅠㅠ https://github.com/Daseul727/Mobile-Skill-Up.git여기서 basic 폴더가 해당 소스코드입니다!