Ciao a tutti oggi ho deciso di creare un tutorial abbastanza interessante andremo a utilizzerà il bluetooth .
Quello che creeremo è una una mini chat ^_^.
Creiamo un nuovo progetto di tipo view based application e chiamiamola chat , per prima cosa andiamo a inserire questo framework GameKit.framework
Andiamo nel file .h e iniziamo a dichiarare i vari metodi
[code lang=”objc”]
#import <UIKit/UIKit.h>
#import <GameKit/GameKit.h>
@interface chatViewController : UIViewController<GKPeerPickerControllerDelegate>{
GKSession *sessioneCorrente;
IBOutlet UITextField *messaggio;
IBOutlet UIButton *connetti;
IBOutlet UIButton *disconnetti;
}
@property(nonatomic,retain) GKSession *sessioneCorrente;
@property(nonatomic,retain) IBOutlet UITextField *messaggio;
@property(nonatomic,retain) IBOutlet UIButton *connetti;
@property(nonatomic,retain) IBOutlet UIButton *disconnetti;
-(IBAction)invia:(id)sender;
-(IBAction)Connetti:(id)sender;
-(IBAction)Disconetti:(id)sender;
@end
[/code]
Ora andiamo nel file con l’estensione .m e implementiamo il codice ^_^
[code lang=”objc”]
#import "chatViewController.h"
#import <GameKit/GameKit.h>
&nbsp;
@implementation chatViewController
@synthesize sessioneCorrente,messaggio,connetti,disconnetti;
GKPeerPickerController *picker;
&nbsp;
-(IBAction)Connetti:(id)sender{
picker=[[GKPeerPickerController alloc]init];
picker.delegate=self;
[connetti setHidden:YES];
[disconnetti setHidden:NO];
[picker show];
}
&nbsp;
-(void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{
self.sessioneCorrente=session;
sessioneCorrente.delegate=self;
[session setDataReceiveHandler:self withContext:nil];
picker.delegate=nil;
[picker dismiss];
[picker autorelease];
}
&nbsp;
– (void)peerPickerControllerDidCancel:(GKPeerPickerController *)picker
{
picker.delegate = nil;
[picker autorelease];
[connetti setHidden:NO];
[disconnetti setHidden:YES];
}
&nbsp;
-(IBAction) btnDisconnetti:(id) sender {
[self.sessioneCorrente disconnectFromAllPeers];
[self.sessioneCorrente release];
sessioneCorrente = nil;
[connetti setHidden:NO];
[disconnetti setHidden:YES];
}
&nbsp;
– (void)session:(GKSession *)session
peer:(NSString *)peerID
didChangeState:(GKPeerConnectionState)state {
switch (state)
{
case GKPeerStateConnected:
NSLog(@"connesso!");
break;
case GKPeerStateDisconnected:
NSLog(@"disconnesso");
[self.sessioneCorrente release];
sessioneCorrente = nil;
[connetti setHidden:NO];
[disconnetti setHidden:YES];
break;
}
}
&nbsp;
– (void)mySendDataToPeers:(NSData *) data
{
if (sessioneCorrente )
[self.sessioneCorrente sendDataToAllPeers:data
withDataMode:GKSendDataReliable
error:nil];
}
&nbsp;
-(IBAction) btnInvia:(id) sender
{
NSData* data;
NSString *str = [NSString stringWithString:messaggio.text];
data = [str dataUsingEncoding: NSASCIIStringEncoding];
[self mySendDataToPeers:data];
}
&nbsp;
– (void) receiveData:(NSData *)data
fromPeer:(NSString *)peer
inSession:(GKSession *)session
context:(void *)context {
&nbsp;
NSString* str;
str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Dati ricevuti!"
message:str
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
&nbsp;
&nbsp;
– (void)viewDidLoad {
[connetti setHidden:NO];
[disconnetti setHidden:YES];
[super viewDidLoad];
}
– (void)dealloc {
[messaggio release];
[sessioneCorrente release];
[super dealloc];
}
[/code]
GKPeerPickerController *picker; si occupa di visualizzare un controllo e mostra eventuali dispositivi che utilizzano lo stesso protocollo di comunicazione.
Quando viene stabilita la connessione tra i due dispositivi è possibile inviare i dati tramite la sendDataToAllPeers poi per il resto credo sia tutto abbastanza chiaro.
Ora non ci resta che creare l’interfaccia grafica dobbiamo inserire
1)textfield e 3 button e rinominarli invia /connetti /disconnetti e fare i vari collegamenti .c
Vi rimango come sempre il progetto da scaricare ^_^
Download Project Link