App per xm, prende i contenuti dal sito e te li salva nel cellulare. ## Environment ## ### NodeJs ### add gpg key using `curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -` add APT repo (verify/create) nodesource.list file in /etc/apt/sources.list.d with: ``` deb https://deb.nodesource.com/node_6.x jessie main deb-src https://deb.nodesource.com/node_6.x jessie main ``` Alternative setup (it supports Kali, Debian, Mint, ...): `sudo curl -sL https://deb.nodesource.com/setup_6.x | bash -` (it supports Kali, Debian, Mint, ...) Cleanup: `apt-get purge nodejs` Refresh: `apt-get update && apt-get install nodejs nom` ADK (android developer kit) e ### Cordova CLI ### Cordova si intalla con npm, packager di nodejs `npm install -g cordova` ### Android tool ### ADK (android developer kit) P.S. Con l'ultima versione di Android Studio è necessario scaricare a mano gli [android tools](https://dl.google.com/android/repository/tools_r25.2.3-linux.zip). ### Appunti ### http://www.digitigrafo.it/module/1249 ## Build del progetto ## ### Android ### `cordova platform rm android` Per rimuovere la piattaforma vecchie di Android `cordova platform add android` Per aggiungere la piattaforma nuova. Durante questa operaionze i seguenti plugin verranno auto installti: * cordova-plugin-compat * cordova-plugin-file * cordova-plugin-media * cordova-plugin-whitelist * cordova-sqlite-storage * phonegap-plugin-push ``` cordova plugin add cordova-plugin-network-information \ cordova-plugin-x-socialsharing \ cordova-plugin-splashscreen ``` Forse non serve, ma l'howto di [cordova-plugin-x-socialsharing](https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin) dicono di farlo: `cordova prepare` Per installare il plugin sulla rete che non viene installato in automatico `cordova run android` Per lanciare l'emulatore Android con l'applicazione. Ovviamente si deve aver configurato il proprio environment correttamente. ### iOS ### Installando `phonegap-plugin-push` se si incontra questo errore: ``` Installing "phonegap-plugin-push" for ios *Failed to install 'phonegap-plugin-push':undefined* Error: CocoaPods was not found. Please install version 1.0.1 or greater from https://cocoapods.org/ ``` Occore installare `CocoaPods` come descritto sulla [documentazione del plugin](https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/INSTALLATION.md#ios-details) ## PARTE NOTIFICHE ## ### NUOVO PAYLOAD DI NOTIFICA RICEVUTO DALL'APP ### Nel payload della notifica ho aggiunto nuove informazioni, assomiglia a questo: { "title": "La proposta di legge regionale sull’urbanistica", "message": "Test Message!", "additionalData": { "force-start": "1", "topic_id": "1", "updated_at": "2017-03-26 10:27:02", "id": "5", "url": "http://www.ecn.org/xm24/evento/legge-reggionale-urbanistica/?instance_id=31510", "type": "event", "data":{"id":31510}, "google.message_id": "0:1490524022974534%91acc10d261f455d", "created_at": "2017-03-26 10:27:02", "collapse_key": "test-title", "visibility": "1" } } - "type": "notice" OR "alarm" or "event" indica il tipo di notifica, può essere utilizzato per avere comportamenti diversi dell'app a seconda che si tratti di un'informazione su un nuovo evento sul sito o di qualcosa di più importante - "url": "http://www.ecn.org/xm24/evento/legge-reggionale-urbanistica/?instance_id=31510" permette di aggiungere un'url al sito. - "data":{"id":31510} è un oggetto/array javascript dove aggiungere chiavi custom per il type di notifica. In questo caso mi sono passato l'id dell'evento nel link ### COME INVIARE LA NOTIFICA ### dalla pagina https://xm.bus.pm/#!/alert è funzionante, la si può usare come sandbox, manca un editor per il campo "data" e la parte sms per il momento è disabilitata, ma la notifica dovrebbe arrivare a tutte le app. da curl invece si può mandare "data" curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"title":"TEST TITLE","message":"Test Message!","topic_id":1,"sms":false,"type":"event","url":"http://www.ecn.org/xm24/evento/legge-reggionale-urbanistica/?instance_id=31510","data":{"id":31510}}' "https://xm.bus.pm/api/a/c" l'indirizzo del POST con curl è "https://xm.bus.pm/api/a/c" il payload mandato è { "title": "La proposta di legge regionale sull’urbanistica", "message": "Test Message!", "topic_id": 1, "sms": false, "type": "event", "url": "http://www.ecn.org/xm24/evento/legge-reggionale-urbanistica/?instance_id=31510", "data": { "id": 31510 } } gli header -H "Content-Type: application/json" -H "Cache-Control: no-cache" ## TODO, ISSUE e FEATURE ## Usiamo l'[issue tracker](https://git.lattuga.net/hacklabbo/Ilovexm24/issues) non il wiki.