When registering a card in a live service, users can manually enter the information, but card scanning is also supported for convenience.
The basic principle of this scanning feature is extracting text from images.
Apple provides native frameworks, such as Vision and VisionKit, that allow text extraction from images.
After trying them, I found that they didn’t recognize vertical cards, like Hyundai Card, very well, and the recognition rate wasn’t great. I am currently evaluating other OCR libraries, and NHN’s CreditCardOCR seemed to perform better.
While using this library, I found a typo in the property naming of the ViewController responsible for card recognition, so I submitted a 🔗PR.
In the mobile app market, Android and iOS are the two most popular operating systems.
Supporting only one platform means giving up users of the other OS. Cross-platform development allows for easier support of both.
While there are various cross-platform technologies such as Flutter and React Native, a new technology called KMP (Kotlin Multiplatform Mobile) has emerged, allowing development with Kotlin. In a similar vein, 🔗Skip allows development using Swift, so I looked into it.
Skip is still in development and hasn’t released version 1.0 yet, but it is currently free to use.
The principle behind it is that Swift code is converted to Kotlin, and SwiftUI is converted to Compose before compilation, ensuring a truly native transformation.
You need to use Swift and SwiftUI, and it’s not recommended to migrate an existing project. Instead, creating a new Skip project is recommended.
Using Firebase or third-party libraries was cumbersome, and many errors occurred with type inference. It seems impractical for live services, but it could be useful for simple apps.
Here’s how easy it is to get started:
$brew install skiptools/skip/skip
$skip checkup
$skip init --appid=bundle.id project-name AppName
Start working from the generated project’s ContentView
.
A design system is a collection of reusable components, tokens, and design standards created to enhance the speed of UI implementation for both designers and software engineers. To unify the use of custom views, I began developing a design system.
Before starting, I researched various DS implementations to increase reusability.
The most helpful references were Skyscanner’s DS and a DS from a club at Soongsil University. Both open-source systems provided samples, and the Soongsil DS even offered a Figma file.
viewDidAppear
, causing the screen to stutter. Since viewDidAppear
is called after the view is fully visible, I moved the animation handling to viewWillAppear
, which solved the issue.