forked from AcaMate/AcaMate_iOS
[✨] 로그인 동작 변경 및 회원가입 화면 작성 중
This commit is contained in:
parent
655144a2ee
commit
a825ff927e
|
@ -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;
|
||||
|
|
Binary file not shown.
|
@ -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)")
|
||||
// 서버로 디바이스 토큰 전달 로직 추가
|
||||
}
|
||||
|
||||
|
|
|
@ -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), "애플 계정으로 시작하기")
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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?
|
||||
}
|
||||
|
|
|
@ -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<User_Token>.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<User_Token> 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<User_Token>.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<User_Token> 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<User_Token> 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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user