-
Notifications
You must be signed in to change notification settings - Fork 0
[Feat] 강제 업데이트 기능 구현 #201
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feat] 강제 업데이트 기능 구현 #201
Conversation
WalkthroughThe app's launch flow in Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant SceneDelegate
participant AppStore
User->>SceneDelegate: Launches App
SceneDelegate->>AppStore: Fetch latest app version
AppStore-->>SceneDelegate: Return latest version info
alt Force update needed
SceneDelegate->>User: Show force update alert
User->>AppStore: (Optionally) Open App Store link
else No update needed
SceneDelegate->>SceneDelegate: Proceed to auto-login check
alt Auto-login success
SceneDelegate->>User: Show main screen
else Auto-login failure
SceneDelegate->>User: Show login screen
end
end
Assessment against linked issues
Poem
Note ⚡️ AI Code Reviews for VS Code, Cursor, WindsurfCodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback. ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
JinUng41
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (3)
Wable-iOS/App/SceneDelegate.swift (3)
137-137: Replace ternary operator with if-else statement.Using ternary operators to call void functions reduces readability.
Apply this diff:
- isAutologinEnabled ? owner.configureMainScreen() : owner.configureLoginScreen() + if isAutologinEnabled { + owner.configureMainScreen() + } else { + owner.configureLoginScreen() + }🧰 Tools
🪛 SwiftLint (0.57.0)
[Warning] 137-137: Using ternary to call Void functions should be avoided
(void_function_in_ternary)
181-181: Replace unused closure parameter with underscore.The
responseparameter is not used in the closure.Apply this diff:
- URLSession.shared.dataTask(with: url) { [weak self] (data, response, error) in + URLSession.shared.dataTask(with: url) { [weak self] (data, _, error) in🧰 Tools
🪛 SwiftLint (0.57.0)
[Warning] 181-181: Unused parameter in a closure should be replaced with _
(unused_closure_parameter)
219-219: Replace ternary operator with if-else statement.Using ternary operators to call void functions reduces readability.
Apply this diff:
- isUpdateNeeded ? self.showForceUpdateAlert() : self.proceedToAppLaunch() + if isUpdateNeeded { + self.showForceUpdateAlert() + } else { + self.proceedToAppLaunch() + }🧰 Tools
🪛 SwiftLint (0.57.0)
[Warning] 219-219: Using ternary to call Void functions should be avoided
(void_function_in_ternary)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
Wable-iOS/App/SceneDelegate.swift(3 hunks)Wable-iOS/Resource/Info.plist(1 hunks)
🧰 Additional context used
🪛 SwiftLint (0.57.0)
Wable-iOS/App/SceneDelegate.swift
[Warning] 137-137: Using ternary to call Void functions should be avoided
(void_function_in_ternary)
[Warning] 181-181: Unused parameter in a closure should be replaced with _
(unused_closure_parameter)
[Warning] 219-219: Using ternary to call Void functions should be avoided
(void_function_in_ternary)
🔇 Additional comments (6)
Wable-iOS/Resource/Info.plist (1)
5-6: LGTM!Standard compliance declaration for App Store submission. Setting
ITSAppUsesNonExemptEncryptiontofalsecorrectly indicates the app doesn't use encryption subject to export compliance.Wable-iOS/App/SceneDelegate.swift (5)
48-48: Good architectural decision!Checking for forced updates before proceeding with app launch ensures users are on the latest version before accessing app functionality.
225-249: Confirm the non-dismissible alert behavior.The update alert doesn't provide a cancel option, forcing users to update. While appropriate for a "forced update" feature, please confirm this is the intended user experience.
251-264: Well-implemented version comparison logic!The method correctly compares semantic version components in the proper order (major → minor → patch).
266-273: Robust version parsing implementation!The method safely handles version strings with missing components and follows Swift best practices.
173-173:Details
✅ Verification successful
Verify the hardcoded bundle identifier.
The iTunes lookup URL contains a hardcoded bundle ID. Ensure this matches your app's actual bundle identifier.
Run the following script to verify the bundle identifier:
🏁 Script executed:
#!/bin/bash # Description: Verify that the hardcoded bundle ID matches the actual bundle ID in the project # Search for CFBundleIdentifier in Info.plist files fd -e plist -x plutil -p {} \; | grep -A1 "CFBundleIdentifier" | grep -v "CFBundleIdentifier" # Also check for bundle ID references in project configuration rg "PRODUCT_BUNDLE_IDENTIFIER" -A 1Length of output: 575
Bundle identifier verification passed
The hardcoded bundle ID"com.wable.Wable-iOS"matches thePRODUCT_BUNDLE_IDENTIFIERinWable-iOS.xcodeproj/project.pbxproj. No changes are needed here.
| ) | ||
|
|
||
| view.addAction(.init(title: "지금 업데이트", style: .primary, handler: { | ||
| let appStoreOpenUrlString = "itms-apps://itunes.apple.com/app/apple-store/id6670352454" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify the hardcoded App Store ID.
The App Store URL contains a hardcoded app ID. Ensure this matches your app's actual App Store ID.
🌐 Web query:
What is the App Store ID for the Wable iOS app with bundle identifier com.wable.Wable-iOS?
💡 Result:
Based on the search results, I can provide you with the App Store ID for the Wable iOS app.
The App Store ID for Wable, which is described as "the connection app for the willing and able" designed for neurodivergent people, is 6471232366[1].
You can find this ID in the app's App Store URL. For iOS apps, the App Store ID typically appears after "id" in the URL. In Wable's case, the URL is https://apps.apple.com/au/app/wable/id6471232366, which confirms the ID is 6471232366[1][2].
This App Store ID is a unique identifier that distinguishes the Wable app from others within Apple's ecosystem, similar to how the bundle ID (com.wable.Wable-iOS) uniquely identifies the app package[5][7].
The Wable app is free to download and use, though it does offer in-app purchases such as "Upgrade to Premium" for $9.99[1]. It's designed specifically for neurodivergent people to find meaningful connections, whether for dating, friendship, or other social relationships.
Citations:
- 1: https://apps.apple.com/au/app/wable/id6471232366
- 2: https://www.sociablekit.com/find-apple-app-store-id/
- 3: https://apps.apple.com/us/app/apple-wallet/id1160481993
- 4: https://help.alchemer.com/help/finding-your-app-store-id
- 5: https://manual.bubble.io/beta-features/native-mobile-apps/publishing/ios-app-store
- 6: https://www.youtube.com/watch?v=apei7fNOWHc
- 7: https://intunestuff.com/2024/10/31/how-to-get-the-bundle-id-of-an-ios-app/
- 8: https://apps.apple.com/us/app/the-identifiers/id564618183
- 9: https://apps.apple.com/us/app/my-webid/id1456365043
- 10: https://simplemdm.com/blog/how-to-find-the-bundle-id-for-an-application/
Update hardcoded App Store ID
The App Store URL in SceneDelegate.swift is using the old ID 6670352454; it should be updated to the correct ID 6471232366.
• File: Wable-iOS/App/SceneDelegate.swift (line 232)
• Method: showForceUpdateAlert()
Diff:
- let appStoreOpenUrlString = "itms-apps://itunes.apple.com/app/apple-store/id6670352454"
+ let appStoreOpenUrlString = "itms-apps://itunes.apple.com/app/apple-store/id6471232366"📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| let appStoreOpenUrlString = "itms-apps://itunes.apple.com/app/apple-store/id6670352454" | |
| let appStoreOpenUrlString = "itms-apps://itunes.apple.com/app/apple-store/id6471232366" |
🤖 Prompt for AI Agents
In Wable-iOS/App/SceneDelegate.swift at line 232, update the hardcoded App Store
URL by replacing the old app ID 6670352454 with the correct Wable app ID
6471232366. This ensures the URL points to the correct app in the App Store.

👻 PULL REQUEST
📄 작업 내용
💻 주요 코드 설명
버전 확인 및 강제 업데이트 기능 구현
👀 기타 더 이야기해볼 점
🔗 연결된 이슈