Otvaranje postavki mobilnog uređaja iz Ionic aplikacije

Prilikom izrade Ionic mobilnih aplikacija jedan od zahtjeva može biti da se iz aplikacije mogu otvoriti neke od postavki mobilnoj uređaja. Npr. postavke vezane uz geolokaciju, WiFi ili nešto treće. Puno je jednostavnije omogućiti korisniku da klikom na jedan gumb ode direktno na postavke koje su mu u tom trenutku potrebne kako bi unutar Ionic aplikacije nešto obavio nego da sam mora tražiti te iste postavke.

Od postavki kojima je moguće pristupiti koristeći ovaj plugin dostupno je sljedeće:

Kreiranje aplikacije

Kreiram novi Ionic projekt i odmah dodajem Android platformu jer planiram aplikaciju pokrenuti na mobilnom uređaju.

Open Native Settings

Plugin Open Native Settings instaliram sljedećim naredbama:

Nakon toga ovaj plugin deklariram unutar app.module.ts datoteke.

Funkcionalnost se nalazi unutar home.ts datoteke tj. unutar HomePage klase, a sastojat će se od funkcija od kojih svaka otvara neku od ranije navedenih postavki mobilnog uređaja.

Open Native Settings

Ako neku od postavki pozivam na ovaj način this._openNativeSettings.open("accessibility") ekran s postavkama će se otvoriti umjesto ekrana Ionic aplikacije dok ako dodam parametar true na sljedeći način this._openNativeSettings.open(["accessibility", true]) otvara se novi ekran s postavkama što se može vidjeti na sljedećoj slici.

Open Native Settings

Ovo na ekranu izgleda ovako:

Open Native Settings

Zaključak

Struktura projekta prema package.json

Što je i čemu služi Ionic Native 4.x?

Prošlo je skoro 2 godine od kako sam objavio blog post pod naslovom “Čemu služi Ionic Native 3.x?“. S obzirom da su se od tada neke stvari promijenile, stigao je Ionic Framework verzije 4, pravo je vrijeme za novi blog post.

Ionic Native je kolekcija Cordova pluginova koji unutar Ionic aplikacije omogućavaju korištenje nativnih funkcionalnosti mobilnih uređaja.

Ionic Native je od sada dostupan u dva izdanja: Community Edition i Enterprise Edition.

Native Core

Ionic Native Community Edition

Ovo izdanje označava pluginove koje održava open source zajednica tj. Ionic tim ih ne održava, ne popravlja niti garantira da će bilo koji od njih ispravno raditi.

Način instalacije:

Ionic Native Enterprise Edition

Ovo izdanje označava pluginove koje održava, popravlja i za njih garantira Ionic tim.

Posebno je zanimljivo što uključuje Native Core set funkcionalnosti što znači da se unutar jednog plugina nalazi nekoliko važnijih funkcionalnosti.

Način instalacije:

Korištenje s Angularom

Svaki se plugin nakon instalacije dodaje unutar app.module.ts datoteke. Npr. u nastavku se nalazi primjer korištenja Camera plugina.

Ovdje je posebno važno paziti da svaki plugin korišten u Angular projektu ima na kraju oznaku /ngx. Oko ovoga u zadnje vrijeme ima dosta pitanja na Stackoverflowu.

Ulaganje u investicijske fondove

Investicijski fondovi su financijske organizacije ili institucionalni investitori koji prikupljaju sredstva od svojih ulagača te ih plasiraju u kratkoročne i dugoročne investicije, odnosno u različite financijske oblike. Pojavljuju se na financijskom tržištu kao institucionalni ulagatelji koji putem javne ponude prikupljaju financijska sredstva te ih, uz uvažavanje načela sigurnosti, profitabilnosti, likvidnosti i razdiobe rizika, ulažu u prenosive vrijednosne papire ili nekretnine, te depozite u financijskim institucijama. – Wikipedia.

Uvod

U blog postu o otvorenoj, aktivnoj, štednji može se vidjeti da štednja ne služi povećanju vrijednosti novca, nego eventualno očuvanju vrijednosti, ali zauzvrat daje određenu sigurnost.

Recimo da u svojoj ukupnoj imovini imate puno gotovine, koja znači likvidnost – primjerice, manja šansa da ćete morati zagrabiti u npr. portfelj za školovanje djece u slučaju neplaniranih rizika, kao što je bolest. Tada tada u tom portfelju možete imati dugoročniji pristup s, primjerice, preuzimanje više rizika nelikvidnosti ali s većim očekivanim prinosom. – Ulagačke osnove: Investicijski ciljevi i alokacija u investicijske klase

Međutim, ako želimo povećati vrijednost novca, što dolazi uz određeni rizik, onda je potrebno gledati druge investicijske klase, kao što su nekretnine (potrebno imati dosta kapitala da bi se kupilo nešto na dobroj lokaciji + nisu likvidne), investicijsko zlato (upitna isplativost kupovine “na komad” zbog troškova transporta + troškovi skladištenja), dionice (ako se kupuju “na komad” pitanje je koliko će to na kraju biti isplativo imajući u vidu sve naknade), korporativne i državne obveznice, (ako se kupuju “na komad” pitanje je koliko će to na kraju biti isplativo imajući u vidu sve naknade)…

Malog ulagač, početnik, koji još nema dovoljno znanja i kapitala za konkretnija ulaganja u jednu konkretnu investicijsku klasu, a koji ipak želi postepeno raditi na povećanju imovine ostaje za istražiti nešto treće.

U što god od gore navedenog uložili potrebno je znati koji je cilj ulaganja, na koji vremenski period te uz koji rizik. Treba se također pitati “Jesam li spreman sve uloženo izgubiti?” – ako je odgovor ˝da˝ može se ulagati u rizičnije investicijske klase kao što su dionice, ali ako je odgovor ˝ne˝ mogu se gledati npr. obveznice.

Jasno, investitori ili štediše (što je isto) žele što manje rizika. Za isti očekivani prinos, preferiraju manje rizičnu investiciju. Ili, za isti rizik, žele veći prinos. – Ulagačke osnove: Rizik i prinos (1)

Zlatna sredina mogu biti investicijski fondovi koji ulaganjem u više različitih financijskih instrumenata umanjuju rizik. Npr. umjesto da pojedinac kupi dionice i/ili obveznice može uzeti udjele u nekom mješovitom investicijskom fondu i tako smanjiti potencijalni rizik jer ako jedna dionica tj. obveznica “padne” neka druga ima mogućnost da taj gubitak poništi ili donijeti prinos.

Investicijski fondovi

Dijele se u dvije grupe – aktivno i pasivno upravljani fondovi (u pravilu imaju niže naknade od aktivnih fondova).

Iako, aktivno upravljani, investicijski fondovi imaju svojih mana smatram da se toga ne treba bojati nego bolje analizirati dostupne opcije za investiranje imajući to u vidu. U nastavku više o aktivno upravljanim fondovima.

Fondovi mogu biti aktivno i pasivno upravljani. Pretpostavka aktivnog upravljanja jest da je moguće ostvariti prinose bolje od ukupnog tržišta, odnosno bolje od prinosa na neki određeni tržišni segment, poput dioničkog indeksa. U tu svrhu, razvijaju se tehnike analize i trgovanja koje bi omogućile odabir investicija s natproječnim rezultatima. No, takvi rezultati su često umanjeni zbog samog načina aktivnog upravljanja, koje uzrokuje visoke troškove analize i upravljanja, kao i transakcijske i porezne troškove. Pasivno upravljani fondovi temelje svoj pristup na držanju dobro diversificiranog portfelja te na dugoročnom rastu tržišta kapitala i ekonomije. U posljednje vrijeme popularni postaju indeksni fondovi koji prate neki indeks kao svoj benchmark, odabirajući one investicije i u onom omjeru kako bi u potpunosti oponašali prinose odabranog indeksa. – Analiza upravljanja portfeljem – Financijski klub

Ulagači u fondove u tri godine zaradili od 8 do 15 posto uloga, a štediše u banci tek 1%
Izvor: https://www.jutarnji.hr/vijesti/hrvatska/evo-sto-se-vise-isplati-ulagaci-u-fondove-u-tri-godine-zaradili-od-8-do-15-posto-uloga-a-stedise-u-banci-tek-1/6469609/

Fondovi s dospijećem (Target Date)

U početku nastoje povećati vrijednost imovine ulaganjem na dioničkim tržištima, a u zadnjim godinama ulaganja rade na očuvanju vrijednosti sredstava. – Izvor

Obveznički fondovi (Fixed Income)

Ulažu u državne i korporativne obveznice, kamatonosone instrumente kojima se trguje. Karakterizira ih manja rizičnost od primjerice dioničkih fondova. – Izvor

Dionički fondovi (Equity, Stock)

Primarno investiraju u dionice zbog dugoročnog ostvarivanja viših prinosa. Promjenjivost cijene udjela pri tome je manje važna što je dulji rok investiranja. – Izvor

Novčani fondovi (Money Market, Cash)

Investiraju u depozite banaka, instrumente novčanih tržišta i kratkoročne dužničke vrijednosnice. Rast vrijednosti imovine fonda je polagan, ali kontinuiran. – Izvor

Mješoviti fondovi (Mixed, Balanced)

Kombinacija obvezničkih i dioničkih fondova zbog mogućnosti ostvarenja viših prinosa ulaganjima u dionice, ali istodobno i stabilnost ulaganja u obveznice. – Izvor

Zaključak

Ovaj blog post nije preporuka za ulaganje nego glasno razmišljanje na temu, otvorenih, investicijskih fondova koje sam u zadnje vrijeme počeo intenzivnije proučavati. Ako imate iskustva s njima ili nekakav prijedlog slobodno se javite u komentarima.

Nije mi cilj niti mogu pisati kao Nenad Bakić, ali mogu preporučiti Bakićeve tekstove o osnovama ulaganja.

Mjerilo uspješnosti otvorenog investicijskog fonda jest rast vrijednosti udjela čiji rast se tretira kao prinos. Vrijednost udjela mijenja se ovisno o promjenama cijena (tečajeva) vrijednosnih papira u koje su uložena sredstva. Na primjer ako cijene vrijednosnih papira u vlasništvu fonda u vremenskome periodu od godinu dana poraste za 25%, automatski dolazi do porasta imovine fonda (prinosa), pa je na taj način ostvaren i porast svakog pojedinog udjela u fondu u visini od 25%.- Wikipedia

Google Distance Matrix API – prikaz informacija o udaljenosti i vremenu putovanja između dvije lokacije na Google karti

U ovom ću blog postu pokazati kako koristiti Google® Distance Matrix API za prikaz informacija o udaljenosti i vremenu putovanja između dvije ili više lokacija na Google karti. Ideja za ovaj blog post došla je iz jednog projekta od prije nekoliko mjeseci, slično ovome, gdje smo kod kolege ugrađivali ovaj jednostavan, a vrlo koristan API.

The Distance Matrix API is a service that provides travel distance and time for a matrix of origins and destinations. The API returns information based on the recommended route between start and end points, as calculated by the Google Maps API, and consists of rows containing duration and distance values for each pair. – Developer Guide

Priprema projekta

Unutar Google Cloud Platform Console sučelja trebam prvo kreirati novi projekt ili odabrati postojeći.

Google Cloud Platform

S obzirom da sam prije koristio nekoliko različitih Google API-ja već imam postojeće projekte, ali ovaj API ne želim dodati niti u jedan od njih pa ću kreirati novi.

Google Cloud Platform

Novi projekt će se zvati APIs4Blog.

Google Cloud Platform New Project

Nakon što se novi projekt kreira pojavit će se sljedeći ekran. Ovdje me zanima gumb “ENABLE APIS AND SERVICES”.

Google Cloud Platform

Klikom na gumb “ENABLE APIS AND SERVICES” dolazim do sljedećeg ekrana gdje mogu vidjeti sve dostupne API-je.

Google Cloud Platform

Pomoću tražilice pronalazim Distance Matrix API.

Distance Matrix API Google Cloud Platform

Ovdje se još jednom mogu vidjeti detalji kao i cijena korištenja Distance Matrix API-ja.

Distance Matrix API Google Cloud Platform

Klikom na “ENABLE” mogu vidjeti sučelje s informacijama o korištenju API-ja.

Distance Matrix API Google Cloud Platform

Odmah se prebacujem na Credentials tab kako bi ondje kreirao API KEY bez kojega ne mogu koristiti Distance Matrix API.

Distance Matrix API Google Cloud Platform

API KEY je uspješno kreiran i spreman za korištenje.

Google Matrix API KEY

Implementacija

URL za slanje zahtjeva izgleda ovako:

Format dobivenih rezultata.

outputFormat određuje format dobivenih rezultata koji može biti u dva oblika: json ili xml. Maksimalna dužina URL-a je 8192 znakova.

Obavezni parametri (parameters)

Primjer API poziva sa obaveznim parametrima:

Kod parametara je situacija nešto složenija i postoje razne kombinacije kao što su:

Polazište (origins)

Polazište označava početnu lokaciju. Može biti zadano u obliku adrese, koordinata ili place ID-a.

Ako se za početnu lokaciju koristi više adresa ili koordinata između njih je potrebno staviti sljedeći znak “|”.

Korištenje adrese kao polazišta:

Distance Matrix API Adresa

Korištenje koordinata kao polazišta:

Distance Matrix API koordinate

Korištenje Place ID-a kao polazišta:

Distance Matrix API place ID

Odredište (destinations)

Jednak oblik kao i za polazište.

API Ključ (API KEY)

Njega sam kreirao ranije u ovom blog postu.

Opcionalni parametri
  • mode – označava način prijevoza koji će se koristiti pri izračunavanju udaljenosti. Moguće je birati između: driving (vožnja, ako se ništa ne odabere uzima se ovaj parametar), walking (hodanje), bicycling (bicikl), transit (javni prijevoz, ako postoji).

Google Distance Matrix API mode walking

Google Distance Matrix API language

  • region – označava odabir države prema ccTLD. Ovaj parametar će utjecati na rezultate geokodera, ali ako relevantniji rezultati postoje izvan određenog područja, oni mogu biti uključeni u rezultat.
  • avoid – omogućava odabir ograničenja za rutu. Npr. izbjegavati cestarinu (avoid=tolls), autocestu (avoid=highways).

Više o ostalim parametrima.

Kasnije je unutar sučelja moguće vidjeti statistiku korištenja API-ja.

Google Distance Matrix API statistika

Ionic Card IO – prikupljanje podataka s bankovne kartice

U ovom ću blog postu pokazati kako napraviti jednostavnu Ionic aplikaciju koja će imati mogućnost prikupljanja podataka s bankovne kartice kako bi se moglo provesti plaćanje.

Važna napomena! Ovdje navedeni primjer tiče se samo klijentske strane i plaćanje neće biti provedeno. Za to je potreban i backend koji je moguće napraviti u npr. NodeJS-u.

Što je Card IO?

https://www.card.io/ omogućava skeniranje bankovne kartice kako bi se olakšalo i ubrzalo plaćanje.

Više o funkcionalnostima moguće je pronaći na poveznici https://github.com/card-io/card.io-Cordova-Plugin ili unutar dokumentacije Ionic Native 3.x Card IO plugina

Nekoliko je opcionalnih parametara koji se mogu koristiti prilikom skeniranja bankovne kartice unutar CardIOOptions objekta:

S druge strane, tu je i CardIOResponse objekt unutar kojega je moguće odrediti koje informacije želimo dobiti nakon što se uspješno obavi skeniranje bankovne kartice.

Kreiranje aplikacije

Kreiram novi Ionic projekt i odmah dodajem Android platformu.

Card IO implementacija

Za početak, instaliram Ionic Native 3.x plugin Card IO.

Nakon toga ovaj plugin deklariram unutar app.module.ts datoteke.

Sadržaj ekrana neće sadržavati ništa posebno. Glavna funkcionalnost krije se iza gumba tj. funkcije scanCard().

Ipak, kako bi se kartica mogla uslikati potrebno je dati odobrenje koje će biti automatski zatraženo prilikom prvog pokretanja aplikacije.

Ionic Card IO - početni ekran

Funkcionalnost se nalazi unutar home.ts datoteke tj. unutar HomePage klase.

Vezano uz ranije navedeni CardIOOptions objekt, ako ga postavim na sljedeći način

Ekran za skeniranje tj. za ručni unos podataka s bankovne kartice izgleda ovako:

Ionic Card IO

Međutim, ako to malo drugačije posložim

i ekrani će izgledati drugačije

Ionic Card IO

S obzirom da u ovom primjeru ne želim koristiti svoju karticu iskoristit ću dostupne demo podatke sa adrese https://www.datatrans.ch/showcase/test-cc-numbers

Test card numbers

Prikupit ću podatke s dvije kartice.

Ionic Card IO

Što unutar Chrome Developer konzole izgleda ovako:

Ionic Card IO

Zaključak

Struktura aplikacije prema package.json