Jedną z wielu zmian wniesionych przez macOS 10.15 Catalina, jest API pozwalające na niemal natychmiastowe przeniesienie wielu aplikacji z iPada na macOS. Wystarczy, że deweloper kliknie raz, czy dwa razy i już ma „gotowy” produkt na macOS. Takie były założenia i tak to niestety niektórzy widzą. Rzeczywistość nie jest tak doskonała.
Pacanie kontra klikanie
Jeżeli chcecie zobaczyć, jak wyglądają aplikacje iPadowe na macOS, to pobawcie się systemowymi Dom, Giełda, Dyktafon, News. Już po chwili widać, że choć były stworzone przez programistów Apple, którzy mają oczywiście najlepszy dostęp do technologii, to nie są tak dobre, jak natywne programy macOS. A to jakaś samotna dziwna ikonka na belce okna, a to konieczność ustawiania daty i czasu za pomocą „rolowania”, a to dziwne zachowanie przy skalowaniu. Jeżeli chcecie zobaczyć aplikacje firm trzecich, to pobawcie się Twitterem. Działa, ale też trąci interfejsem „pacanym”. Choć te aplikacje nadają się do używania, to pozostawiają pewien niedosyt.
Rzeczywiście dwa kliki do Catalyst?
Już raz opisywałem mój eksperyment z uruchomieniem aplikacji, którą lata temu napisałem na iPada i iPhone’a. Ponieważ była w ObjC, to nie musiałem po kilku latach martwić się wersją Swifta. Poza zaznaczeniem w Xcode, że chcę, aby była też na macOS 10.15, musiałem dodatkowo dodać do ustawień, że kod dla Intela jest dopuszczalny. W nowych projektach tego drugiego kroku już nie trzeba robić. Kliknąłem „Run” i o dziwo program zadziałał na macOS zgodnie z obietnicami. Jednak przy zmianach rozmiaru okna interfejs chwilami się zbytnio „zagęszczał” i wyglądał dziwne. To oczywiście wina niedbałego podejścia do Autolayout, które nie jest widoczne na iPadach. Aby to naprawić, należałoby poświęcić kilka godzin.
Apple pozwala na dodanie do aplikacji iPadowych specjalnych funkcji znanych z macOS, takich jak obsługa menu, czy umieszczenie niektórych ikon na belkę okna. Obawiam się jednak, że wielu deweloperów zafascynowanych „jednokliknięciowym” przeniesieniem aplikacji może odpuścić sobie jej dopieszczanie dla macOS.
Dodatkowo Apple nie działa uczciwie. Aplikacje Catalyst od deweloperów nie mogą używać na macOS HomeKit, choć jedną z pierwszych aplikacji iPadowych i to jeszcze na macOS 10.14 Mojave był Dom od Apple.
Brniemy dalej
Cytowany przez Mac Rumors szef działu marketingu macOS Todd Benjamin powiedział:
Naszą wizją dla Mac Catalyst było zawsze ułatwienie każdemu deweloperowi aplikacji dla iPadów, zarówno dużemu, jak i małemu, dostarczenie ich na komputer Mac. To pozwala im wykorzystać jedną bazę kodu i jeden zespół programistów. Mac Catalyst daje twórcom aplikacji „iPadowych” ogromną przewagę, a dla wielu możliwość rozszerzenia swojego zasięgu na platformę Mac, której wcześniej nie mieli. Jest to nie tylko świetne dla programistów, ale także dla użytkowników komputerów Mac, którzy korzystają z dostępu do zupełnie nowego wyboru wspaniałych aplikacji z żywego ekosystemu „iPada”.
Na szczęście wg Benjamina, Apple słucha deweloperów, którzy wcześnie zabrali się za Catalyst i planuje rozbudowę systemu w przyszłości. Z innych doniesień wiemy, że musieli nasłuchać się wielu nieprzyjemnych rzeczy.
Dla wielu wczesnych programistów Mac Catalyst, którzy po raz pierwszy opracowali aplikację dla komputerów Mac i zdumiewające jest to, co udało im się osiągnąć w tak krótkim czasie. Uczymy się wielu od tych pierwszych użytkowników [Catalyst] i planujemy dodatkowe zasoby i wsparcie, aby pomóc im stworzyć niesamowite wrażenia na Macu z Mac Catalyst.
Z drugiej strony lepszy jest Catalyst niż aplikacje w Java lub wykonywane w pseudoprogramistycznych środowiskach uniwersalnych, nie wspominając „aplikacjach” [tfu] łebowch w skórce prawdziwego programu.
Wasz nadal sceptyczny co do Catalyst Mac Wyznawca.
Czy mógłbyś rozwinąć myśl co rozumiesz przez „pseudoprogramistycznych środowiskach uniwersalnych”
Czy przez webowe aplikacje rozumiesz serwowanie adresu internetowego obudowanego WKWebView z aplikacją SPA / PWA czy bardziej rozbudowane narzędzia typu Ionic?
Dobre pytanie…
wszystko co nie jest tworzone w natywnym API macOS, tylko kodowane w czymś uniwersalnym, a potem „konwertowane”. Wiem, że takie narzędzia są niestety popularne i naużywane. Np. dlatego nie da się używać na macOS Slacka (albo nie dawało z rok temu zanim go wywaliłem).
Nie wiem co to Iconic. Jeżeli prowadzi do wsadzenia czegoś WebView to już jest u nie na czarnej liście.
Ok, rozumiem. W takim razie zostawię linka dla ludzi, którzy model biznesowy opierają nie tylko na ekosystemie Apple, a nie mają budżetu by utrzymywać osobne zespoły dla Swift / Kotlin. Jednocześnie chcą używać większości kodu dla aplikacji mobilnych (Android/iOS) i desktopowych (Linux/Windows/macOS). Catalyst i SwiftUI to już w tym momencie IMHO za mało.
https://www.youtube.com/watch?v=U6mlK592na0?t=664 – przykład aplikacji klienckich Groupon’a
PS. Chociaż chyba nie. Zapomniałem, że przecież Flutter korzysta bezpośrednio z natywnych API Apple – kompilując apk ignoruje wszystko co jest z API Androidowego i wykorzystuje to co jest z API iOS/macOS. Więc to jest może też dla Ciebie 😉
Właśnie to jest największe zło; Uniwersalne środowiska powoduję, że deweloperom nie chce się korzystać z zalet danego środowiska. To naprawdę zło i nie należy tego promować.
Poniechaj tego.
O jakich zaletach mówisz?
Pamiętam, że mówiłeś kiedyś o TouchID i FaceID.
Ale takie rzeczy są dostępne. Flutter pozwala dodawać biblioteki pisane w Swift/ObjC dla iOS i Kotlin/Java dla Androida. Dzięki temu – i prężnej społeczności wpieranej przez zespół z Google rozwiązania dostępne na danym środowisku można wykorzystać.
https://pub.dev/packages/local_auth
Czy masz na myśli coś innego?
Może czas poniechać zawężania się do jednego środowiska. Mnóstwo użytkowników innych systemów również chciałoby skorzystać z Twojego oprogramowania.
@FaceID jak chcą korzystać z oprogramowania Jaromira to niech się nauczą korzystać z porządnych systemów
Nie zrozum mnie źle – jestem użytkownikiem iPhone’a od 3G i macOS od 2009. W domu (i rodzinie – za moją namową) mam dużo sprzętu apple, a najnowsze to MBP’18 oraz iP Xs. Jednak ta złota klatka potrafi uwierać. Szczególnie gdy za sterami Apple zasiadł księgowy, a nie pasjonat technologiczny.
Ludzie powinni mieć wybór. W biurze pracuje na Linuksie – i chwała JetBrains, że nie myślą tak jak Ty. WebStorm’a i IntelliJ mogę odpalić na każdym systemie – wystarczy jedna licencja. Dodatkowo ustawienia IDE i wtyczki się pięknie synchronizują.
Dzięki Flutter mogę programować zamiennie na każdym systemie dla każdego systemu i platformy (mówię o mobile i desktop bo nie próbowałem zegarków i TV, choć na konferencji pracownicy pokazywali takie aplikacje) – jedynie warstwę widoku muszę dopracować na końcu pod konkretny system/platformę. Kontrolery, serwisy i cała reszta jest ta sama. Logika nawigacji może się delikatnie różnić, ale cała reszta jest bez zmian. Dodatkowo mam świadomość, że nie poświęcam wydajności lub użyteczności swoich aplikacji tak jak to miało miejsce w dotychczasowych rozwiązaniach hybrydowych.
Tutaj są prezentacyjne aplikacje napisane we Flutterze:
https://apps.apple.com/us/developer/2d-inc/id1211837313 – jeśli nie chcecie ich instalować to wystarczy w YT wpisać „Flutter – History of everything app side by side”
Patrząc z biznesowego punktu to programowanie w czymś innym jest po prostu dalekie od optymalnego.
A zamykanie się tylko na jeden system (oczywiście zakładając, że chce się żyć ze swojego oprogramowania, a nie działa hobbystycznie) to już można tylko robiąc aplikacje globalną i taką, która będzie wyznaczać standard. Przykładem może być Sketch. Aczkolwiek już im Adobe XD depcze po piętach. Co dalej zrobią ze swoim modelem biznesowym to się jeszcze okaże.
Wracając jeszcze do apple i Tima Cooka – to co teraz się dzieje z cenami od Apple to pięknie podsumował Wojtek z iMagazine, cytując Jobsa:
„Steve Jobs kiedyś powiedział, że ich celem zarabiania pieniędzy, był fakt, że dawało im to możliwość tworzenia najlepszych komputerów na świecie. Gdy jednak John Sculley przejął kontrolę nad firmą, zaczęli skupiać się na zyskach, a tworzenie dobrych komputerów stało się sposobem na te zyski.”
No i trzeba by zdefiniować co rozumiesz przez „porządny system”?
Czy taki, który pozwala uzyskać uprawnienia root’a wpisując puste hasło?
Szkoda tylko, że chcecie decydować za innych. Jaromir mi nakazuje czegoś poniechać.
Ty mówisz innym by korzystali z jedynego słusznego systemu 🙂