diff --git a/AcaMate.xcodeproj/project.pbxproj b/AcaMate.xcodeproj/project.pbxproj index dee89eb..50d9bde 100644 --- a/AcaMate.xcodeproj/project.pbxproj +++ b/AcaMate.xcodeproj/project.pbxproj @@ -328,7 +328,7 @@ SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited) DEV LOCAL"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited) DEV"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = 1; diff --git a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate index 946ca47..32e9431 100644 Binary files a/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate and b/AcaMate.xcodeproj/project.xcworkspace/xcuserdata/tanine.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AcaMate/0. Setup/AppDelegate.swift b/AcaMate/0. Setup/AppDelegate.swift index 7a3a4e0..42b56ec 100644 --- a/AcaMate/0. Setup/AppDelegate.swift +++ b/AcaMate/0. Setup/AppDelegate.swift @@ -17,9 +17,6 @@ import FirebaseCore class AppDelegate: NSObject, UIApplicationDelegate { - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { printLog("Start Set AppDelegate") @@ -69,8 +66,6 @@ class AppDelegate: NSObject, UIApplicationDelegate { } extension AppDelegate: UNUserNotificationCenterDelegate { - - // func registerForRemoteNotifications() { UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in print("Permission granted: \(granted)") @@ -88,7 +83,9 @@ extension AppDelegate: UNUserNotificationCenterDelegate { // 디바이스 토큰 등록 성공 시 func application(_ application: UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02.2hX", $1)}) - printLog("APNs 디바이스 토큰: \(deviceTokenString)") + @UserDefault(key: "pushToken", defaultValue: "") var pushToken + pushToken = deviceTokenString + printLog("APNs 디바이스 푸시 토큰: \(deviceTokenString)") // 서버로 디바이스 토큰 전달 로직 추가 } diff --git a/AcaMate/1. View/11. Intro & Login/LoginView.swift b/AcaMate/1. View/11. Intro & Login/LoginView.swift index ffdfefb..0e593d9 100644 --- a/AcaMate/1. View/11. Intro & Login/LoginView.swift +++ b/AcaMate/1. View/11. Intro & Login/LoginView.swift @@ -36,7 +36,7 @@ struct LoginView: View { // MARK: - TODO, 애플 계정 로그인 구현 // appVM.naviState.set(act: .ADD, path: .SelectAcademy(bids: ["AA0000", "AA0001"])) loginVM.toggleLoading = true - loginVM.loginTest(type: .Kakao, id: "TestSNSID1@#") +// loginVM.loginTest(type: .Kakao, id: "TestSNSID1@#") } label: { makeButton(image: Image(.Logo.appleIcon), color: Color(.Text.black), "애플 계정으로 시작하기") diff --git a/AcaMate/1. View/11. Intro & Login/RegisterView.swift b/AcaMate/1. View/11. Intro & Login/RegisterView.swift index 474c0a6..daad524 100644 --- a/AcaMate/1. View/11. Intro & Login/RegisterView.swift +++ b/AcaMate/1. View/11. Intro & Login/RegisterView.swift @@ -37,6 +37,8 @@ struct RegisterView: View { .environment(\.locale, Locale(identifier: "ko_KR")) .font(.nps(size: 16)) .padding() + + } .frame(maxWidth: .infinity, maxHeight: .infinity) } @@ -45,6 +47,7 @@ struct RegisterView: View { topVM.setLeftBtn(Image(.Icon.left), size: CGPoint(x: 40, y: 40), action: leftAct) topVM.setRightBtn(size: CGPoint(x: 40, y: 40), action: rightAct) + } } diff --git a/AcaMate/2. Model/User Data.swift b/AcaMate/2. Model/User Data.swift index fab4b60..2ff603c 100644 --- a/AcaMate/2. Model/User Data.swift +++ b/AcaMate/2. Model/User Data.swift @@ -22,3 +22,19 @@ struct SummaryUser { var userID: String var email: String } + +struct RegisterUserInfo { + var name: String + var birth: Date + var type: String = "UT05" + var device_id: String // 진짜 디바이스 아이디 + var auto_login_yn: String + var push_token: String // APNs 용 토큰 + var email: String + var phone: String + var address: String + var sns_id: String + var sns_type: String + var location_yn, camera_yn, photo_yn, push_yn: Bool? + var market_app_yn, market_sms_yn, market_email_yn: Bool? +} diff --git a/AcaMate/3. ViewModel/LoginViewModel.swift b/AcaMate/3. ViewModel/LoginViewModel.swift index 91a99bf..112721f 100644 --- a/AcaMate/3. ViewModel/LoginViewModel.swift +++ b/AcaMate/3. ViewModel/LoginViewModel.swift @@ -17,59 +17,6 @@ class LoginViewModel: ObservableObject { var bidArray: [String] = [] - func loginTest(type: SNSLoginType, id: String) { - loadAPIData(url: "\(API_URL)", - path: "/api/v1/in/user/login", - parameters: [ - "acctype": "\(type == .Apple ? "ST00": "ST01")", - "sns_id": "\(id)" - ], - decodingType: APIResponse.self) - .sink { [weak self] completion in - // API 자체적으로 내보내는 에러는 여기서 거를거고 - switch completion { - case .failure(let error): - self?.toggleLoading = false - printLog("\(error)") - case .finished: - self?.toggleLoading = false - } - } receiveValue: { [weak self] response in - guard let self = self else { return } - guard let userToken = response as? APIResponse else {return} - - switch userToken.status.code { - case .success(let code): - if code == "000" { - @UserDefault(key: "token", defaultValue: "accToken") var accToken - @UserDefault(key: "refresh", defaultValue: "arefreshToken") var refreshToken - - if let token = userToken.data.toStringDict()["token"], - let refresh = userToken.data.toStringDict()["refresh"] { - printLog(token) - printLog(refresh) - accToken = token - refreshToken = refresh - self.pathName = .SelectAcademy - - } - } else { - self.pathName = .Register(type, id: "\(id)") - - } - case .anything(let apiCode): - // MARK: TO-DO - // 회원가입 로직 - printLog("\(apiCode) : 로그인 정보 없음") -// self.pathName = .Register(type, id: "\(id)") - default: - // 그외에 서버에서 처리를 하다가 문제가 생겨서 발생하는 에러는 여기로 보낼거임 - printLog("ERROR") - } - } - .store(in: &cancellables) - } - func loginAction(type: SNSLoginType) { LoginController().login(type) .flatMap{ snsId in @@ -80,26 +27,52 @@ class LoginViewModel: ObservableObject { "sns_id": "\(snsId.snsId)" ], decodingType: APIResponse.self) - + .map { response in + return (snsId: snsId.snsId, response: response) + } } .sink { [weak self] completion in + // API 자체적으로 내보내는 에러는 여기서 거를거고 switch completion { case .failure(let error): - printLog("\(error)") self?.toggleLoading = false + printLog("\(error)") case .finished: self?.toggleLoading = false } } receiveValue: { [weak self] response in guard let self = self else { return } - guard let userAcademy = response as? APIResponse else {return} - if let bids = userAcademy.data.toStringDict()["bid"] { - printLog(bids) - if let bidArray: [String] = jsonToSwift(bids) { - self.pathName = .SelectAcademy + guard let userToken = response.response as? APIResponse else {return} + var snsId = response.snsId + + switch userToken.status.code { + case .success(let code): + if code == "000" { + @UserDefault(key: "token", defaultValue: "accToken") var accToken + @UserDefault(key: "refresh", defaultValue: "refreshToken") var refreshToken + + if let token = userToken.data.toStringDict()["token"], + let refresh = userToken.data.toStringDict()["refresh"] { + printLog(token) + printLog(refresh) + accToken = token + refreshToken = refresh + self.pathName = .SelectAcademy + + } } else { - printLog("JSON 변환 실패") + // 회원가입 진행 + // 여기다가 타입도 추가해야 함 + self.pathName = .Register(type, id: "\(snsId)") } + case .anything(let apiCode): + // MARK: TO-DO + // 회원가입 로직 + printLog("\(apiCode) : 로그인 정보 없음") +// self.pathName = .Register(type, id: "\(id)") + default: + // 그외에 서버에서 처리를 하다가 문제가 생겨서 발생하는 에러는 여기로 보낼거임 + printLog("ERROR") } } .store(in: &cancellables)