@@ -74,7 +74,8 @@ - (IBAction)connect:(id)sender
74
74
75
75
GKPeerPickerController* picker = [[GKPeerPickerController alloc ] init ];
76
76
picker.delegate = self;
77
- picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
77
+ // picker.connectionTypesMask = GKPeerPickerConnectionTypeNearby;
78
+ picker.connectionTypesMask = GKPeerPickerConnectionTypeOnline|GKPeerPickerConnectionTypeNearby;
78
79
[picker show ];
79
80
}
80
81
- (IBAction )sendPhoto : (id )sender
@@ -117,6 +118,21 @@ - (IBAction)sendText:(id)sender
117
118
- (void )peerPickerController : (GKPeerPickerController *)picker didSelectConnectionType : (GKPeerPickerConnectionType)type
118
119
{
119
120
NSLog (@" %s |type=%d " , __PRETTY_FUNCTION__, type);
121
+
122
+ if (type == GKPeerPickerConnectionTypeOnline) {
123
+ picker.delegate = nil ;
124
+ [picker dismiss ];
125
+ [picker autorelease ];
126
+
127
+ self.session = [[[GKSession alloc ] initWithSessionID: nil
128
+ displayName: nil
129
+ sessionMode: GKSessionModePeer] autorelease ];
130
+ self.session .delegate = self;
131
+ self.session .available = YES ;
132
+ [self .session setDataReceiveHandler: self withContext: nil ];
133
+ NSLog (@" self.session: %x " , self.session );
134
+
135
+ }
120
136
}
121
137
122
138
/*
@@ -130,7 +146,6 @@ - (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NS
130
146
{
131
147
NSLog (@" %s |peerID=%@ " , __PRETTY_FUNCTION__, peerID);
132
148
133
- self.peerID = peerID;
134
149
self.session = session;
135
150
session.delegate = self;
136
151
[session setDataReceiveHandler: self withContext: nil ];
@@ -151,6 +166,11 @@ - (void)peerPickerControllerDidCancel:(GKPeerPickerController *)picker
151
166
#pragma mark GKSessionDelegate
152
167
- (void )session : (GKSession *)session peer : (NSString *)peerID didChangeState : (GKPeerConnectionState)state
153
168
{
169
+ NSLog (@" ---------------" );
170
+ NSLog (@" session: %x " , session);
171
+ NSLog (@" displayName: %@ " , [session displayNameForPeer: peerID]);
172
+
173
+
154
174
NSString * stateDesc;
155
175
if (state == GKPeerStateAvailable) stateDesc = @" GKPeerStateAvailable" ;
156
176
else if (state == GKPeerStateUnavailable) stateDesc = @" GKPeerStateUnavailable" ;
@@ -160,16 +180,22 @@ - (void)session:(GKSession *)session peer:(NSString *)peerID didChangeState:(GKP
160
180
NSLog (@" %s |%@ |%@ " , __PRETTY_FUNCTION__, peerID, stateDesc);
161
181
162
182
switch (state) {
183
+ case GKPeerStateAvailable:
184
+ NSLog (@" connecting to %@ ..." , [session displayNameForPeer: peerID]);
185
+ [session connectToPeer: peerID withTimeout: 10 ];
186
+ break ;
187
+
163
188
case GKPeerStateConnected:
164
189
self.message .text = @" connected" ;
165
- // self.peerID = peerID;
190
+ self.peerID = peerID;
166
191
break ;
167
192
case GKPeerStateDisconnected:
168
193
self.message .text = @" disconnected" ;
169
194
self.session = nil ;
170
195
default :
171
196
break ;
172
197
}
198
+ NSLog (@" ---------------" );
173
199
}
174
200
175
201
/* Indicates a connection request was received from another peer.
0 commit comments