Skocz do zawartości
piotrpo

Integracja aplikacji, jak napisać api...

    Rekomendowane odpowiedzi

    piotrpo

    Chcę napisać aplikację, która będzie bazą danych, zbierającą informacje z innych aplikacji. Zastanawiam się jak to zrobić.

    Problem dzieli się na 2 części - łatwą i trudną:

    Część łatwa

    Aplikacja "kliencka" wysyła intenta z odpowiednimi extrasami, mój data collector, łapie intenta, otwiera formatkę wprowadzania danych i wypełnia na jego podstawie te pola, które są zawarte w extras - banał.

    Część trudna:

    W niektórych przypadkach, klient będzie przechowywał część danych (bo moja aplikacja wszystkiego nie obsłuży) w tym miejscu chciał bym zrobić tak, że przesyłam w extras jakieś magiczne referencje do aplikacji źródłowej, zapisuję je sobie w bazie. Następnie użytkownik, przeglądając całość danych w mojej aplikacji, w pewnych przypadkach ma możliwość kliknięcia linku, przenoszącego go do odpowiedniego miejsca w aplikacji źródłowej.

    Czy macie jakieś pomysły na wykonanie takiej integracji? Myślałem o przekazywaniu przez klienta intenta z wypełnionymi ekstrasami i zapisywaniu go w bazie "serwera" - tylko nie wiem czy jest to wykonalne i rozsądne. Zakładam, że aplikacje klienckie nie muszą być mojego autorstwa.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    A do czego na przykład miałoby służyć przeniesienie do źródłowej aplikacji poprzez magiczną referencję?

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    gzajac
    Część łatwa

    Aplikacja "kliencka" wysyła intenta z odpowiednimi extrasami, mój data collector, łapie intenta, otwiera formatkę wprowadzania danych i wypełnia na jego podstawie te pola, które są zawarte w extras - banał.

    Do tego aż się prosi zastosować ContentProvider'a.

    że przesyłam w extras jakieś magiczne referencje do aplikacji źródłowej, zapisuję je sobie w bazie. Następnie użytkownik, przeglądając całość danych w mojej aplikacji, w pewnych przypadkach ma możliwość kliknięcia linku, przenoszącego go do odpowiedniego miejsca w aplikacji źródłowej.

    Nie wiem czy dobrze zrozumiałem co chcesz tutaj zrobić, ale taką "magic reference" może być np. nazwa pakietu oraz nazwa Activity aplikacji klienta, które jest w stanie zaprezentować te dane. Wówczas z Twojej aplikacji możesz bez problemu wystartować to Activity.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Dobra, rozpiszę to na use case'y

    Mój licznik rowerowy, to provider dla danych

    Aplikacja którą projektuję, to coś na kształt "dziennika treningów"

    Użytkownik, po przejechaniu i zarejestrowaniu wciska guzik w MBC, przygotowana zostaje depesza do dziennika - zawiera dystans, czas, kalorie, jakieś tam inne pierdoły, ale nie zawiera zapisu trasy.

    Po otrzymaniu depeszy "dziennik" otwiera formatkę do wprowadzania danych i na podstawie informacji z depeszy wypełnia część pól, użytkownik uzupełnia resztę, albo coś tam zmienia i zapisuje.

    Użytkownik, po otwarciu dziennika, na wcześniej zapisanym rekordzie, ma możliwość kliknięcia "pokaż więcej" - jeśli to zrobi, powinna się uruchomić odpowiednia formatka z providera, i pokazać dane - w tym wypadku akurat mapka z trasą.

    Co ważne, API ma być ogólnie dostępne, tzn. jako autor dziennika, nie wiem kto i w jaki sposób będzie do niego wrzucał dane.

    Myślałem generalnie o przekazaniu przez providera danych potrzebnych do stworzenia intentu - activity i id, ale zastanawiam się jakie są wady takiego rozwiązania, bo po opublikowaniu dość ciężko zmieniać tego typu funkcjonalności...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jak na moje, to możesz użyć jakiegoś sprytnego sposobu kodowania 'miejsca wysłania referencji' w Intentach przesyłanych pomiędzy Activity (np. poprzez String "licznikrowerowy_activity1").

    Druga myśl - przepraszam z góry za ciekawskość, ale jaki jest cel takiego dziennika do wszystkiego? Co miałoby się w takim dzienniku znaleźć? Zbyt ogólna aplikacja może spowodować, że nie bardzo będzie wiadomo do czego ona ma służyć.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach
    piotrpo

    Mam pomysł na kilka aplikacji wspomagających różnego rodzaju trening - szczegóły poszczególnych treningów znajdowały by się właśnie w tych aplikacjach, a "dziennik" integrował by to w całość, pozwalając na przeglądanie całości w jednym miejscu + obsługiwał jakieś pierdoły w typie tweeter, FB i inne nowoczesne "rewolucjne" serwisy :)

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    No to nie zostaje nic innego jak przypisanie każdemu wpisowi do dziennika odpowiedniego id wpisu i id aplikacji. W przypadku kliknięcia powinien zostać wysłany Intent z tymi dwoma, aktywujący odpowiednią aplikację, która wyświetla sobie wpis o zadanym id. : )

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x