Creiamo una chat

      Nessun commento su Creiamo una chat

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


#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

Ora andiamo nel file con l’estensione .m e implementiamo il codice ^_^


#import "chatViewController.h"

#import <GameKit/GameKit.h>

 

@implementation chatViewController

@synthesize sessioneCorrente,messaggio,connetti,disconnetti;

GKPeerPickerController *picker;

 

-(IBAction)Connetti:(id)sender{

picker=[[GKPeerPickerController alloc]init];

picker.delegate=self;

[connetti setHidden:YES];

[disconnetti setHidden:NO];

[picker show];

}

 

-(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];

}

 

- (void)peerPickerControllerDidCancel:(GKPeerPickerController *)picker

{

picker.delegate = nil;

[picker autorelease];

[connetti setHidden:NO];

[disconnetti setHidden:YES];

}

 

-(IBAction) btnDisconnetti:(id) sender {

[self.sessioneCorrente disconnectFromAllPeers];

[self.sessioneCorrente release];

sessioneCorrente = nil;

[connetti setHidden:NO];

[disconnetti setHidden:YES];

}

 

- (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;

}

}

 

- (void)mySendDataToPeers:(NSData *) data

{

if (sessioneCorrente    )

[self.sessioneCorrente sendDataToAllPeers:data

withDataMode:GKSendDataReliable

error:nil];

}

 

-(IBAction) btnInvia:(id) sender

{

NSData* data;

NSString *str = [NSString stringWithString:messaggio.text];

data = [str dataUsingEncoding: NSASCIIStringEncoding];

[self mySendDataToPeers:data];

}

 

- (void) receiveData:(NSData *)data

fromPeer:(NSString *)peer

inSession:(GKSession *)session

context:(void *)context {

 

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];

}

 

 

- (void)viewDidLoad {

[connetti setHidden:NO];

[disconnetti setHidden:YES];

[super viewDidLoad];

}

- (void)dealloc {

[messaggio release];

[sessioneCorrente release];

[super dealloc];

}

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