

Iphone sat extreme, a blog in Italiano
Sguardi
Author: admin
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.
La sedia rossa
Author: admin
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.
Gadgets & Gizmos - February 2012
Author: admin


read comments (0)







