VulCode

Swift: co w nim budujemy i dlaczego

W Swifcie piszemy natywne aplikacje iOS dla naszych platform i biblioteki z czystym rdzeniem: interfejs w SwiftUI, widżety w WidgetKit i powiadomienia przez APNs.

Swift na prawdziwych zrzutach

Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.

Zamówienie serwera Minecraft w aplikacji Flaem: pakiet, wariant i okres rozliczeniowy

Flaem: aplikacja iOS

Klient panelu z kanałem powiadomień i widżetami na ekranie głównym.

Nowe konto w Plazerze bez e-maila i numeru telefonu, z kluczem odzyskiwania

Plazer: aplikacja iOS

Natywny klient w SwiftUI: sesja w pęku kluczy, wiadomości na żywo przez WebSocket i ta sama warstwa logiki co na Androidzie.

Kiedy Swift, a kiedy coś innego

Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.

Wybieramy Swift

Natywne aplikacje iOS

Flaem i Plazer mają na iOS aplikacje w SwiftUI, które wyglądają i zachowują się jak reszta systemu. Aplikacja Flaem obsługuje panel z kanałem powiadomień, a Plazer rozmowy na żywo przez WebSocket.

Powiadomienia przez APNs

Natywna aplikacja dostaje powiadomienia przez APNs także wtedy, gdy jest zamknięta, a dotknięcie otwiera właściwy ekran. Administrator trafia od razu do serwera, który ma problem.

Widżety w WidgetKit

Widżety na ekranie głównym iPhone'a powstają tylko w WidgetKit, czyli w Swifcie. Aplikacja Flaem pokazuje w nich najważniejsze informacje bez otwierania aplikacji.

Sesja w pęku kluczy

Plazer trzyma sesję w pęku kluczy iOS, a nie w zwykłym pliku aplikacji. Dostępu do danych logowania pilnuje system.

Ta sama logika co na Androidzie

Plazer na iOS korzysta z tej samej warstwy logiki co na Androidzie, a SwiftUI rysuje tylko interfejs. Zmiana w logice trafia na oba telefony.

Biblioteka i program w jednym pakiecie

Interpreter kite trzyma cały język Scheme w bibliotece KiteCore, a REPL jest osobnym, cienkim programem w tym samym pakiecie Swift. Każdą warstwę sprawdza XCTest. Projekty Xcode generujemy z pliku przez XcodeGen, więc kilka osób nie kłóci się o plik projektu.

Tak piszemy w usługach

Wybieramy coś innego

Aplikacja na Androida

Na Androidzie widżety, powiadomienia FCM i Jetpack Compose obsługuje kod w Kotlinie. Flaem i Plazer mają tam osobne aplikacje w Kotlinie.

Te same funkcje na wielu platformach

Gdy iOS jest jedną z kilku platform o tych samych funkcjach, jeden kod w React Native z TypeScriptem albo we Flutterze kosztuje mniej. Swift wybieramy, gdy aplikacja potrzebuje tego, co ma tylko iOS.

Pierwsza wersja bez sklepu

Aplikacja webowa w TypeScripcie trafia do ludzi od razu po wdrożeniu, bez przeglądu w App Store. Do sprawdzenia pomysłu zwykle to wystarcza.

Kryptografia i protokół

Rdzeń szyfrowania Plazera jest w Ruście i ma jedną implementację dla wszystkich aplikacji. Druga kopia w Swifcie oznaczałaby drugi protokół do sprawdzenia.

Zaplecze aplikacji

Swift działa też na serwerze, ale usługi, z którymi rozmawiają nasze aplikacje, są w Go albo w Ruście. Centralka Plazera jest w Go, a rdzeń Flaem w Ruście.

Program na Maca, Windows i Linux

Program na komputer, który ma działać też na Windows i Linuksie, piszemy w C# z Avalonią. Tak powstały aplikacje desktopowe Flaem i Plazera.

Swift w porównaniu, punkt po punkcie

Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.

Klient iOSSwift natywnieAplikacja webowa

Powiadomienia

APNs z pełną kontrolą
Web push po instalacji

Widżety

Tak
Nie

Czas do pierwszej wersji

Dłuższy, z przeglądem App Store
Krótszy

Dane logowania

Pęk kluczy iOS
Pamięć przeglądarki

Wydanie poprawki

Po przeglądzie w App Store
Od razu po wdrożeniu

Praca w tle

Zadania w tle systemu iOS
W praktyce tylko przy otwartej aplikacji

Sprzęt do budowania

Mac z Xcode
Dowolny komputer

Swift w całym naszym kodzie

Ile linii napisaliśmy w Swift i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.

116 812
linii napisanych w Swift
2,2%
wszystkich linii, które napisaliśmy
4
repozytoria z kodem w Swift
8.
miejsce wśród 26 języków

Biblioteki, na których stoją te projekty

Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.

Widżety Plazera na ekranie telefonu: nowe wiadomości i pokój głosowy
Dyżur w aplikacji Flaem na telefonie: alarmy z przyciskami działań i kolejka zgłoszeń
  • SwiftUI

    Interfejs aplikacji.

  • WidgetKit

    Widżety na ekranie głównym.

  • XcodeGen

    Projekt Xcode generowany z pliku.

  • XCTest

    Testy logiki.

Pytania o Swift

Odpowiedzi o Swift, naszych projektach i liczbach na tej stronie.

Projekt w Swift?

Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.