Istruzioni per installare l'APP: Android, iOS

This commit is contained in:
Surya Paolo
2023-01-25 20:52:47 +01:00
parent e58f7249a6
commit 23fd5fc5ef
20 changed files with 131 additions and 38 deletions

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.5.60" APP_VERSION="0.5.61"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.5.60" APP_VERSION="0.5.61"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.5.60" APP_VERSION="0.5.61"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.5.60" APP_VERSION="0.5.61"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="13" APP_ID="13"
DIRECTORY_LOCAL=newfreeplanet DIRECTORY_LOCAL=newfreeplanet

View File

@@ -1,4 +1,4 @@
APP_VERSION="0.5.60" APP_VERSION="0.5.61"
SERVICE_WORKER_FILE="service-worker.js" SERVICE_WORKER_FILE="service-worker.js"
APP_ID="14" APP_ID="14"
DIRECTORY_LOCAL="newfreeplanet" DIRECTORY_LOCAL="newfreeplanet"

View File

@@ -123,15 +123,7 @@
"crypto": false "crypto": false
}, },
"browserslist": [ "browserslist": [
"last 30 Chrome versions", "defaults"
"last 30 Firefox versions",
"last 4 Edge versions",
"last 30 Safari versions",
"last 30 Android versions",
"last 30 ChromeAndroid versions",
"last 30 FirefoxAndroid versions",
"last 18 iOS versions",
"last 11 Opera versions"
], ],
"engines": { "engines": {
"node": ">= 16.14.0", "node": ">= 16.14.0",

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -310,9 +310,11 @@ module.exports = configure((ctx) => ({
description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.', description: 'Siamo la Rete Italiana di Scambio Orizzontale, abbiamo creato questa piattaforma per metterla al servizio di chi vuole riscoprire il valore della condivisione e della cooperazione. Valori semplici e profondi che ci aiutano a ritrovare il Senso della Vita, perduto in questa società consumista, e riporti quei Sani Pricìpi Naturali ed Umani di Fratellanza che intere popolazioni antiche conoscevano bene.',
display: 'standalone', display: 'standalone',
orientation: 'portrait', orientation: 'portrait',
background_color: '#ffffff', background_color: '#fff',
theme_color: '#027be3', theme_color: '#027be3',
start_url: '/', scope: "/",
id: "/?homescreen=1",
start_url: "/?homescreen=1",
icons: [ icons: [
{ {
src: 'images/riso-android-icon-512x512.png', src: 'images/riso-android-icon-512x512.png',
@@ -360,6 +362,10 @@ module.exports = configure((ctx) => ({
type: 'image/png', type: 'image/png',
}, },
], ],
related_applications: [{
"platform": "webapp",
"url": "https://test.riso.app/manifest.json"
}]
}, },
}, },

View File

@@ -28,6 +28,7 @@ export default {
const $q = useQuasar() const $q = useQuasar()
const userStore = useUserStore() const userStore = useUserStore()
const $router = useRouter() const $router = useRouter()
const $route = useRoute()
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
const { t } = useI18n(); const { t } = useI18n();
@@ -82,6 +83,8 @@ export default {
console.log('app mounted') console.log('app mounted')
darkcookie.value = tools.getCookie('darkmode', false, false, false) === '-1' darkcookie.value = tools.getCookie('darkmode', false, false, false) === '-1'
globalStore.homescreen = $route.query.homescreen ? $route.query.homescreen : ''
scroll() scroll()
} }

View File

@@ -24,6 +24,11 @@ export default defineComponent({
const finishLoading = computed(() => globalStore.finishLoading) const finishLoading = computed(() => globalStore.finishLoading)
const deferredPrompt = computed(() => globalStore.deferredPrompt) const deferredPrompt = computed(() => globalStore.deferredPrompt)
const homescreen = computed(() => globalStore.homescreen)
const viewiOS = ref(false)
const viewAndroid = ref(false)
function installApp() { function installApp() {
if (globalStore.deferredPrompt) { if (globalStore.deferredPrompt) {
@@ -56,6 +61,9 @@ export default defineComponent({
installApp, installApp,
isAppRunning, isAppRunning,
deferredPrompt, deferredPrompt,
viewiOS,
viewAndroid,
homescreen,
} }
} }
}) })

View File

@@ -2,11 +2,14 @@
<div v-if="tools.isDebugOn()" class="bg-red text-white"> <div v-if="tools.isDebugOn()" class="bg-red text-white">
<span> isAppRunning: {{ isAppRunning }} - </span> <span> isAppRunning: {{ isAppRunning }} - </span>
<span> deferredPrompt: {{ deferredPrompt }} - </span> <span> deferredPrompt: {{ deferredPrompt }} - </span>
<span> finishLoading: {{finishLoading}} - </span> <span> homescreen: {{ homescreen }} </span>
</div> </div>
<div v-if="finishLoading && !isAppRunning && deferredPrompt" class="row justify-center"> <div v-if="finishLoading" class="row justify-center">
<div v-if="!isAppRunning" class="q-ma-sm">
<!-- App not running -->
<q-btn <q-btn
v-if="deferredPrompt"
glossy glossy
size="xl" size="xl"
label="Installa App" label="Installa App"
@@ -14,7 +17,80 @@
icon="fas fa-mobile-alt" icon="fas fa-mobile-alt"
color="green" color="green"
text-color="white" text-color="white"
/> ></q-btn>
<div v-else>
<div v-if="$q.platform.is.ios && $q.platform.is.safari">
<q-btn
glossy
size="xl"
label="Installa App su iOS"
@click="viewiOS = !viewiOS"
icon="fab fa-apple"
color="green"
text-color="white"
></q-btn>
<q-slide-transition>
<!-- Mostra spiegazione per iOS -->
<div v-if="viewiOS">
<q-img
src="images/install_app_on_ios_1.png"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
<q-img
src="images/install_app_on_ios_1b.jpg"
class="q-mb-md"
></q-img
><br />
<q-img
src="images/install_app_on_ios_2.jpg"
fit="contain"
></q-img>
</div>
</q-slide-transition>
</div>
<div v-if="$q.platform.is.android">
<q-btn
glossy
size="lg"
label="Installa App su Android"
@click="viewAndroid = !viewAndroid"
icon="fab fa-android"
color="green"
text-color="white"
></q-btn>
<q-slide-transition>
<!-- Mostra spiegazione per Android -->
<div v-if="viewAndroid">
<div class="q-ma-sm text-h6"> 1) Cliccare sui 3 puntini verticali<br>
2) Cliccare su 'Installa App' o 'Schermata Home'
</div>
<q-img
src="images/install_app_on_android_1.jpg"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
<q-img
src="images/install_app_on_android_2.jpg"
fit="contain"
style="min-width: 350px"
class="q-my-sm"
></q-img
><br />
</div>
</q-slide-transition>
</div>
</div>
</div>
</div> </div>
<!--<div class="row justify-center"> <!--<div class="row justify-center">
<CBigBtn <CBigBtn

View File

@@ -76,8 +76,14 @@ export default defineComponent({
// if (tools.isDebug()) return 'bg-info' // if (tools.isDebug()) return 'bg-info'
if (globalStore.site && globalStore.site.confpages?.col_toolbar) if (globalStore.site && globalStore.site.confpages?.col_toolbar)
return 'bg-' + globalStore.site.confpages?.col_toolbar return 'bg-' + globalStore.site.confpages?.col_toolbar
else else {
if (globalStore.homescreen) {
return 'bg-blue'
} else {
return 'bg-light-blue' return 'bg-light-blue'
}
}
}) })
const getColorText = computed(() => { const getColorText = computed(() => {

View File

@@ -459,8 +459,9 @@ export interface IGlobalState {
editOn?: boolean, editOn?: boolean,
myselector: ISelector, myselector: ISelector,
addNewRecord: string, addNewRecord: string,
isAppRunning: boolean isAppRunning: boolean,
deferredPrompt: any deferredPrompt: any,
homescreen: any,
} }
export interface IMenuList { export interface IMenuList {

View File

@@ -618,7 +618,7 @@ const msg_it = {
code_resetpwd_error: 'Il codice inserito non è corretto.', code_resetpwd_error: 'Il codice inserito non è corretto.',
duplicate_email: 'l\'Email è già stata registrata', duplicate_email: 'l\'Email è già stata registrata',
invalid_email: 'l\'Email non è valida', invalid_email: 'l\'Email non è valida',
invalid_email_micro: 'Questa tipo di email non è funzionante sui nostri server. Si consiglia di usare Gmail o altra casella.', invalid_email_micro: 'Questa tipo di email non è funzionante sui nostri server. Si consiglia di usare Gmail o un\'altra email.',
user_already_exist: 'La registrazione con questi dati (nome, cognome e cellulare) è stata già effettuata. Per accedere al sito, cliccare sul bottone LOGIN dalla HomePage.', user_already_exist: 'La registrazione con questi dati (nome, cognome e cellulare) è stata già effettuata. Per accedere al sito, cliccare sul bottone LOGIN dalla HomePage.',
user_extralist_not_found: 'Utente in archivio non trovato, inserire il Nome, Cognome e numero di cellulare comunicato nella lista nel 2019. Se questa è una nuova registrazione, dovete registrarvi tramite il LINK di chi vi sta invitando.', user_extralist_not_found: 'Utente in archivio non trovato, inserire il Nome, Cognome e numero di cellulare comunicato nella lista nel 2019. Se questa è una nuova registrazione, dovete registrarvi tramite il LINK di chi vi sta invitando.',
user_aportador_not_valid: 'Il link di registrazione non sembra risultare valido.', user_aportador_not_valid: 'Il link di registrazione non sembra risultare valido.',

View File

@@ -7554,8 +7554,8 @@ export const tools = {
}, },
checkApp() { checkApp() {
console.log('checkApp')
const globalStore = useGlobalStore() const globalStore = useGlobalStore()
console.log('checkApp (homescreen=', globalStore.homescreen)
try { try {
let displayMode = 'browser' let displayMode = 'browser'
@@ -7569,7 +7569,7 @@ export const tools = {
// prova altro 2 // prova altro 2
console.log('displayMode = ', displayMode) console.log('displayMode = ', displayMode)
globalStore.isAppRunning = displayMode === 'standalone' globalStore.isAppRunning = displayMode === 'standalone' || globalStore.homescreen
} catch (e) { } catch (e) {
console.log('error navigator.standalone ?!') console.log('error navigator.standalone ?!')
} }

View File

@@ -186,6 +186,7 @@ export const useGlobalStore = defineStore('GlobalStore', {
addNewRecord: '', addNewRecord: '',
isAppRunning: false, isAppRunning: false,
deferredPrompt: null, deferredPrompt: null,
homescreen: '',
}), }),
getters: { getters: {