Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plan lekcji #17

Open
lukaszlukasz0 opened this issue Mar 9, 2023 · 6 comments
Open

Plan lekcji #17

lukaszlukasz0 opened this issue Mar 9, 2023 · 6 comments

Comments

@lukaszlukasz0
Copy link

Domyślam sie ze projekt już nie jest rozwijamy.

Ale na dzień dzisiejszy nie działa plan lekcji, no i serwer do aktualizacji już nie działa.

Ale oceny działają 😁

@jakweg
Copy link
Owner

jakweg commented Mar 10, 2023

Hej!
Jestem niezwykle zaskoczony, że ta aplikacja jeszcze żyje i ktoś z niej korzysta 😄

Tak, projekt nie jest już aktywnie rozwijany, niemniej możliwe, że wiem dlaczego plan nie działa. Proszę spróbuj pobrać i zainstalować jeszcze raz najnowszą wersję (poprzednią odinstaluj najpierw).

Aktualnie nie posiadam konta ucznia w serwisie, więc nie jestem w stanie przetestować zmian. Mam jednak nadzieję, że teraz się załaduje. Jeżeli nie to mogę "poinwestygować" więcej wraz z Twoją pomocą 😉

Na pewno nie będą działać: sprawdziany, porównania, wysyłanie wiadomości i natychmiastowe powiadomienia (zwiększ częstotliwość synchronizacji jak chcesz je mieć w miarę na bieżąco). Te usługi były hostowane po mojej stronie i wraz z skończeniem mojej przygody z tym dziennikiem przestałem je wspierać (choć ma backupy w razie potrzeby 😎).

Proszę daj znać czy coś się poprawiło i dzięki za kontakt 😀

@lukaszlukasz0
Copy link
Author

Dzięki za zainteresowanie, pobrałem i zainstalowałem nową wersję i teraz działa plan lekcji wraz z widgetem, oceny i wiadomości.

Niestety oryginalna aplikacja nie zmieniła się od twoich czasów i dalej jest daleko w tyle z możliwościami.
A w sumie największą jej wadą jest brak jakiejkolwiek synchronizacji.

Do wysyłania wiadomości i innych modułów używałeś własnego serwera i pobierales/wysłałeś dane przez stronę mobireg?

Bo rozumiem że API do appki tego nie obsługuje, z tego co pobieżnie przejrzałem kod (ogólnie średnio go rozumiem, głównie pisalem w php, a appek na androida nigdy nie robiłem) to wygląda ze appka pobiera dane w formie Json.
Ale to już w wolnej chwili będę sie bawił, całkiem fajny poligon doświadczalny żeby popróbować czegoś nowego.

W każdym razie dzięki za pomoc. Dobra robota z tą aplikacją.

@jakweg
Copy link
Owner

jakweg commented Mar 10, 2023

Ciesze się, że mogłem pomóc, jednak dobrze pamiętałem co zrobiłem kilka lat temu 🥳

Co do działania pod maską to:
Aplikacja pobiera dane w formacie JSON z oficjalnego API przeznaczonego dla oficjalnej aplikacji. Nie ma oficjalnych dokumentów jak korzystać z tego API, więc wszystko co pisałem opierałem na własnej analizie oraz inżynierii wstecznej.

Oficjalne API pozwala na wygodne pobieranie danych, ale nie wszystkich i brakuje możliwości większej interakcji (pomijając podatność SQL Injection, która pozwala na dużo więcej😎).

Aby zapewnić dodatkowe funkcje jak wysyłanie wiadomości lub pobieranie porównań napisałem własne API (nie ma go w tym repozytorium) do którego Mobishit łączył się, następnie mój serwer symulował wejście na stronę i wykonanie odpowiednich akcji. Takie podejście znacznie ułatwiło tworzenie oraz debugowanie i zapewniło większą stabilność rozwiązania.

Serwer zapewniał też niemal natychmiastowe powiadomienia - sprawdzał co kilka(naście) minut czy cokolwiek nowego pojawiło się dla któregokolwiek z użytkowników aplikacji i jeżeli tak to dopiero wtedy wysyłał "sygnał" (poprzez FCM) do urządzenia żeby ono sobie odświeżyło dane (i może pokazało powiadomienie). W ten sposób aplikacja zużywała minimum zasobów i zapewniała wysoką wygodę. Nie istniał (i pewnie nadal nie istnieje) sposób na bezpośrednie otrzymywanie powiadomień push, więc tak rozwiązałem ten problem.

W sumie, mógłbym ponownie aktywować ten backend... 🧐

Jeżeli chcesz pobawić się aplikacją to fajnie, zapraszam. Proszę weź pod uwagę, że sam byłem uczniem gdy ją pisałem, więc kod na pewno nie jest zbyt idealny 😁 + Apka była pisana w czasach Androida 8, więc troszkę odstaje od nowoczesnych standardów. Niemniej gdybyś miał jakiekolwiek pytania do apki czy samego serwisu to dawaj znać - tutaj lub prywatnie na maila/discorda.

@lukaszlukasz0
Copy link
Author

Dzięki, właśnie dowiedziałem się że programowanie appek nie jest tak proste jak myślałem ;(
nie miałem wcześniej doświadczenia z tego typu aplikacjami mimo wszystko staram się to zrozumieć :)

Nie chciałbym aktywować twojego serwera, ale chciałbym dodać brakujące elementy jak Zadania Domowe ale w wersji która ściąga je bezpośrednio z api serwera mobireg - https://zadania.mobireg.pl/api/homeworks/datatable, które wykorzystywane są na stronie.

Ale do rzeczy, udostępniłeś gotową aplikację z poprawionym planem lekcji, ale nie źródła.
Możesz wysłać poprawione źródła lub wskazać miejsce gdzie jest problem?

@lukaszlukasz0
Copy link
Author

lukaszlukasz0 commented Mar 28, 2023

he, dobra już znalazłem, na stałe ustaliłeś przy pierwszym logowaniu, kiedy pobiera wszystkie dane, date końca ;)

private fun makeFirstTimeUpdate() {
        val preferences = MobiregPreferences.get(context)

        val endDate = "2019-06-30"

@jakweg
Copy link
Owner

jakweg commented Mar 28, 2023

Hej, już jest na głównej gałęzi, zrób sobie pulla.

staram się to zrozumieć
jeżeli miałbyś jakieś wątpliwości to pytaj śmiało

Co do zadań domowych to jeżeli jest to API które zwraca JSON to powinno być to łatwo zrobić.
Zależy też jak dużo funkcjonalności chcesz dodać, np. powiadomienia.
Zadań domowych nie było w moim dzienniku, nie wiem jak wyglądają, więc nigdy ich nie implementowałem. A teraz i tak nie mam konta w dzienniku, więc ci tego nie zrobię.

Jeżeli nie potrzebujesz powiadomień to najlepiej chyba wzorować się na tym jak zrobione są sprawdziany.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants