

Tutorial Estensione per Siri
Author: admin
In questo tutorial che sto per mostrarvi come creare una semplice estensione Siri(vedi immagine)
Se ti piacciono temi o modelli, pronti per l’uso sono qui. Metti i modelli pronti in / templates / iphone, creare un nuovo progetto utilizzando nic.pl, immettere ”makepacchetto” e la vostra prima estensione Siri. Deb è fatto! Questa opzione è ideale e miglior modo di sviluppare estensioni. Ma questo file zip contiene un esempio di come caricare (UI fatta da Interface Builder che è il modo più conveniente per creare interfacce utente
Experimental templates for Xcode [mirror] (extract to ~/Library/Developer/Xcode/Templates and restart Xcode)
Requirements
Let’s begin
Un’estensione Siri è un cosiddetto ”pacchetto”, che è in realtà una cartella contenente un file binario ”immagine”, una lista proprietà (plist) descrivendolo e può opzionalmente contenere un certo numero di file di supporto (immagini,pennini, qualunque sia ).
Questa estensione Siri contiene una classe “comando” e una classe ”frammento”.I comandi sono utilizzati per l’elaborazione di input da Siri, mentre i frammentivengono utilizzati per la visualizzazione di informazioni.
Quindi cerchiamo di creare due file di Objective-C e le loro file headercorrispondente: HelloCommands e HelloSnippet.
Abbiamo anche bisogno di specificare una cosa importante nellaHelloSnippet-Info.plist. Cioè, il ”principale classe” nome. La classe principale è la classe ”main”, che viene chiamato all’inizio del inizializzazione dell’estensione.Metteremo K3AHelloSnippetExtension lì.
Aprire il file di intestazione e HelloCommands.h HelloSnippet.h e SiriObjects.himportare in alto:
#import “SiriObjects.h”
@interface K3AHelloSnippetExtension : NSObject<SEExtension>
-(id)initWithSystem
id<SESystem>)system;
-(NSString*)author;
-(NSString*)name;
-(NSString*)description;
-(NSString*)website;
@end
Come potete vedere, la classe principale eredita NSObject e deve essere conforme al protocollo SEExtension. C’è un metodo che si sono tenuti aimplementare: initWithSystem. Questo inizializza il proprio interno e passa lungo ilparametro “sistema”, dove si registra il frammenti e comandi.
Facoltativamente, è possibile anche implementare metodi per restituire il nomedell’estensione, autore, descrizione e URL del sito web.
Dal momento che vogliamo implementare un frammento, abbiamo bisogno diimportare l’intestazione UIKit. Metteremo questa in cima HelloSnippet.h:
#import <UIKit/UIKit.h>
@interface K3AHelloSnippet : NSObject<SESnippet> {
UIView* _view;
IBOutlet UIView* _helloNib;
IBOutlet UILabel* _helloLabel;
}
- (id)initWithProperties
NSDictionary*)props;
- (id)view;
@end
Il frammento di eredita ancora NSObject ma deve essere conforme al protocolloSESnippet. Abbiamo un UIView semplici e un marchio nel nostro file pennino(preparata in anticipo utilizzando InterfaceBuilder) quindi abbiamo bisogno dicreare IBOutlets per questi. Abbiamo anche bisogno di creare due metodi:initWithProperties e vista.
HelloSnippet.mm
Abbiamo tutto pronto per il frammento quindi cerchiamo di attuarla nel fileHelloSnippet.mm. In primo luogo, abbiamo bisogno di importare le intestazioninecessarie, così abbiamo messo questo all’inizio del file:
#import “HelloSnippet.h”
#import “HelloCommands.h”
#import <Foundation/Foundation.h>
Poi, possiamo iniziare ad attuare i singoli metodi:
@implementation K3AHelloSnippet
Cominciamo con il metodo di visualizzazione. Questo è molto semplice:
- (id)view
{
return _view;
}
Restituisce semplicemente _VIEW.
Abbiamo anche bisogno di implementare il metodo dealloc, per pulire dopo che ilframmento è stato respinto.
- (void)dealloc
{
[_view release];
[super dealloc];
}
Abbiamo solo un punto di vista, per questo è molto semplice. Infine, implementeremo initWithProperties.
- (id)initWithProperties:(NSDictionary*)props;
{
if ( (self = [super init]) )
{
if (![[NSBundle bundleForClass:[self class]] loadNibNamed:@”HelloNib” owner:self options:nil])
{
NSLog(@“Warning! Could not load nib file.\n”);
return NO;
}
_view = [_helloNib retain];
[_helloLabel setText:[props objectForKey:@"text"]]; // text from HelloCommands
}
return self;
}
Se tutto è andato bene, siamo in grado di memorizzare la vista caricato dal filepennino. Poi possiamo anche impostare il testo in etichetta dalle proprietà passò a noi in puntelli.Oh, ma siamo quasi dimenticavo una cosa. Abbiamo ancora bisogno di implementare la nostra classe principale, altrimenti tutto questo non funziona!Facciamolo subito.
@implementation K3AHelloSnippetExtension
// required initialization
-(id)initWithSystem:(id<SESystem>)system
{
if ( (self = [super init]) )
{
[system registerCommand:[K3AHelloCommands class]];
[system registerSnippet:[K3AHelloSnippet class]];
}
return self;
}
Questo è abbastanza semplice di nuovo. Siamo solo noi stessi inizializzare e se tutto è OK, si registra il comando e Snippet con il sistema. La nostra classe snippetsi chiama K3AHelloSnippet e la classe di comando è K3AHelloCommands.
È inoltre possibile implementare dell’autore, nome, ecc metodi se si desidera
HelloCommands.h
@interface K3AHelloCommands : NSObject<SECommand>
-(BOOL)handleSpeech:(NSString*)text tokens:(NSArray*)tokens tokenSet:(NSSet*)tokenset context:(id<SEContext>)ctx;
@end
HelloCommands.mm
#import “HelloCommands.h”
@implementation K3AHelloCommands
-(void)dealloc
{
[super dealloc];
}
-(BOOL)handleSpeech:(NSString*)text tokens:(NSArray*)tokens tokenSet:(NSSet*)tokenset context:(id<SEContext>)ctx
{
// reacts to only one token – “test”
if ([tokenset count] == 1 && [tokenset containsObject:@"test"])
{
// properties for the snippet
NSDictionary* snipProps = [NSDictionary dictionaryWithObject:@"Text passed as a snippet property." forKey:@"text"];
// create an array of views
NSMutableArray* views = [NSMutableArray arrayWithCapacity:1];
[views addObject:[ctx createAssistantUtteranceView:@"Hello Snippet!!"]];
[views addObject:[ctx createSnippet:@"K3AHelloSnippet" properties:snipProps]];
// send views to the assistant
[ctx sendAddViews:views];
// inform the assistant that this is end of the request
[ctx sendRequestCompleted];
return YES; // inform the system that the command has been handled (ignore the original one from the server)
}
return NO;
}
@end
What is context?
Finishing
Non si dovrebbe restituire SI se non si è abbastanza sicuri che l’utente volevaproprio interno di rispondere! Perché quando si torna YES, l’azione originale erisposta da Siri si butta via. La nostra semplice estensione è abbastanza sicura: essa restituisce YES solo quando l’utente dice la parola “test” in esclusiva (ma puòessere ripetuta più volte). Siri non gestisce dicendo ”test” o ”test di prova”, ecc.
How to “run”
Non si può ”giocare” o “eseguire” l’estensione dall’interno Xcode direttamente.Dopo aver costruirla (mac + B di scelta rapida o Project-Build) costruirà un bundlecon binario interno probabilmente in DerivedData directory o una directory radice del progetto (questo può essere impostato in impostazioni globali in Xcode schedaLocations). C’è anche la possibilità di creare istruzioni di generazionepersonalizzate in Xcode in cui è possibile ad esempio comprendono l’esecuzionedel vostro script personalizzato che utilizzerà ssh per eliminare pacchetto vecchiosul dispositivo, copiare una nuova costruzione uno sopra e riavviare SpringBoard.Questo può notevolmente migliorare il tempo di iterazione (Sto usando questo per lo sviluppo delle impostazioni fasci così ed è cool - Impostazioni uccide, cancellafascio vecchio, copia oggi, apre le impostazioni da remoto, scorrere verso il basso, test, ancora una volta) - ma vi prego di non chiedere me per le istruzioni di come èindividuale e il mio tempo è limitato. Google, imparare, provare e divertirsi. Qui è uno strumento per aprire le applicazioni sul dispositivo. Inoltre, non dimenticare di firmare il binario all’interno del fascio di ldid-S comando binary.
read comments (0)Trovato un importante problema di sicurezza in iMessage!
Author: admin
Gizmodo ha scoperto un importante problema relativo alla sicurezza in iMessage, il nuovo servizio di messaggistica istantanea che Apple ha introdotto con iOS 5. A causa di un bug del sistema operativo è infatti possibile continuare a ricevere messaggi al proprio numero anche dopo aver rimosso la sim dal telefono.
È notizia di questi giorni che Facebook verrà finalmente (???) quotata in borsa; pare che il suo valore sia aggiri intorno agli 80 miliardi di dollari.
Credo che sia lecito a questo punto chiedersi perché Facebook valga così tanto. Forse che produca qualcosa? Forse che fornisca servizi specializzati a pagamento?
No. La risposta è una sola: Facebook produce dati. Miliardi e miliardi di dati, che incrociati opportunamente forniscono un quadro chiaro ed univoco degli interessi, degli acquisti, delle preferenze di ogni iscritto. Per esempio, se clicco “I LIKE” su un articolo che parla di Apple, tale informazione potrebbe interessare la Apple stessa o qualche società che produce software per il “melafonino”, l’iPad o i vari i-Qualcosa.
Ma io cosa ci guadagno? Mi spiego…
Sono un lavoratore dipendente e la società per cui lavoro mi paga perché io metta al suo servizio le mie capacità, conoscenze ed esperienze. Con l’azienda per cui lavoro ho un contratto che vincola me e l’azienda stessa ad una condivisione d’intenti. Io lavoro, produco e l’azienda “rivende” o “utilizza” ciò che produco. L’azienda, a fronte del mio operato, mi paga (grazie a Dio) lo stipendio.
Torniamo a Facebook… Allo stesso modo gli utenti Facebook mettono a disposizione di Facebook stessa i propri profili, le proprie fotografie, le proprie amicizie, insomma I PROPRI DATI – che nell’era dell’informatica corrisponde alla propria vita – e cosa ci guadagnano? Quanta parte di quegli 80 miliardi dovrebbe essere corrisposta agli utenti (o sarebbe meglio dire utilizzati?) di Facebook?
Proporrei che parte delle azioni venissero distribuite tra gli utenti… Non lo trovereste “Socially Correct”?
P.S.: Anch’io sono un utente Facebook e quando pubblico un post, lo stesso compare sul mio profilo del Social Network. Non mi sorprenderebbe se il presente post venisse “bannato”…vediamo.
Angoli pittoreschi
Author: admin
Se tra i miei lettori c’è qualche Varesino, mi congratulo con lui ch’è nato fra quei colli e quei monti avvolti da quell’aria che fa guadagnare gli ostieri e scapitare l’amor platonico: se c’è qualche Varesina le dirò che ho veduto dei porticati, dei poggioli antichi, delle vie pittoresche, de’ bei quadri presso il proposto… Che cosa importa a lei? Ho ammirato una villa bianca avvistatissima senza una mosca, e un giardino su un colle, e un sentiero che si curvava fra un roseto, un pratello in toletta, e montava e montava… C’era posto per due, per tre no.
O Varesina, al sommo di quel colle, quando il sentiero t’avrà fatta arrossire, mi dirai come ti chiami…
Ambrogio Bazzero
Lens: Loftus
Film: DC
Flash: off
Snow!!
Author: admin
No, dico, vi rendete conto della temperatura che c’è qui?!
Ogni inverno resto sconvolta dalle temperature glaciali che il nord-est dell’Italia riesce a raggiungere, in questa landa desolata prima o poi moriremo tutti congelati..
La cosa più simpatica di tutto ciò è che io non ho nè le gomme termiche nè le catene per la macchina.. e faccio almeno 5 km di statale ogni giorno per 4 volte al giorno..
Secondo il precisissimo meteo del mio iphone dovrebbero iniziare a scendere i primi fiocchi intorno alle 3 di stanotte.. io sono talmente fuori di testa che potrei persino mettermi la sveglia per controllare se è vero..!
-S-








