Druga część mojej serii o tworzeniu niezależnych produktów
Poprzedni artykuł opisywał z perspektywy programisty iOS zasoby potrzebne do określenia potrzeby, stworzenia niezależnej aplikacji i jej publikacji. Przy ograniczonych zasobach mogłem ukończyć jedynie aplikacje narzędziowe dostępne w App Store firmy Apple.
Ten artykuł dotyczy tworzenia w pełni funkcjonalnego produktu na wiele platform, napotykanych problemów i ich rozwiązań. Opowiem, jak stopniowo zbudowałem pełny ekosystem produktu obejmujący oficjalne konto WeChat, miniprogram i aplikację.
1. Cele produktu
Ogólnie mówiąc, celem produktu jest wartość, którą dostarcza. Nawet gdy istnieje zastosowanie, produkt bez wartości, który nie może zarabiać i ma bardzo niewielu użytkowników, ma niewiele powodów, by istnieć.
Możemy też zacząć jeszcze szerzej, od wizji produktu…
Stop. Jeszcze o tym wszystkim nie myśl, bo produkt może nigdy nie wyjść poza niekończące się wyobrażenia.
Gdy zasoby, ludzie i inwestycje są ograniczone, cel staje się jasny: jakie problemy ma rozwiązać produkt albo jakie funkcje musi oferować?
Na przykład, kiedy tworzyłem Menedżera plików, MVP miał jasny cel: przesyłanie plików między telefonem a komputerem.
Ukończenie MVP naturalnie przyniosło kolejne wymagania. Część wynikała z moich planów, ale jeszcze więcej z opinii użytkowników:
- 1.0.0 Przesyłanie plików między telefonem a komputerem
- 1.1.0 Podgląd lub odtwarzanie obrazów, filmów i plików audio
- 1.2.0 Grupowanie, przenoszenie, usuwanie, kompresowanie i udostępnianie plików
- 1.3.0 Ulepszenie odtwarzacza
- 1.4.0 Dodanie weryfikacji bezpieczeństwa: kodów gestów i biometrii
- 2.0.0 Dodanie zakupów w aplikacji
- 2.1.0 Dodanie skanowania dokumentów
- …


Wybierz cel. Nie musi być wielki, ale musi dać się zrealizować. Skup się na jednej rzeczy naraz i idź dalej, nawet jeśli wydaje się błędna — skąd możesz to wiedzieć, zanim ją ukończysz ◔ ‸◔? Ukończ, a potem oceń.
2. Prototypy produktu
W poprzednim artykule wspomniałem, że próbowałem wielu narzędzi do prototypowania i uznałem, iż w czasie potrzebnym na zaprojektowanie prototypu mógłbym zbudować ekrany w xib.
Pozwolę sobie tutaj sobie zaprzeczyć ,,Ծ‸Ծ,,
Takie myślenie jest zrozumiałe przy osobistej aplikacji narzędziowej bez dalszych planów, kiedy celem jest jedynie jej ukończenie i publikacja.
W miarę rozwoju produktu posuwanie się krok po kroku bez prototypu lub planu spowoduje poważne problemy w przyszłych pracach. Projektowanie prototypu jest tak naprawdę procesem porządkowania logiki produktu.
Oto kilka narzędzi do prototypowania. Obecnie najczęściej korzystam z MockingBot.
3. Zarządzanie projektem
Po samodzielnym stworzeniu i opublikowaniu aplikacji iOS zauważyłem poważny problem: nie miałem pojęcia o zarządzaniu projektem. Pracowałem, gdy miałem czas lub sobie przypomniałem, a kiedy ogarniało mnie lenistwo, nie robiłem nic.
To był mój produkt, przeze mnie zaprojektowany i stworzony. MVP prawdopodobnie nie miało płacących użytkowników, więc nie czułem wobec nich odpowiedzialności.
To poważnie spowalnia projekt. Zbyt długa praca bez planu może go nawet zabić.
Po kilku latach zarządzania iteracjami w pracy zauważyłem, że narzędzia do zarządzania projektami sprawdzają się również w projektach osobistych. Gdy mamy jasne cele produktu i logicznie spójny prototyp, podział pracy na zadania przychodzi naturalnie.
Do zarządzania projektem używam coding.net; serwis może też hostować kod źródłowy.

Dziel zadania na jednostki mierzone w godzinach. Ułatwia to zarządzanie i pomaga pisać przypadki testowe. Obecnie mam zwyczaj kończyć przypadki testowe przed kodowaniem. To niezbędne.
Prototyp porządkuje logikę produktu; przypadki testowe porządkują szczegóły implementacji. Kompletne przypadki testowe prowadzą nas do prawidłowej logiki biznesowej ✅ i zapobiegają wielu błędom biznesowym ❌.
4. Wybór technologii
Jak dotąd były to same przygotowania; nie zaczęliśmy jeszcze tworzenia. Najważniejsza trudność polega na tym, że jestem jedynym programistą, a chcę zbudować pełny ekosystem oficjalnego konta WeChat, miniprogramu i aplikacji.
Potrzebne byłyby umiejętności związane z miniprogramami, iOS i Androidem. Nauka języka programowania nie jest aż tak trudna, ale trzykrotne wdrażanie tej samej logiki biznesowej kosztuje trzy razy więcej pracy. To wyraźnie nierealne.
Zwykle można użyć sieci do obsługi wielu platform albo nawet porzucić aplikację i skupić się na oficjalnym koncie oraz miniprogramie. Na wczesnym etapie, gdy potrzeby produktu wymagają szybkiej walidacji, jest to bardzo rozsądne podejście.
Krótkie wyszukiwanie ujawnia wiele technologii wieloplatformowych. Aby z jednego kodu zbudować aplikację i miniprogram na trzy platformy, można użyć Uni-App. Korzysta z frameworka frontendowego Vue.js, a obsługę iOS i Androida zapewnia Weex.
To wystarcza dla produktów osobistych lub małych produktów komercyjnych.
5. Zarządzanie danymi
Po ustaleniu podejścia do miniprogramu i aplikacji pozostaje jeszcze kluczowe pytanie: gdzie przechowywać dane?
W narzędziu wystarczy lokalne przechowywanie danych w aplikacji. A co, jeśli celem jest platforma informacyjna z pełnym systemem użytkowników albo nawet bardziej złożona społeczność z treściami użytkowników?
Uni-App oferuje własną usługę uniCloud. Serwer można tworzyć w JavaScript, a miniprogramy i aplikacje mogą z niego korzystać bez nazwy domeny.
Wybrałem inne podejście: hostowanie danych na bezserwerowej platformie LeanCloud. Miniprogram i aplikacja uzyskują dostęp do hostowanej bazy przez SDK JavaScript LeanCloud.
Warstwa deweloperska obsługuje 30 000 bezpłatnych żądań API dziennie i zapewnia też usługi SMS. To wystarcza do zbudowania systemu użytkowników, przesyłania danych użytkowników i pobierania danych platformy.
Gdy liczba żądań przekroczy limit deweloperski, produkt zgromadził już pewną liczbę użytkowników. Sądzę, że przychód z tego ruchu powinien wtedy pokryć komercyjną warstwę płatną zgodnie z użyciem.
Sprytny sposób pozyskiwania danych
Co zrobić, jeśli chcesz stworzyć aplikację pogodową lub informacyjną, ale nie masz danych pogodowych ani wiadomości?
W Chinach działa wiele platform handlujących API, między innymi:
i inne.
Platformy te oferują zarówno płatne, jak i bezpłatne API.
Jeśli produkt ma dobry sposób monetyzacji ruchu, rozważ płatne API.
Jeśli nie, rozważ bezpłatne limity. Ale próbne 100 żądań może zniknąć podczas testów. Co wtedy?
Można połączyć bezserwerową bazę LeanCloud z platformą API. Dla codziennej pogody najpierw sprawdź bazę. Jeśli danych brakuje, pobierz je z platformy, a następnie zapisz w bazie.
A jeśli 100 żądań nadal nie wystarcza dla wszystkich miast? Podtrzymaj ducha darmowych rozwiązań i zgłoś się do kilku platform.
6. Publikacja i obsługa
Na tym etapie ukończyliśmy tworzenie miniprogramu, aplikacji i serwera. Jak je opublikować?
Miniprogramy są stosunkowo proste: na Platformie oficjalnych kont WeChat postępuj zgodnie z instrukcjami, aby złożyć wniosek o miniprogram.
Publikacja w iOS wymaga płatnego konta programisty. To bariera, ale przy długoterminowej obsłudze polecam złożyć wniosek w witrynie deweloperskiej Apple. Teraz jest to proste: pobierz aplikację Developer na iPhone’a i zapłać w niej.
Dystrybucja na Androidzie wymaga rejestracji praw autorskich do oprogramowania. Zwykły wniosek może potrwać 1–2 miesiące, można też zapłacić zewnętrznemu pośrednikowi.
Kontynuując poszukiwanie darmowych rozwiązań: gdzie przechowywać obrazy, dźwięk i filmy do promowanych miejsc w aplikacji i miniprogramie?
Biblioteka multimediów oficjalnego konta rozwiązuje ten problem. Zapisz tam obrazy, dźwięk i filmy, pobierz ich oryginalne adresy URL, a aplikacja i miniprogram uzyskają do nich dostęp.
7. Uzyskiwanie przychodów
Prostym sposobem monetyzacji ruchu są reklamy.
Wymagania platform wobec wydawców jednak stale rosną, przez co integracja reklam jest trudna dla niezależnych programistów.
Uni-App oferuje integrację jednym kliknięciem; zobacz dokumentację.
Gdy oficjalne konto zgromadzi odbiorców, można włączyć miejsca reklamowe w artykułach.
Miniprogram może włączyć monetyzację wydawcy po osiągnięciu 1000 unikalnych odwiedzających.
8. Podsumowanie
Ukończyliśmy teraz ekosystem oficjalnego konta WeChat, miniprogramu i aplikacji opisany na początku.
Wykonując te kroki, ukończyłem ten proces dla trzech produktów. Zeskanuj kody, aby je wypróbować:
