In questa guida andremo ad analizzare i principali aspetti che riguardano lo sviluppo di applicazioni per dispositivi con piattaforma iOS come, ad esempio, iPhone ed iPad.
Utilizzando le informazioni ed il codice d'esempio mostrato si vogliono fornire al lettore tutte le basi e gli strumenti necessari per poter realizzare, in maniera del tutto autonoma, applicazioni di media complessità.
Come detto precedentemente,...
Entriamo subito nel vivo della trattazione, mostrando i passi preliminari per poter iniziare a sviluppare applicazioni per iOS.
Come prima cosa è necessario iscriversi, in maniera del tutto gratuita, come developer nella pagina dedicata sul sito della Apple raggiungibile a questo link.
E' sufficiente seguire il processo di registrazione, che richiede alcune fasi, per ricevere la conferma via e-mail con...
Nel capitolo precedente abbiamo illustrato come scaricare ed installare gli strumenti di lavoro di cui abbiamo bisogno.
Facciamo adesso una breve panoramica sui linguaggi e sugli strumenti di lavoro che andremo ad utilizzare in questa guida:
Objective C
E' il linguaggio di programmazione con il quale si realizzano applicazioni su piattaforma iOS e per applicativi desktop su piattaforma Mac OS.
Objective...
Prima di iniziare a trattare lo sviluppo vero e proprio di applicazioni per sistemi iOS, è opportuno fare una breve introduzione delle caratteristiche e della struttura di questa piattaforma. Iniziamo con il dire che la struttura del sistema è di tipo stratificato e possiamo dunque immaginarla come una serie di strati, uno sopra l'altro, che implementeranno determinate funzioni. Dunque...
Andiamo adesso a fare una breve panoramica sul linguaggio Objective C.
Come nel linguaggio C, ci troveremo a dover lavorare con file aventi due estensioni: .h e .m.
I file con la prima estensione (.h) sono gli header file e dunque conterranno le definizione delle classi, dei tipi e dei metodi. In sostanza viene mostrato un prototipo della classe e dei...
Abbiamo visto, nella lezione precedente, come strutturare il file header per la definizione di una nuova una classe.
Andiamo adesso a vedere come viene eseguita l'implementazione della classe nel file .m.
Come d'abitudine vediamo un breve listato di codice che poi andremo ad analizzare:
#import "MiaClasse.h"
@implementation MiaClasse
-(void)comparaStringa:(NSString *)stringa2 {
miaStringa = initWithString:@"Hello World"];
if(){
NSLog(@"UGUALI");
...
In Objective C gli attributi di una classe vengono definiti come attributi privati. Ciò vuol dire che dall'esterno è impossibile, in maniera diretta, modificare o sapere il valore di un determinato attributo.
Nella programmazione ad oggetti, ogni attributo di una classe dovrebbe essere sempre privato per poter implementare il concetto di incapsulamento. Per poter accedere agli attributi, solitamente, vengono creati...
Abbiamo visto nei precedenti capitoli, in modo estremamente sintetico, le caratteristiche principali dell'Objective C che lo discostano dagi altri linguaggi di programmazione. Ulteriori approfondimenti riguardo il linguaggio Objective C verranno presentati durante la spiegazione delle applicazioni di esempio che verranno fornite nelle lezioni seguenti.
Andiamo adesso ad esplorare il nostro IDE di sviluppo: Xcode
Lanciamo dunque Xcode e clicchiamo su Create...
Passiamo all'analisi del codice presente nel nostro progetto window-based.
Come possiamo vedere la cartella Classes conterrà solamente due file con la seguente struttura:
NomeProgettoAppDelegate
Il file di header
Andiamo quindi ad aprire il file di header che presenta il seguente codice:
#import <UIKit/UIKit.h?>
@interface TutorialWebMasterAppDelegate : NSObject <UIApplicationDelegate?> {
UIWindow *window;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
Come prima istruzione viene importato il...
All'interno della cartella Other sources è presente il file main.m.
Come in una qualsiasi applicazione C-based, il punto di ingresso di un'applicazione iOS al momento del lancio dell'applicazione è proprio la funzione main.
L'implementazione di questa funzione main è minimale e, nella realizzazione delle vostre applicazioni, non avrete alcuna necessità di modificare questa funzione.
Andiamo adesso ad analizzare il codice contenuto...
Dopo una breve parentesi sulla gestione della memoria, apriamo un nuovo progetto in Xcode e questa volta scegliamo, come template, View-based application (ho assegnato a questo nuovo progetto il nome "TutorialMrWebmaster").
Come possiamo vedere vengono generati due file
TutorialMrWebmasterAppDelegate TutorialMrWebmasterViewController
entrmbi con i rispettivi file di intestazione.
Se andiamo ad aprire il file header del delegato vedremo che ci sono alcune novità rispetto...
Spiegato nel capitolo precedente che cosa è un ViewController ed a cosa serve, siamo pronti per disegnare la nostra view direttamente da codice.
Per raggiungere il nostro obiettivo è possibile implementare il codice sia nel metodo loadView sia nel metodo viewDidLoad in quanto non è presente nessun file .xib da caricare. Dato che il lettore potrebbe usare questo progetto...
A questo punto della guida sospendiamo un attimo gli esempi pratici scritti in Objective C, per introdurre un altro utilissimo strumento che ci viene offerto: ovvero Interface Builder.
Come abbiamo detto all'inizio di questa guida, Interface Builder è un ottimo tool per creare rapidamente delle interfacce grafiche. Nel capitolo precedente abbiamo mostrato come il sistema di riferimento cambi a seconda...
Dopo questa breve introduzione possiamo passare alla pratica; vediamo quindi come utilizzare Interface Builder e poi collegare gli elementi grafici al nostro codice sorgente. Apriamo dunque Xcode e creiamo un nuovo progetto view-based application e poi nella cartella contenente i file .xib apriamo quello relativo al ViewController.
Ora, come prima cosa selezione l'elemento view dalla Document Window e andiamo...
Nel capitolo precedente abbiamo creato una semplice inerfaccia grafica contenente due bottoni che, se cliccati, non producono nessuna azione. In questo capitolo andremo, quindi, ad associare uno specifico comportamento in relazione al touch dell'utente.
Iniziamo con il dire che i bottoni (classe UIButton) derivano da una superclasse detta UIControl che fornisce una base di implementazione per oggetti come bottoni e...
Fino a questo momento abbiamo sempre lavorato con una sola View. A questo punto, però, abbiamo tutti gli elementi per poter creare un menù per un'applicazione e gestire così più viste, una per ogni voce del menù.
Dato che ogni applicazione possiede un menù, abbiamo voluto dare al lettore delle basi concrete da cui partire per sviluppare autonomamente un'applicazione. Inoltre...
Nella lezione precedente abbiamo inserito il codice relativo al delegato ed abbiamo stabilito che la prima schermata che verrà mostrata all'utente è quella relativa al menù di navigazione.
A questo punto vediamo il codice da inserire all'interno del file header del nostro MenuViewController:
#import # <UIKit/UIKit.h>
@class GuidaAppDelegate;
@class Vista1ViewController;
@class Vista2ViewController;
@class Vista3ViewController;
@interface MenuViewController : UIViewController {
GuidaAppDelegate *appDelegate;
IBOutlet UIButton...
A questo punto non ci resta che inserire il codice per i ViewController delle viste e fare gli opportuni collegamenti degli elementi grafici con Interface Builder.
Dunque andiamo a vedere il codice relativo al file header del ViewController:
#import # <UIKit/UIKit.h>
@class GuidaAppDelegate;
@interface Vista1ViewController : UIViewController {
GuidaAppDelegate *appDelegate;
IBOutlet UIButton *backButton;
}
- (IBAction) backButtonAction:(id)sender;
@end
Il codice da inserire, come possiamo vedere,...
Apriamo dunque il file .xib relativo al menù con Interface Builder e clicchiamo su File's Owner. Spostandosi nella sezione connections vedremo che non è possibile associare nessun elemento grafico ad una direttiva del codice sorgente. Questo perchè i file .xib che non sono generati in automatico all'atto di creazione del progetto, è come se fossero entità a se stanti...
L'applicazione vista precedentemente, seppur abbellita con qualche immagine per bottoni e per lo sfondo, risulta comunque un'interfaccia statica.
Sarebbe carino inserire qualche effetto di transizione tra una vista ed un'altra per rendere il tutto più gradevole per l'utente. Anche in questo caso ci vengono offerti delle classi e dei metodi che gestiscono alcune transizioni con pochissimo sforzo: vediamo come...
Nei capitoli precedenti abbiamo utilizzato alcuni semplici elementi grafici dall'aspetto predefinito (come, ad esempio, Navigation Bar, button label ed altro). Andiamo adesso ad introdurre in che modo possiamo inserire delle immagini all'interno della nostra interfaccia grafica.
Iniziamo con il dire che è possibile gestire svariate tipologie di immagini, ma si consiglia sempre l'uso di immagini .png. Questo perchè il formato...
Quando l'utente tocca lo schermo di un dispositivo touch il sistema (o meglio l'applicazione) è in grado di catturare l'evento al fine di modellare un comportamento in relazione ad ogni evento.
Fino a questo momento, nelle applicazioni di esempio, abbiamo solo trattato il caso in cui un'utente clicchi su un specifico bottone, ma non abbiamo gestito il comportamento dell'applicazione...
Combinando le potenzialità offerte dalla classe UITouch con la possibilità di eseguire delle animazioni, si possono ottenere degli effetti molto interessanti. Quello che andremo a fare in questo capitolo è creare delle semplici animazioni modificando gli attributi dell'oggetto che vogliamo animare.
Vi sarà sicuramente capitato, utilizzando qualche applicazione sul vostro iPhone o iPod Touch, di imbattervi in una schermata iniziale,...
Come detto precendentemente, con la classe UITocuh, siamo in grado di conoscere le coordinate esatte in cui si trova il dito dell'utente sullo schermo del dispositivo.
Utilizzando questa proprietà e sfruttando il metodo touchesMoved possiamo permettere all'utente di disegnare sul dispositivo, come se stesse usando un qualsiasi programma di grafica, semplicemente muovendo il dito sullo schermo.
Quello che vogliamo...
In alcune applicazioni risulta utile conoscere le proprietà del sistema come, ad esempio, il nome del dispositivo, il modello e molto altro.
Questa operazione viene eseguita in maniera molto semplice utilizzando la classe UIDevice che ci mette a disposizione diversi metodi per conoscere le caratteristiche del dispositivo nel quale è stata lanciata l'applicazione.
Vediamo adesso come utilizzare questa classe, ed...
Ogni applicazione degna di questo nome permette un certo grado di personalizzazione da parte dell'utente. Per "personalizzazione" s'intende la possibilità, per un utente, di poter salvare alcuni dati in maniera permanente per poterli recuperare ai successivi avvii dell'applicazione.
Facciamo un esempio pratico per mostrare al lettore un classico utilizzo di salvataggio di dati. Immaginiamo che un'applicazione, al primo avvio,...
Nel capitolo precedente abbiamo scritto tutto il codice necessario e fatto le opportune connessioni con Interface Builder per creare una sorta di "memoria" per le preferenze utente dell'applicazione. Andiamo adesso a commentare l'esecuzione della nostra applicazione.
Una volta cliccato su build and run il simulatore mostrerà, come interfaccia, i due bottoni per le lingue e nella label sarà presente il...
Ci sarà capitato sicuramente, maneggiando un dispositivo iOS come un iPhone o un iPad, di imbatterci nelle alert view. Le alert view sono quelle finestre che appaiono con una piccola animazione e ci notificano qualcosa: generalemnte un errore o l'impossibilità di fare qualcosa.
Per esempio se proviamo ad utilizzare Safari con la wi-fi spenta e senza l'uso della rete...
Nel capitolo precedente abbiamo visto come creare un delegato per una UIAlertView adesso, l'ultima operazione che ci resta da compiere, consiste nell'associare alla alert quel delegato al momento dell'istanziazione.
Andiamo dunque nel file di implementazione del ViewController e inseriamo il seguente codice al posto di quello vecchio:
UIAlertView *alert;
DelegatoAlert *_delegato = init];
alert = initWithTitle:@"MRWebMaster"
message:@"Alert View di MRWebMaster" delegate:_delegato
cancelButtonTitle:@"Cancel"...
Uno degli elementi del framework UIKit più utilizzati e che permette la massima interazione con l'utente è l'elemento UITextField. Questo elemento è il classico campo di testo che, se cliccato, farà apparire sul display una tastiera virtuale per permettere all'utente di poter immettere del testo.
Data la sua importanza in ogni applicazione è opportuno fornire al lettore la lista...
Molto spesso, in molte applicazioni, abbiamo necessità che certe operazioni vengano eseguite in maniera programmata a certi intervalli di tempo. Per esempio, in un gioco potremo utilizzare questo metodo per far apparire sullo schermo degli ostacoli che il presonaggio deve evitare. Ciò che ci permette di utilizzare, in maniera molto efficiente, un timer è la classe NSTimer. Con questo...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 179 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Puoi scegliere come utilizzare i tuoi dati personali. Noi e i nostri partner desideriamo il vostro permesso per fare quanto segue.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":"\u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E\u003Cstyle\u003E.cl-consent-settings{position:fixed;left:16px;bottom:calc(28px + var(--__lxG___css_var_privacy_icon_auto, 0px));z-index:100;transition:all 0.15s ease-in-out;transform:translateY(0)}.cl-consent-settings--is-hidden{transform:translateY(70px);opacity:0}.cl-consent-settings__hint{border-radius:4px;background:#282A3C;box-shadow:0 4px 24px 0 rgba(0,0,0,.15);color:#FFFCF2;position:absolute;right:-195px;top:0;bottom:0;margin:auto;height:40px;width:175px;display:flex;align-items:center;justify-content:center;padding:4px 12px;font-size:12px;font-weight:400;line-height:16px;cursor:default;user-select:none;transition:transform 0.3s ease,opacity 0.3s ease;transform:translateX(-22px);opacity:0;pointer-events:none;z-index:-1}.cl-consent-settings__hint::after{content:\u0022\u0022;position:absolute;left:-16px;top:0;bottom:0;margin:auto;width:0;height:0;border:0 solid transparent;border-top-width:12px;border-bottom-width:12px;border-right:16px solid #282A3C}.cl-consent-settings__btn{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0;border:none;background-color:#4b81e8!important;background-position:center center;background-size:30px 30px;background-repeat:no-repeat;box-shadow:0 0 20px 0 rgba(0,0,0,.35);z-index:70;position:relative;text-decoration:none;cursor:pointer}.cl-consent-settings__btn::before{content:\u0022\u0022;-webkit-mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);mask-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022);background-color:#ffffff!important;mask-repeat:no-repeat;width:30px;height:30px}.cl-consent-settings__btn:hover+.cl-consent-settings__hint{transform:translateX(0);pointer-events:all;opacity:1}.cl-consent-settings__user{width:18px;height:18px;border-radius:50%;padding:0;border:1px solid #fff;background-color:#00AD98;background-image:url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022);background-position:center center;background-size:9px 10px;background-repeat:no-repeat;z-index:75;position:absolute;top:-2px;right:-8px;text-decoration:none;visibility:hidden}\u003C\/style\u003E\u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022\u003E\u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E\u003C\/button\u003E\u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EImpostazioni sulla privacy e sui cookie\u003C\/div\u003E\u003C\/div\u003E","pricds":"show_in_the_footer","pricaa":1,"vcnt":179,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di $sp3_retention$ nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura $DURATION$","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}