diff --git a/README.md b/README.md index da2eb9f2..909faaee 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@ # 한줄 소개 러닝과 일상을 Connect하다! 데일리 러닝앱 서비스 Runnect 🏃 -### 앱스토어 링크: [Appstore](https://apps.apple.com/kr/app/runnect-%EC%BD%94%EC%8A%A4%EB%A5%BC-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EA%B3%B5%EC%9C%A0%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%BC%EB%A6%AC-%EB%9F%AC%EB%8B%9D%EC%95%B1/id1663884202) v2.1.0 +### 앱스토어 링크: [Appstore](https://apps.apple.com/kr/app/runnect-%EC%BD%94%EC%8A%A4%EB%A5%BC-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EA%B3%B5%EC%9C%A0%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%BC%EB%A6%AC-%EB%9F%AC%EB%8B%9D%EC%95%B1/id1663884202) v2.2.0 ![1](https://github.com/thingineeer/Runnect-iOS/assets/88179341/937f9e65-61e5-4298-b703-bc2cf5022bf6) ![2](https://github.com/thingineeer/Runnect-iOS/assets/88179341/ad913367-65f2-4839-9658-e538bccf2d6c)
-### iOS Developers <~ing> +## iOS Developers <~ing> | | :---------:|:----------: [이명진](https://github.com/thingineeer) | [이소진](https://github.com/513sojin) | diff --git a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj index c7383617..ec0f8485 100644 --- a/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj +++ b/Runnect-iOS/Runnect-iOS.xcodeproj/project.pbxproj @@ -1387,10 +1387,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runnect-iOS/Pods-Runnect-iOS-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runnect-iOS/Pods-Runnect-iOS-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runnect-iOS/Pods-Runnect-iOS-frameworks.sh\"\n"; @@ -1700,7 +1704,7 @@ CODE_SIGN_ENTITLEMENTS = "Runnect-iOS/Runnect-iOSDebug.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2024.1128.0304; + CURRENT_PROJECT_VERSION = 2025.0513.2138; DEVELOPMENT_TEAM = 8Q4H7X3Q58; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = "Runnect-iOS/Info.plist"; @@ -1718,7 +1722,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.1.0; + MARKETING_VERSION = 2.2.0; PRODUCT_BUNDLE_IDENTIFIER = "com.runnect.Runnect-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1741,7 +1745,7 @@ CODE_SIGN_ENTITLEMENTS = "Runnect-iOS/Runnect-iOS.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2024.1128.0304; + CURRENT_PROJECT_VERSION = 2025.0513.2138; DEVELOPMENT_TEAM = 8Q4H7X3Q58; GENERATE_INFOPLIST_FILE = NO; INFOPLIST_FILE = "Runnect-iOS/Info.plist"; @@ -1759,7 +1763,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.1.0; + MARKETING_VERSION = 2.2.0; PRODUCT_BUNDLE_IDENTIFIER = "com.runnect.Runnect-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Runnect-iOS/Runnect-iOS/Global/Extension/UIKit+/UIButton+.swift b/Runnect-iOS/Runnect-iOS/Global/Extension/UIKit+/UIButton+.swift index 70dcfdce..947b2097 100644 --- a/Runnect-iOS/Runnect-iOS/Global/Extension/UIKit+/UIButton+.swift +++ b/Runnect-iOS/Runnect-iOS/Global/Extension/UIKit+/UIButton+.swift @@ -56,7 +56,7 @@ extension UIButton { func press(vibrate: Bool = false, animated: Bool = true, - for controlEvents: UIControl.Event = .touchUpInside, _ closure: @escaping() -> Void) { + for controlEvents: UIControl.Event = .touchUpInside, _ closure: @escaping () -> Void) { if #available(iOS 14.0, *) { self.addAction(UIAction { _ in closure() if animated { self.clickedAnimation(vibrate: vibrate) } @@ -64,7 +64,7 @@ extension UIButton { } else { @objc class ClosureSleeve: NSObject { let closure: () -> Void - init(_ closure: @escaping() -> Void) { self.closure = closure } + init(_ closure: @escaping () -> Void) { self.closure = closure } @objc func invoke() { closure() } } let sleeve = ClosureSleeve(closure) diff --git a/Runnect-iOS/Runnect-iOS/Global/Supports/SceneDelegate.swift b/Runnect-iOS/Runnect-iOS/Global/Supports/SceneDelegate.swift index 954dc637..f18c54fc 100644 --- a/Runnect-iOS/Runnect-iOS/Global/Supports/SceneDelegate.swift +++ b/Runnect-iOS/Runnect-iOS/Global/Supports/SceneDelegate.swift @@ -51,6 +51,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let window = UIWindow(windowScene: windowScene) let navigationController = UINavigationController() + if UserManager.shared.userType != .registered { UserManager.shared.userType = .visitor } + switch courseType { case .publicCourse: let courseDetailVC = CourseDetailVC() diff --git a/Runnect-iOS/Runnect-iOS/Global/Utils/RNUtils/UserManager.swift b/Runnect-iOS/Runnect-iOS/Global/Utils/RNUtils/UserManager.swift index a6e58f70..5689316e 100644 --- a/Runnect-iOS/Runnect-iOS/Global/Utils/RNUtils/UserManager.swift +++ b/Runnect-iOS/Runnect-iOS/Global/Utils/RNUtils/UserManager.swift @@ -28,7 +28,7 @@ final class UserManager { @UserDefaultWrapper(key: "refreshToken") public var refreshToken @UserDefaultWrapper(key: "isKakao") public var isKakao var hasAccessToken: Bool { return self.accessToken != nil } - var userType: UserType = .registered + var userType: UserType = .visitor private init() {} @@ -38,7 +38,7 @@ final class UserManager { self.isKakao = isKakao } - func signIn(token: String, provider: String, completion: @escaping(Result) -> Void) { + func signIn(token: String, provider: String, completion: @escaping (Result) -> Void) { authProvider.request(.signIn(token: token, provider: provider)) { [weak self] response in guard let self = self else { return } switch response { @@ -79,7 +79,7 @@ final class UserManager { } } - func getNewToken(completion: @escaping(Result) -> Void) { + func getNewToken(completion: @escaping (Result) -> Void) { authProvider.request(.getNewToken) { [weak self] response in guard let self = self else { return } switch response { diff --git a/Runnect-iOS/Runnect-iOS/Info.plist b/Runnect-iOS/Runnect-iOS/Info.plist index cb97a61c..62fa291e 100644 --- a/Runnect-iOS/Runnect-iOS/Info.plist +++ b/Runnect-iOS/Runnect-iOS/Info.plist @@ -2,16 +2,14 @@ - ITSAppUsesNonExemptEncryption - - CFBundleIconName - AppIcon CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName Runnect CFBundleExecutable $(EXECUTABLE_NAME) + CFBundleIconName + AppIcon CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion @@ -21,7 +19,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 2.1.0 + 2.2.0 CFBundleURLTypes @@ -46,7 +44,9 @@ CFBundleVersion - 2024.1128.0304 + 2025.0513.2138 + ITSAppUsesNonExemptEncryption + LSApplicationQueriesSchemes kakaokompassauth diff --git a/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift index b3718175..d0aef639 100644 --- a/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift +++ b/Runnect-iOS/Runnect-iOS/Network/Service/NetworkProvider.swift @@ -8,7 +8,7 @@ import Moya class NetworkProvider: MoyaProvider { - func request(target: Provider, instance: Model.Type, vc: UIViewController, completion: @escaping(Model) -> Void) { + func request(target: Provider, instance: Model.Type, vc: UIViewController, completion: @escaping (Model) -> Void) { self.request(target) { result in switch result { /// 서버 통신 성공 diff --git a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift index 6978a3f3..37760c62 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/CourseDetail/VC/CourseDetailVC.swift @@ -259,6 +259,8 @@ extension CourseDetailVC { func setData(model: UploadedCourseDetailResponseDto) { self.uploadedCourseDetailModel = model self.userId = model.user.id + self.publicCourseId = model.publicCourse.id + self.courseId = model.publicCourse.courseId self.mapImageView.setImage(with: model.publicCourse.image) self.profileImageView.image = GoalRewardInfoModel.stampNameImageDictionary[model.user.image] // 탈퇴 유저 처리 @@ -358,10 +360,18 @@ extension CourseDetailVC { $0.centerY.equalTo(navibar) } - shareButton.snp.makeConstraints { - $0.trailing.trailing.equalTo(moreButton).offset(-50) - $0.centerY.equalTo(navibar) + if UserManager.shared.userType == .visitor { + shareButton.snp.makeConstraints { + $0.trailing.equalTo(self.view.safeAreaLayoutGuide).inset(10) + $0.centerY.equalTo(navibar) + } + } else { + shareButton.snp.makeConstraints { + $0.trailing.equalTo(moreButton).offset(-50) + $0.centerY.equalTo(navibar) + } } + } private func setUI() { @@ -372,6 +382,12 @@ extension CourseDetailVC { firstHorizontalDivideLine.backgroundColor = .g3 secondHorizontalDivideLine.backgroundColor = .g5 thirdHorizontalDivideLine.backgroundColor = .g3 + + guard UserManager.shared.userType != .visitor else { + // 방문자일 경우 더보기 버튼 제거 + moreButton.isHidden = true + return + } } private func setLayout() { diff --git a/Runnect-iOS/Runnect-iOS/Presentation/SignIn/VC/NickNameSetUpVC.swift b/Runnect-iOS/Runnect-iOS/Presentation/SignIn/VC/NickNameSetUpVC.swift index b887b23e..fed3c9a3 100644 --- a/Runnect-iOS/Runnect-iOS/Presentation/SignIn/VC/NickNameSetUpVC.swift +++ b/Runnect-iOS/Runnect-iOS/Presentation/SignIn/VC/NickNameSetUpVC.swift @@ -160,6 +160,7 @@ extension NickNameSetUpVC { do { let responseDto = try result.map(BaseResponse.self) if responseDto.status == 200 { + UserManager.shared.userType = .registered self.pushToTabBarController() } else { self.showToast(message: responseDto.message)