Kami memiliki dua platform, hadiah uang 1.000.000 rubel, 6 hadiah, 26.000 baris kode untuk dibaca dan dievaluasi, serta 20 halaman umpan balik, beberapa kriteria evaluasi, kotak Badweiser, satu pint eter murni dan 12 gelembung obat penenang. ... Bukan berarti semua ini mutlak diperlukan untuk mengadakan kompetisi pengembang, tetapi jika Anda sudah mulai mengevaluasi solusi, maka Anda perlu mendekati masalah tersebut dengan serius.
Kami merangkum hasil kontes Dompet Tantangan Seluler dan menganalisis secara rinci keputusan para peserta.
Tugas
Cobalah untuk menangkap perasaan dompet fisik di aplikasi Wallet dan bayangkan kembali dua layar: layar utama dengan daftar kartu dan layar dengan detail kartu.
Sarankan penerapan teknis dari layar ini dan transisi di antara mereka. Menampilkan logika, menyortir daftar peta, UI / UX, animasi, dan semua nuansa lainnya terserah Anda.
1
2 (iOS Android)
1 000 000
100 -
1
13
11
6
iOS
1 (250 000 ) โ
2 (150 000 ) โ
3 (100 000 ) โ
Android
1 (250 000 ) โ
2 (150 000 ) โ
3 (100 000 ) โ
, โ .
:
.
, .
.
.
:
iOS- Android-, -.
Android: 23+ API.
iOS: iOS 11+.
iOS
, Swift, . 11, . -, , , API. Xcode , SDK .
DI (Dependency Inversion)
, , .
SR (Single Responsibility)
: , , , . / .
, . iOS- โ MyClassName MyClassNameProtocol.
, ( -). , ( ), .
reference value ,
:
class RequestModel: Request {
var method: HTTPMethod = .get
var headers: [String : String]? = nil
var url: URL = URL(string: "https://textures.cardsmobile.ru")!
var parameters: [String : String]? = nil
var contentType: ContentTypeRequestEnum = .applicationURLEncoder
}
struct, class, .
3rd party
, Alamofire . . , Alamofire , AF.request(url).response { โฆ } . URLSession.shared.dataTask(with: url) { โฆ }.resume()? , . , . , โ ยซ URLSession ยป. , .
Core Data
(NSManagedObjectContext) save() . NSManagedObjectContextDidSave background view . , .
DispatchQueue.global
- , , async ( ), - , , .
background Quality Of Service (QoS)
background , ( , , , ). QoS utility. .
โ .
, . , โ Image Resizing Techniques .
UIViewController
โ , . viewWillAppear viewWillDisappear ( , ). , , . , App Store .
UIApplicationDidEnterBackgroundNotification UIApplicationDidBecomeActiveNotification, , .
UI . , Safe Area.
, . , - , ยซ ยป , . ( ), Xcode Edit > Format > Spelling and Grammar > Check Spelling While Typing.
, , , UI. Xcode Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want.
(warnings)
(swiftlint, , deprecated ..), ..
: . :)
โ , , . .
: self.viewModel.objects().count%5 โ , - .
, ยซ ยป. ยซ. ยป .
-, , . , View, Interactor, Model Builder .
โ DI (Dependency Injection).
Dependency Container, .
Kingfisher , ImageLoader. 3rd party .
final ,
- . final . Whole Module Optimization final. , , , final . .
#1 ,
#2 , ,
-
, -, , -, , UI.
Apple Dark Mode, , .
โ .
#1
#2
Android-
Kotlin, API 23+ .
. UI. drag&drop.
DI (Dependency Inversion), Singleton
CardsInteractor domain- CardsRepository data-, SOLID. Interface CardsRepository, Domain-.
. : ยซ ยป github.
, .
Clean Architecture: data, domain, presentation
CardsInteractor Storage . . , CardsInteractor Repository DataSource. CardsViewModelImpl , , , .
-, CharSequence?.isNotNullAndEmpty, List<T>.isEmpty
, โ . , , - Kotlin CharSequence?.isNullOrEmpty(), isEmpty() ..
view info1TitleTextView, info2TitleTextView, info3TitleTextView, info4TitleTextView. , view. .
deprecated
window.decorView.systemUiVisibility, View.SYSTEMUIFLAGLAYOUTFULLSCREEN, SYSTEMUIFLAGLAYOUTHIDE_NAVIGATION. deprecated , .
Clean Architecture
, , , , . .
ยซยป .
, :)
#1
#2 ยซ3ยป ,
#3
: , , , , , , , , , , .
! .
- Cardsmobile | Engineering, , iOS Android, QA backend. , .