{"id":18291,"date":"2020-09-10T11:00:22","date_gmt":"2020-09-10T10:00:22","guid":{"rendered":"http:\/\/www.puship.com\/?page_id=18291"},"modified":"2020-10-14T17:06:41","modified_gmt":"2020-10-14T16:06:41","slug":"ionic-framework-on-cordova-example","status":"publish","type":"page","link":"https:\/\/www.puship.com\/it\/ionic-framework-on-cordova-example\/","title":{"rendered":"Ionic su Cordova (Esempio)"},"content":{"rendered":"\n<p>Questa guida mostra come creare un\u2019applicazione (android, iOS o windows) che supporta le notifiche push di&nbsp;<strong>Puship<\/strong>&nbsp;attraverso la piattaforma Ionic Framework sul CLI Cordova.<br>Se \u00e8 la tua prima app con ionic framework ti consiglio di seguirti <a href=\"https:\/\/ionicframework.com\/docs\/developing\/starting\">questa guida<\/a> cosi da installare i tool necessari e fare un po di pratica con una prima applicazione base.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<ol><li>Vai nella directory dove vuoi mantenere il codice sorgente e lancia il seguente comando per creare il progetto:<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">ionic start PushipExample\n--Il primo argomento \u00e8 il nome della tua applicazione<\/pre><\/div>\n\n\n\n<p>Seleziona il framework javascript che preferisci utilizzare, in questo tutorial utilizzeremo Angular. <br>Seleziona il template dal quale vuoi partire per creare il tuo progetto, in questo tutorial utilizzeremo il Blank template.<br>Ionic permette di scegliere se utilizzare la CLI Capacitor oppure Cordova. Dato che in questa guida useremo Cordova seleziona NO alla richiesta di integrazione di Capacitor.<\/p>\n\n\n\n<ol start=\"2\"><li>Posizionati nella cartella del progetto appena creato e lancia i seguenti comandi per installare i plugin necessari: device, geolocation (opzionale se non usi la geolocalizzazione), push e puship.<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">-- geolocation plugin\nionic cordova plugin add cordova-plugin-geolocation\nnpm install @ionic-native\/geolocation\n\n-- device plugin\nionic cordova plugin add cordova-plugin-device\nnpm install @ionic-native\/device\n\n-- push plugin\nionic cordova plugin add phonegap-plugin-push\nnpm install @ionic-native\/push\n\n--puship plugin\nionic cordova plugin add puship-plugin<\/pre><\/div>\n\n\n\n<ol start=\"3\"><li>Modifica il file config.xml impostando il package nell&#8217;attributo <strong>ID<\/strong> del tag <strong>widget<\/strong> e il nome dell&#8217;applicazione nel tag <strong>name<\/strong>.<\/li><li>Modifica il codice nel file&nbsp;<em>src\/app\/app.module.ts<\/em> aggiungendo il provider Push:<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">import { Push } from '@ionic-native\/push\/ngx';\n\nproviders: [\n    StatusBar,\n    SplashScreen,\n\tPush,\n    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }\n  ],<\/pre><\/div>\n\n\n\n<ol start=\"5\"><li>Modifica il codice nel file&nbsp;<em>src\/app\/app.component.ts<\/em> in questo modo:<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">import { Component } from '@angular\/core';\nimport { Platform } from '@ionic\/angular';\nimport { SplashScreen } from '@ionic-native\/splash-screen\/ngx';\nimport { StatusBar } from '@ionic-native\/status-bar\/ngx';\nimport { Push, PushObject, PushOptions } from '@ionic-native\/push\/ngx';\n\ndeclare var Puship;\n\n@Component({\n  selector: 'app-root',\n  templateUrl: 'app.component.html',\n  styleUrls: ['app.component.scss']\n})\nexport class AppComponent {\n  constructor(\n    private platform: Platform,\n    private splashScreen: SplashScreen,\n\tprivate push: Push,\n    private statusBar: StatusBar\n  ) {\n    this.initializeApp();\n  }\n\n  initializeApp() {\n    this.platform.ready().then(() => {\n        this.statusBar.styleDefault();\n        this.splashScreen.hide();\n      \n    \tthis.push.hasPermission()\n    \t  .then((res: any) => {\n    \n    \t\tif (res.isEnabled) {\n    \t\t  console.log('We have permission to send push notifications');\n    \t\t} else {\n    \t\t  console.log('We do not have permission to send push notifications');\n    \t\t}\n    \n    \t  });\n    \t  \n\/\/REMOVE THIS SECTION ON IOS\n    \t\/\/ Create a channel (Android O and above). You'll need to provide the id, description and importance properties.\n    \tthis.push.createChannel({\n    \t id: \"testchannel1\",\n    \t description: \"My first test channel\",\n    \t \/\/ The importance property goes from 1 = Lowest, 2 = Low, 3 = Normal, 4 = High and 5 = Highest.\n    \t importance: 3,\n    \t \/\/badge is used to if badge appears on the app icon see https:\/\/developer.android.com\/reference\/android\/app\/NotificationChannel.html#setShowBadge(boolean).\n    \t \/\/false = no badge on app icon.\n    \t \/\/true = badge on app icon\n    \t badge: false\n    \t}).then(() => console.log('Channel created'));\n    \n    \t\/\/ Delete a channel (Android O and above)\n    \tthis.push.deleteChannel('testchannel1').then(() => console.log('Channel deleted'));\n    \n    \t\/\/ Return a list of currently configured channels\n    \tthis.push.listChannels().then((channels) => console.log('List of channels', channels))\n\/\/REMOVE THIS SECTION ON IOS\n    \n    \t\/\/ to initialize push notifications\n    \n    \tconst options: PushOptions = {\n    \t   android: {},\n    \t   ios: {\n    \t\t   alert: 'true',\n    \t\t   badge: true,\n    \t\t   sound: 'false'\n    \t   },\n    \t   windows: {},\n    \t   browser: {\n    \t\t   pushServiceURL: 'http:\/\/push.api.phonegap.com\/v1\/push'\n    \t   }\n    \t}\n    \n    \tconst pushObject: PushObject = this.push.init(options);\n    \n    \tpushObject.on('notification').subscribe((notification: any) => \n    \t\t\t{\n    \t\t\t\talert('Received a notification:' + JSON.stringify(notification));\n    \t\t\t\t\n    \t\t\t}\n    \t\t);\n    \n    \tpushObject.on('registration').subscribe((registration: any) =>\n    \t\t{ \n    \t\t\tconsole.log('Device registered: ', registration);\n    \t\t\t\n    \t\t\t\/\/Puship.EnableLog(true);\n    \t\t\tPuship.Register(\n    \t\t\t\t\tregistration.registrationId,\n    \t\t\t\t\t'YOUR-PUSHIP-APP-CODE',\n    \t\t\t\t\t{\n    \t\t\t\t\t\tsuccessCallback: function (pushipresult) {\n    \t\t\t\t\t\t\talert(\"device registered with DeviceId:\" + pushipresult.DeviceId());\n    \t\t\t\t\t\t},\n    \t\t\t\t\t\tfailCallback: function (pushipresult) {\n    \t\t\t\t\t\t\talert(\"error during registration: \" + JSON.stringify(pushipresult));\n    \t\t\t\t\t\t}\n    \t\t\t\t\t}\n    \t\t\t\t);\n    \t\t});\n    \n    \tpushObject.on('error').subscribe(error => console.error('Error with Push plugin', error));\n    });\n  }\n}<\/pre><\/div>\n\n\n\n<ol start=\"6\"><li>Segui la <a href=\"https:\/\/www.puship.com\/it\/documentazione\/server\/#ApplicationCreation\">guida a questo link<\/a> per creare una nuova applicazione nel&nbsp;<a href=\"http:\/\/www.puship.com\/it\/membri\/\">Puship Manager<\/a>&nbsp;per ottenere il Puship App ID e sostituisci \u201cYOUR-PUSHIP-APP-CODE\u201d presente nello script sopra.<\/li><li>Attiva il servizio di notifica che necessiti seguendo le guide&nbsp;<a href=\"http:\/\/www.puship.com\/it\/documentazione\/server\/#AppleStore\">Apple<\/a>,&nbsp;<a href=\"http:\/\/www.puship.com\/it\/documentazione\/server\/#GoogleStore\">Google Play<\/a>&nbsp;e&nbsp;<a href=\"http:\/\/www.puship.com\/it\/documentazione\/server\/#WPStore\">Microsoft Store<\/a>.<\/li><li>Per Android: il file&nbsp;<strong>google-services.json<\/strong>&nbsp;va copiato nella cartella <em>android\/app<\/em> e non \u00e8 necessario aggiungere l&#8217;azione resource-file nel <strong>config.xml<\/strong><\/li><li>Per iOS: non \u00e8 necessario creare il file <strong>build.json<\/strong>.<\/li><li>Lancia il comando di build:<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">ionic build<\/pre><\/div>\n\n\n\n<ol start=\"11\"><li>Lancia il comando per aggiungere le piattaforme che stai supportando:<\/li><\/ol>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace remove50pxfromcode\"><div style=\"position:absolute;top:-20px;right:0px;cursor:pointer\" class=\"copy-simple-code-block\"><svg aria-hidden=\"true\" role=\"img\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewbox=\"0 0 20 20\" class=\"dashicon dashicons-admin-page\"><path d=\"M6 15V2h10v13H6zm-1 1h8v2H3V5h2v11z\"><\/path><\/svg><\/div><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"javascript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"true\">ionic cordova prepare android\n\/\/The platform parameter can be android or ios<\/pre><\/div>\n\n\n\n<ol start=\"12\"><li>Avvia ora l&#8217;ambiente in questo modo<ul><li><strong>Android<\/strong>: lancia il comando&nbsp;<strong>ionic cordova run android &#8211;device<\/strong>, se hai installato android studio puoi vedere il log dell&#8217;applicazione semplicemente aprendo la vista Logcat.<\/li><li><strong>iOS<\/strong>: apri xcode, utilizza File -&gt; Apri per aprire l&#8217;applicazione sulla cartella <em>platforms\/ios<\/em>. Dal navigator seleziona il progetto root e sulla sezione signing seleziona il tuo development Team. Verifica di aver impostato iOS developer nella property building. Esegui l&#8217;applicazione cliccando sul pulsante Run.<\/li><li><strong>Windows<\/strong>: lancia il comando&nbsp;<strong>ionic cordova run windows<\/strong>.<\/li><\/ul><\/li><\/ol>\n\n\n\n<p>Ad applicazione avviata dovresti visualizzare il messaggio \u201c<strong>device registered with&#8230;<\/strong>\u201d. Puoi ora connetterti al&nbsp;<a href=\"http:\/\/www.puship.com\/it\/membri\/\">Puship Manager<\/a>&nbsp;e inviare notifiche push ai tuoi device!<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><strong>Nota bene<\/strong>:<\/strong><\/p>\n\n\n\n<ul><li>Le notifiche push non sono supportate sull\u2019emulatore ios.<\/li><li>Le notifiche push sono supportate su emulatore android ma \u00e8 necessario un setup particolare dell\u2019emulatore, \u00e8 quindi consigliato testare su device reale.<\/li><li>Se vuoi integrare il servizio di notifiche push ad un progetto esistente parti dal punto 2.<\/li><\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Di seguito sono disponibili dei video che spiegano passo passo come creare un\u2019applicazione e attivare le notifiche push con Puship per Android e per iOS:<\/p>\n\n\n\n<div class=\"wp-block-columns\">\n<div class=\"wp-block-column\">\n<center><br><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/O3e3xSeeeiQ\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe><\/center>\n<\/div>\n\n\n\n<div class=\"wp-block-column\">\n<center><br><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/ZsELhdGzCyg\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"><\/iframe><\/center>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\">Di seguito trovi il codice utilizzato nei video:<\/p>\n\n\n\n<p style=\"text-align: center;\"><a  itemprop=\"url\" href=\"https:\/\/github.com\/Puship\/ionic-puship-start\" target=\"_self\"  class=\"qbutton  default\" style=\"\">Ionic cordova source<\/a><\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center\">Per poter conoscere dettagliatamente come aggiungere tags, gestire la geolocalizzazione e tutto ci\u00f2 che riguarda il resto delle api puship visita la documentazione comune per tutte le piattaforme:<\/p>\n\n\n\n<p style=\"text-align: center;\"><a  itemprop=\"url\" href=\"https:\/\/www.puship.com\/documentation\/common-library-documentation\/\" target=\"_self\"  class=\"qbutton  default\" style=\"\">Common library documentation<\/a><\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Questa guida mostra come creare un\u2019applicazione (android, iOS o windows) che supporta le notifiche push di&nbsp;Puship&nbsp;attraverso la piattaforma Ionic Framework sul CLI Cordova.Se \u00e8 la tua prima app con ionic framework ti consiglio di seguirti questa guida cosi da installare i tool necessari e fare&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/pages\/18291\/"}],"collection":[{"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/pages\/"}],"about":[{"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/types\/page\/"}],"author":[{"embeddable":true,"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/users\/3\/"}],"replies":[{"embeddable":true,"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/comments\/?post=18291"}],"version-history":[{"count":12,"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/pages\/18291\/revisions\/"}],"predecessor-version":[{"id":18321,"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/pages\/18291\/revisions\/18321\/"}],"wp:attachment":[{"href":"https:\/\/www.puship.com\/it\/wp-json\/wp\/v2\/media\/?parent=18291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}