Как отправлять и получать данные с помощью gksession? - PullRequest
1 голос
/ 14 марта 2011

Hello Я отправляю данные, используя gksession.code, приведенный ниже. Здесь отправка данных работает нормально и выдает сообщение о том, что данные отправлены. Но я не могу получить какие-либо данные о другом устройство. Когда я отлаживаю код, он не вызывает и не входит в метод получить данные. Кто-нибудь есть идеи по этому поводу? Что здесь не так или как я могу решить проблему?

- (void)viewDidLoad {
    [super viewDidLoad];
    gs=[manager getgkSession];
    //[cs retain]
    self.title = [manager displayNameForPeer:manager.currentConfPeerID];
    NSLog(@"name of mangager is %@",self.title);

}


-(IBAction) btnSend:(id) sender
{
    //---convert an NSString object to NSData---
    NSData* data;
    NSError *error=nil;
    NSString *str = [NSString stringWithString:txtMessage.text];
    data = [str dataUsingEncoding: NSASCIIStringEncoding];     
    if (gs) 

    {
        [self.gs sendDataToAllPeers:data 
                       withDataMode:GKSendDataReliable 
                              error:&error];    
            if (!error) 
        {
            NSLog(@"Did send data");
        } 
        else 
        {
            NSLog(@"Send data failed: %@", [error localizedDescription]);
        }   
    }        
}


    - (void) receiveData:(NSData *)data 
                fromPeer:(NSString *)peer 
               inSession:(GKSession *)session 
                 context:(void *)context {

        //---convert the NSData to NSString---
        NSString* str;
        str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];    
        NSLog(@"data received is %@",str);
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data received" 
                                                        message:str 
                                                       delegate:self 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles:nil];
        NSLog(@"receive data");
        [alert show];
        [alert release];    
    }

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Убедитесь, что вы реализовали это в заголовочном файле: GKPeerPickerControllerDelegate

2 голосов
/ 14 апреля 2011

Вы звонили setDataReceiveHandler:withContext: для сеанса GK на приемнике?Если вы не сделали этого до того, как начали отправлять данные.

...