Zacznijmy od zdefiniowania problemu – w Krakowie posiadacze Karty Krakowskiej mogą korzystać z biletu na dwóch nośnikach – klasycznej karty zbliżeniowej (takiej jak KKM, albo plastikowa KK), albo w aplikacji mobilnej. I można by oczekiwać że aplikacja raczy przypomnieć że bilet się kończy. Ale najwyraźniej nie w Krakowie.
Zatem trzeba coś samemu wytworzyć. Zacząłem od próby napisania aplikacji na iPhona, ale nieco poległem – trochę to jak strzelanie z armaty na komara – wszak pobranie informacji o ważności biletu to najwyżej 2 strzały HTTP, obliczenie różnicy czasu i wysłanie powiadomienia. Alternatywa wydawałoby się pozostała jedna – skrypt na serwerze który wysyła powiadomienia przez Telegrama, albo inny komunikator obsługujący boty i posiadający przyjemne API – coś w rodzaju skryptu, który napisałem do crawlowania portalu JustJoinIT.
Szukając zupełnie innej rzeczy na iPhona – sposobu na dodanie skrótu łączenia się z VPN (przez natywnego klienta IPsec, nie z aplikacji typu NordVPN) przypomniałem sobie że przecież iOS od wersji 13 posiada aplikację Shortcuts w której można automatyzować czynności między innymi na podstawie wyniku pobierania treści z internetu czy skryptów SSH.
Wystarczyło teraz wystawić tylko proste API, które zwróci liczbę dni do końca ważności biletu i stworzyć automatyzację wyświetlającą ładne natywne powiadomienie. Zalążek projektu krakow-tickets-api wrzuciłem na githuba i zahostowałem w pokątnym miejscu na serwerze zabezpieczając się przez nieprzewidywalną ścieżkę. Docelowo API powinno obsługiwać hasło dostępu do samego siebie i parametry w postaci loginu i hasła do strony posiadającej właściwe dane – takie informacje także można przekazać przez Shortcuts.
Czas na programowanie graficzne. Aplikacja jest odinstalowywalna więc pewnie większość użytkowników się jej pozbyła po aktualizacji. Dostępna jest oczywiście w AppStore.
Kroki przedstawione powyżej raczej nie wymagają komentarza. Testować można klikając przycisk w prawym dolnym rogu. Teraz jeszcze tylko harmonogram – wschód słońca wydał mi się dobrym wyborem i można cieszyć się powiadomieniami.
Aplikacja działa całkowicie na telefonie więc możemy wyświetlać tyle natywnych powiadomień ile chcemy. A i zapytania do API mogą lecieć o ciekawsze i potencjalnie bardziej skomplikowane rzeczy niż liczba dni ważności biletu 🙂 Happy hacking!