ugrás a tartalomhoz

Mobile Detect?

kemma3 · 2014. Nov. 3. (H), 08.50
Sziasztok! Szerintetek mennyire elfogadható megoldás az, hogy szerver oldalon állapítom meg, hogy a kliens mobil telefon, tablet vagy asztali számítógép?
Egy lehetséges megvalósítás: http://mobiledetect.net/
 
1

Elterjedt

Poetro · 2014. Nov. 3. (H), 09.36
Sajnos eléggé elterjedt megoldás, de nem feltétlen a legjobb. Egyáltalán mi a célod az azonosítással? Windowsos tabletet egyébként nehéz lesz ezzel érzékelni, mert szinte semmilyen pontod nincs, amire támaszkodni tudsz. Az általad kinézett konkrét megoldást nem ismerem, de szinte mindegyik folyamatos frissítést igényel (pár hetente, havonta), hogy az új eszközöket azonosítani tudja.
2

Más megoldás?

kemma3 · 2014. Nov. 3. (H), 09.55
Webalkalmazást készítünk, ahol szeretnénk különválasztani a mobil és az asztali verziót. A terv az, hogy a két megjelenítés fejlesztését teljes mértékben különválasszuk. Elsődleges cél, hogy a mobil verziót gyorsítsuk, jelenleg túl sok olyan dolog fut le, ami a mobil verziónál felesleges.

A kérdés mindenképpen arra vonatkozott, hogy ez mennyire járható, ha nem ez a megoldás, akkor mi? JavaScript-ből könnyebben meg tudom állapítani, hogy mobil telefonon vagyunk-e vagy sem? (a tablet jelenleg nem aktuális kérdés, ám ha foglalkozunk az azonosítással, akkor jó lenne ezt is tisztázni a későbbi fejlesztések miatt, de jelenleg erről még nincs szó)
3

Nem mondom, hogy jó megoldás,

szabo.b.gabor · 2014. Nov. 3. (H), 10.22
Nem mondom, hogy jó megoldás, csak egy féle.

Mi egyik projektben modernizr touch és kijelző orientáció alapján mondtuk azt, hogy mobil nézetben vagyunk-e.

Tehát ha van touchscreen és álló a kép, akkor toltuk a mobil verziót.

A felesleges cuccokat meg js-sel inicializáld, ha már biztos, hogy nem mobil vagy.

Ettől függetlenül rakj ki nézet váltási lehetőséget.

Esetleg csinálhatsz vmi performance tesztet js-sel és az alapján is támogathatod a döntést, hogy mi jelenjen meg. (csak ugye sok mindentől függhet, hogy épp mennyire teker a proci, egyebek)

Mintha volna lehetőség olyan header küldésére, hogy asztali nézetet kérek (nekem a tableten chrome-ban legalábbis van ilyen), ennek is nézz utána.

Nem biztos, hogy jó ötlet amúgy különválasztani a mobil és asztali nézet fejlesztését.

Ha px alapú designban gondolkozol nézz utána az em-nek, beállítasz (vagy nem) a bodynak egy betűméretet, és minden méret ennek a függvénye lesz. egy kényelmesen olvasható bekezdés kb 35em széles 1.7 - 1.9 em sormagassággal, az alapnál kicsit nagyobb szóközökkel.

Mobil nézet mondjuk 35em széles legyen úgy állítsd be a font-size értékét (a sokféle kijelző különböző pixelsűrűségét ezzel le is tudtad, van olyan meta tag, hogy initial-scale, ez legyen 1), a desktop nézet meg legye 75em pl, aztán csinálhatod amit szoktál..

Ebből egy vitaindító lett, úgy látom. Amúgy ki hogyan csinálja manapság?
5

Különválasztás?

kemma3 · 2014. Nov. 3. (H), 10.42
Miért nem jó ötlet a két verzió szétválasztása?

Eddig csak azért nem választottuk ketté a két verziót, mert nem volt erre kellő kapacitás, igazából semmilyen hasznát nem látjuk a közös kiindulópontnak. (lesznek persze közös JS fájlok, meg a szerver oldal közös, de a közös HTML oldal jelenleg inkább csak akadály)

Az egyszerűség kedvéért beszéljünk a GMail-ről, azt a példát mindenki ismeri, illetve ekkor nem kell irreleváns részletekbe belemenni.

Az alapfunkciót mindegyik verzió tudja, de mégis a külalakja jelentősen eltér, illetve a mobil verzióból számtalan extra funkció hiányzik. A cél nálunk is pont ugyanez. Az Ajax hívások válaszai ugyanazok lesznek, de már szerintem magát a megjelenítő listát sem ugyanaz a JavaScript fogja generálni.
7

Alkalmazás

Poetro · 2014. Nov. 3. (H), 11.38
Ha úgyis alkalmazást fejlesztesz, akkor jó esélyel egyébként sincs semmi a HTML-ben, ergo úgy is JS-t használsz mindenhez. Így érdemesebb lehet ott dönteni, hogy mit használsz. És ne felejtsük el, hogy azért már elég sok eszköz van, ami érintésérzékeny és mégsem tablet illetve telefon. Gondoljunk csak a Windows-os laptopokra, illetve ChromeBook-okra.
És nem arra akarok célozni, hogy könnyebben megállapíthatod hogy telefon, vagy tablet, elvégre annak semmi értelme sincs. Amire támaszkodni kell: mekkora a képernyő, és van-e érintés támogatás, illetve a felhasználó használja-e. A felhasználói felületet igazából csak ezekre kellene alapozni, nem arra, hogy telefon-e vagy nem. Ezen kívül minden verziót gyorsítani illik, nem csak a mobil-t. Mennyiben különlegesebb a mobil, mint a nem mobil? Lassú processzor, lassú internet és kicsi képenyő asztali gépen is előfordul, sőt egyes mobiloknak jobb a felbontása és internet sebessége mint egyes asztali gépekenk.
8

feature detect?

kemma3 · 2014. Nov. 3. (H), 12.21
Ha az ember jobban mozog szerver oldalon, akkor valószínűleg több dolgot ott szeretne megoldani, emiatt az az irány, ám nyitott vagyok a más elképzelésre, még akkor is, ha elsőre nem nagyon értem.

Miért alapértelmezett, hogy üres a HTML, ha alkalmazást készítünk?

Mi van, ha különböző platformon különböző JS keretrendszert akarunk használni? Nincs még semmi sem eldöntve, de a mobil verzióhoz a Sencha Touch elsőre szimpatikusnak tűnt, ám ahogy nézem már Firefox-on sem teljesen százaz, IE-ról nem is beszélve.

Mennyire megbízható a 'ontouchstart' in document.documentElement JavaScript ellenőrzés? Számtalan ilyen és hasonló ellenőrzéseket látok, de nem tudom, hogy megbízhatunk-e benne?
9

Érzékelés

Poetro · 2014. Nov. 3. (H), 13.03
Mert képesség felderítésre mindenképpen szükség lesz. Akár asztali akár mobil böngészőről van szó. Azaz, te hiába szolgálsz ki mobil tartalmat, ha az én gépem nem érintésérzékeny, és te hibásan feltételezted ezt szerver oldalon. Ugyan ez igaz kb egérre is. Lehet hogy te asztali böngészőt feltételezel szerver oldalon, de nekem nincs egerem, csak érintés áll rendelkezésemre (vagy még az sem, mert mindent billentyűzettel csinálok). Szóval mindenképpen érdemes olyan megoldást használni, ami megfelelően képes a különböző képességeket felderíteni, amik fontosak az alkalmazás és a navigálás szempontjából (SVG, WebGL, Geo location, CSS transition, animation stb).
Mi van, ha különböző platformon különböző JS keretrendszert akarunk használni?

Ennek nem sok hasznát látom, mert egy szolgáltatást akkor többször kell implementálni és tesztelni. Minél egységesebb a kód, annál könnyebb lesz az egészet karbantartani.
Egér, touch kezelésére ajánlom figyelmedbe például a Hammer.js-t, ami nagyszerűen egyesíti a bevitelek kezelését.
10

Hammer.js?

kemma3 · 2014. Nov. 3. (H), 13.33
Nem tudom, hogy célod volt-e a megnyugtatás, de nem sikerült. :)

Ha például elkezdeném használni a Hammer.js -t, akkor minden egyes kattintást ezen a rendszeren keresztül kellene megvalósítani, hogy biztosan minden készüléken megfelelően működjön? Ez hatalmas munkának tűnik. Pedig nem is a kattintást gondoltam a legnagyobb problémának, alkalmazásunkban a scrollbar hiánya miatt használhatatlan a jelenlegi verzió. Ám gondolom még vagy ezernyi apróság van, ami miatt az eddigieket újra kell írni...
11

Mindenképpen szükséged lenne

bamegakapa · 2014. Nov. 3. (H), 13.40
Mindenképpen szükséged lenne valakire a projektben, aki otthonosan mozog a kliensoldalon (írtad, hogy inkább a szerveroldalon vagy otthon). Egy webalkalmazás fejlesztésénél ez szerintem elkerülhetetlen. Elég sok a buktató.
14

Igazad lehet…

kemma3 · 2014. Nov. 3. (H), 14.35
Habár a JQuery-ig még nem volt gond. :)
12

Különbségek

Poetro · 2014. Nov. 3. (H), 13.44
Igazából nem a kattintásra gondoltam, hanem drag, scroll, swipe, pinch, pan stb. implementálására, amik egy webalkalmazás esetén szerintem előfordulnak. A scrollbar hiánya alatt nem tudom mire gondolsz, több operációs rendszeren nem jelenik meg gördítősáv egészen addig, amíg el nem kezdesz görgetni (iOS, Android, MacOS X, Linux egyes beállításai mellett stb).
15

Utána megyek majd…

kemma3 · 2014. Nov. 3. (H), 14.39
A napokban majd kivizsgálom, hogy pontosan hol veszik el a görgetés lehetősége, jelenleg annyit látni csak, hogy se fel, se le nem mozdul. Ezt elsőre elfogadtam, hogy ez nem ilyen egyszerű és kész, de akkor kivizsgálom, hogy pontosan mi történik, és ha ennél pontosabb hibajelzést tudok mondani, akkor egy új külön témában majd rákérdezek.
4

Fejleszd tovább

Pepita · 2014. Nov. 3. (H), 10.40
Írtam róla
Fejleszd tovább, ma már több kell.
Jó lehet az is, ha választhat a kliens és lemented egy sütibe, vagy userid alapján.
Hirtelen inkább sütire szavaznék, mert több gépről is jöhet.
6

Itt is UserAgent.

kemma3 · 2014. Nov. 3. (H), 11.04
Ha jó látom, akkor itt is szerver oldalon, UserAgent-ből olvasod ki, hogy mobil verzióról van-e szó. Legalábbis ha jól értem ezt az utasítást: $this->CI->agent->is_mobile()

A kérdés pont az, hogy megállapítható szerver oldalon, hogy mobilról beszélünk-e, illetve mennyire jól állapítható meg? Ha jól veszem ki, akkor te is ezt a verziót használod, kiegészítve, hogy a váltás lehetőségét meghagyod. Fejlesztés alatt meg arra gondolsz, hogy session helyett sütiben tartani az értéket?

Azt azért nem tartom annyira jó ötletnek, hogy meg sem próbáljuk kitalálni a készülék típusát, minden új felhasználót nem akarok választás elé állítani.
13

igen

Pepita · 2014. Nov. 3. (H), 13.57
Próbáld megállapítani, de ezt mondta Poetro is, hogy sosem lesz 100%-os, sűrűn frissíteni kell az adatbázisod, és nem mindig találod el pontosan. (És lehet egy mobilnak is akkora kijelzője mint egy tabletnek.)

Ezért kell még a választási lehetőség is, és ha már kiválasztotta (ez maradt ki a cikkből), "illik" megjegyezni, hogy mit akart. Aztán ha visszavált, azt jegyzed meg.