DmL čet 15.3.2018 14:23

Pozdrav,

 

učim se razvijati aplikacije za Android OS, a posebno mi je zanimljiv spoj web stranica i mobilnih aplikacija.

Ukratko, želio bih dobiti savjete koji je najbolji način prikaza vijesti, poput onih na stranici https://vijesti.rtl.hr/ . 

Zanima koje tutoriale pratiti, možda preporuka jednostavnog library-a, odnosno kako početi?

Gledao sam jsoup HTML parser library, https://jsoup.org/ , ili postoje drugačiji pristupi razvoja ovakve vrste aplikacija?

 

Primjer kako bih želio da vijesti budu posložene u CardView:

  

 

jonas19 ned 18.3.2018 00:53

Imas  nekoliko nacina da takvo sto postignes,

jedno je web stranicu odmah napraviti dinamic tako da se prilagoduje velicini ekrana ,

ili imas API koji komunicira s aplikacijom.

Sve ovisi koliko iskustva imas s javom

 

DmL ned 18.3.2018 19:22
jonas19 kaže...

Imas  nekoliko nacina da takvo sto postignes,

jedno je web stranicu odmah napraviti dinamic tako da se prilagoduje velicini ekrana ,

ili imas API koji komunicira s aplikacijom.

Sve ovisi koliko iskustva imas s javom

 

Želio bih izbjeći WebView, nego umjesto ručno napraviti i prilagođavati prikaz unutar same aplikacije. Zanima me što ako ne postoji gotov API koji bi se mogao korisiti, kakve su onda procedure?

Dakle postoji web stranica, nije prilagođena za mobilne uređaje, i nema izrađen API - mogu li koristiti spomenuti jsoup library, postoji li neka vrsta cachea da ne mora svaki put dohvaćati podatke? Mogu li prikazati primjerice vijesti i slike pomoću RecyclerViewa i CardViewa? 

Mitch ned 18.3.2018 19:28
DmL kaže...
jonas19 kaže...

Imas  nekoliko nacina da takvo sto postignes,

jedno je web stranicu odmah napraviti dinamic tako da se prilagoduje velicini ekrana ,

ili imas API koji komunicira s aplikacijom.

Sve ovisi koliko iskustva imas s javom

 

Želio bih izbjeći WebView, nego umjesto ručno napraviti i prilagođavati prikaz unutar same aplikacije. Zanima me što ako ne postoji gotov API koji bi se mogao korisiti, kakve su onda procedure?

Dakle postoji web stranica, nije prilagođena za mobilne uređaje, i nema izrađen API - mogu li koristiti spomenuti jsoup library, postoji li neka vrsta cachea da ne mora svaki put dohvaćati podatke? Mogu li prikazati primjerice vijesti i slike pomoću RecyclerViewa i CardViewa? 

 https://developer.android.com/reference/android/net/http/HttpResponseCache.html

jonas19 ned 18.3.2018 23:40

Sve ovisi na kojem se software webstranica vrti. imas neke osnovne api base kodove koje mozes ugraditi u stranicu , ako koristis jsoup lib moras jako paziti da se drzis fiksnog rasporeda u web stranici .

RecyclerView i Cardview mozes puniti cime god hoces , oni nemaju veze s izvorom sadrzaja .

U čemu bi radio web stranicu tj na na cemu bi se vrtila?

MrBlc ned 18.3.2018 23:56

Tu problem trebaš podijeliti na više segmenata:

1.) Tko servira vijesti? Ako ti serviraš, radiš API kakav tebi paše. Ako povlačiš sa tuđe stranice, moraš ih parsirati i vaditi sadržaj. U teoriji možeš imati server side aplikaciju koja to radi i cacheira rezultate, ali je tu pitanje legalnosti. Tvoja mobilna aplikacija to može raditi i to definitivno nema smisla raditi u web viewu, već treba nativno. Ako želiš povlačiti sa više različitih i ne nužno unaprijed poznatih izvora, za početak kreni s podrškom za RSS, pa kasnije možeš širiti.

2.) Priprema sadržaja za prikaz i poslovna logika. Kad imaš sirovi sadržaj, trebaš omogućiti navigaciju unutar aplikacije i renderiranje prikaza. Ako koristiš web view, to možeš raditi u JS-u, možeš i nativno.

3.) Za sami prikaz možeš koristiti nazivne view objekte ili web view. Ako ideš na web view, u njega možeš učitati HTML koji ti sam generiraš u aplikaciji na osnovu parsiranog sadržaja ili RSS feeda.

DmL pon 19.3.2018 10:15

Hvala na odgovorima.

Još me jedna stvar zanima - pošto je jsoup zapravo HTML parser, kako pristupiti u slučaju kada se pojedine stavke na web stranici ne prikazuju u HTML kodu, odnosno nisu vidljive na opciji "Show Page Source" web preglednika?

MrBlc pon 19.3.2018 12:04

Tu imaš opet dvije opcije:

a.) Koristiti neki headless browser, primjerice PhantomJS i vaditi sadržaj iz njega nakon što se učita i izvrši kompletna stranica. Ovo rješenje je u startu kompliciranije, vjerojatno sporije, ali manje posla imaš za dodati dodatni izvor vijesti ili pratiti promjene u strukturi weba.

 

b.) Pratiti na koji način i odakle stranica vuče sadržaj (neki REST upit), te kako su zadani parametri, testirati možeš li ga koristiti iz svoje aplikacije i implementirati učitavanje sadržaja. Bonus, ako dobiješ sirove podatke u jsonu, to ti je daleko jednostavnije nego ako ti vrati renderirani html.

Mitch pon 19.3.2018 21:52
MrBlc kaže...

Tu imaš opet dvije opcije:

a.) Koristiti neki headless browser, primjerice PhantomJS i vaditi sadržaj iz njega nakon što se učita i izvrši kompletna stranica. Ovo rješenje je u startu kompliciranije, vjerojatno sporije, ali manje posla imaš za dodati dodatni izvor vijesti ili pratiti promjene u strukturi weba.

 

b.) Pratiti na koji način i odakle stranica vuče sadržaj (neki REST upit), te kako su zadani parametri, testirati možeš li ga koristiti iz svoje aplikacije i implementirati učitavanje sadržaja. Bonus, ako dobiješ sirove podatke u jsonu, to ti je daleko jednostavnije nego ako ti vrati renderirani html.

 Da opcija b je obicno klasican nacin.

 

Evo dobar post http://www.gregreda.com/2015/02/15/web-scraping-finding-the-api/

 

kako da skuzis headere preko Chromea i njegove konzole