2011-08-29 3 views
0

"시작 iPad 응용 프로그램 개발"을 읽었으며 블루투스 장에서 책에 표시된 코드를 정확하게 테스트하고 있습니다. 유일한 차이점은이 책이 3.2 용이고 iOS> 4.0 용으로 XCODE 4를 사용하고 있다는 것입니다.iOS 4 블루투스 검색이 작동하지 않습니다.

XCODE는 오류나 경고를 발생시키지 않지만 제대로 빌드되지만 iPhone에서 테스트 할 때 다른 장치를 찾지 못합니다.

무엇이 잘못 되었나요? 다음 위임 방법을 놓친처럼

#import "pruebaBluetoothViewController.h" 

@implementation pruebaBluetoothViewController 

@synthesize currentSession; 
@synthesize txtMessage; 
@synthesize connect; 
@synthesize disconnect; 

- (void)viewDidLoad { 
[connect setHidden:NO]; 
[disconnect setHidden:YES]; 
[super viewDidLoad]; 
} 
-(IBAction) btnConnect:(id) sender { 
picker = [[GKPeerPickerController alloc] init]; 
picker.delegate = self; 
picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby; 
[connect setHidden:YES]; 
[disconnect setHidden:NO]; 
[picker show]; 
} 
- (void)peerPickerController:(GKPeerPickerController *)pk 
didConnectPeer:(NSString *)peerID 
toSession:(GKSession *) session { 
self.currentSession = session; 
session.delegate = self; 
[session setDataReceiveHandler:self withContext:nil]; 
picker.delegate = nil; 
[picker dismiss]; 
[picker autorelease]; 
} 
- (void)peerPickerControllerDidCancel:(GKPeerPickerController *)pk { 
picker.delegate = nil; 
[picker autorelease]; 
[connect setHidden:NO]; 
[disconnect setHidden:YES]; 
} 
-(IBAction) btnDisconnect:(id) sender { 
[self.currentSession disconnectFromAllPeers]; 
[self.currentSession release]; 
currentSession = nil; 
[connect setHidden:NO]; 
[disconnect setHidden:YES]; 
} 
- (void)session:(GKSession *)session 
peer:(NSString *)peerID 
didChangeState:(GKPeerConnectionState)state { 
switch (state) { 
case GKPeerStateConnected: 
NSLog(@"connected"); 
break; 
case GKPeerStateDisconnected: 
NSLog(@"disconnected"); 
[self.currentSession release]; 
currentSession = nil; 
[connect setHidden:NO]; 
[disconnect setHidden:YES]; 
break; 
} 
} 
- (void)dealloc { 
[txtMessage release]; 
[currentSession release]; 
[super dealloc]; 
} 

- (void) mySendDataToPeers:(NSData *) data { 
if (currentSession) 
[self.currentSession sendDataToAllPeers:data 
withDataMode:GKSendDataReliable 
error:nil]; 
} 
-(IBAction) btnSend:(id) sender { 
//---convert an NSString object to NSData--- 
NSData* data; 
NSString *str = [NSString stringWithString:txtMessage.text]; 
data = [str dataUsingEncoding: NSASCIIStringEncoding]; 
[self mySendDataToPeers:data]; 
} 
- (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]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Data received" 
message:str 
delegate:self 
cancelButtonTitle:@"OK" 
otherButtonTitles:nil]; 
[alert show]; 
[alert release]; 
} 
+0

앱에 다른 기기가 있습니까? –

답변

1

보이는 : 다음하는 .m이 보이지만

#import <UIKit/UIKit.h> 
#import <GameKit/GameKit.h> 

@interface pruebaBluetoothViewController : UIViewController 
<GKSessionDelegate, GKPeerPickerControllerDelegate> { 
GKSession *currentSession; 
IBOutlet UITextField *txtMessage; 
IBOutlet UIButton *connect; 
IBOutlet UIButton *disconnect; 
GKPeerPickerController *picker; 
} 
@property (nonatomic, retain) GKSession *currentSession; 
@property (nonatomic, retain) UITextField *txtMessage; 
@property (nonatomic, retain) UIButton *connect; 
@property (nonatomic, retain) UIButton *disconnect; 
-(IBAction) btnSend:(id) sender; 
-(IBAction) btnConnect:(id) sender; 
-(IBAction) btnDisconnect:(id) sender; 
@end 

: 같은

viewController.h 보인다

- (GKSession *)peerPickerController:(GKPeerPickerController *)picker sessionForConnectionType:(GKPeerPickerConnectionType)type { 
    GKSession *session = [[GKSession alloc] initWithSessionID:kTankSessionID displayName:nil sessionMode:GKSessionModePeer]; 
    return [session autorelease]; // peer picker retains a reference, so autorelease ours so we don't leak. 
} 

희망이 도움이됩니다.

관련 문제