In principe hebben zowel iOS als Android een browser, dus ja, maar bedoel je hier als webpagina of als app? Het is allebei mogelijk maar vereist doorgaans wel een andere aanpak. Als je een webpagina in een app wilt hebben kun je iets als Cordova gebruiken, dan kan je via plugins deels gebruik maken van native capabilities van je platform. Voor een webpagina zul je verschillende JavaScript API's moeten raadplegen (welke overigens binnen Cordova ook gewoon werken).
Nu weet ik dat je via bootstrap een website responsive kan maken
Met Bootstrap kun je een responsive website maken, je kunt er niet een website mee responsive maken. Dit is een wezenlijk verschil. Laadt bijvoorbeeld Bootstrap in een niet Bootstrap website in en alles gaat kapot (het is alles behalve scoped en doet heel veel vieze global meuk). Je kunt niet pijnloos Bootstrap op een stapel bestaande code gooien en verwachten dat dat werkt. Dan is vaak zelf de CSS aanpassen met wat media queries sneller.
maar er moeten ook wat extra functies worden toegevoegd op de telefoon versie zoals een barcode scanner en foto's maken of uploaden vanuit de galerij.
In ieder geval iOS geeft je de keuze om een foto te maken dan wel te kiezen met een simpele file input. Je zou deze client side of server side kunnen verwerken om zo een barcode te achterhalen. Direct toegang tot de camera(s) (met user toestemming)
zou mogelijk moeten zijn.
Heeft iemand een goed idee hoe ik dit kan aanpakken?
Volgens mij heb je een relatief eenvoudige (ik kan er naast zitten) form applicatie met als enige spannende component je barcode scanner. Met een beetje styling krijg het je basis formulier wel goed op je scherm. Qua barcode moet je even kijken of je ook barcode scanners op desktop wil ondersteunen (AFAIK zijn dit gewoon veredelde toetsenborden en heb je dan dus ook de mogelijkheid tot handmatige input nodig). Mocht je voor de camera aanpak gaan kun je het volgende doen:
- De
FileReader API gebruiken om file inputs uit te lezen. Hiermee vervolgens voor de geselecteerde file(s) iets als een data url lezen (
readAsDataUrl() en deze omzetten naar ImageData (door bijvoorbeeld de gekozen afbeelding op een canvas te zetten en dat getImageData() aan te roepen) en dat vervolgens door een
javascript barcode reader heen te halen.
Dit zijn aardig wat stappen en interfaces die je met elkaar moet laten praten maar het is zeker mogelijk.
Of
- Proberen te werken met
getUserMedia(), hiermee kan je direct naar een canvas vullen met video data en deze dan weer direct processen. Een stuk experimenteler maar je kan er weel een stuk mooiere UI mee maken.
Houd er wel rekening mee dat mogelijk niet alle devices dit juist zullen ondersteunen, goed testen dus met daadwerkelijk devices (Android/iOS).
Of
- File input async uploaden en via de backend een barcode proberen te achterhalen.
Deze aanpak zou ik alleen nemen als de bovenstaande niet goed voor je uitpakken of er zwaarwegende redenen zijn om het op de backend te doen.. Je verstuurd hiermee namelijk nodeloos data (afbeeldingen) terwijl het probleem gewoon client side opgelost kan worden.
[
Voor 4% gewijzigd door
Ed Vertijsment op 29-08-2018 22:40
]