GKVoiceChat не работает на GameCenter Match
Я пытаюсь настроить голосовой чат в игре, которую разрабатываю для iOS, она успешно создает совпадение, но когда я пытаюсь настроить голосовой чат, ничего не происходит, что я делаю не так? Работает без ошибок. Вот код, который я использую для голосового чата.
- (void)establishVoice
{
if (![GKVoiceChat isVoIPAllowed])
return;
if (![self establishPlayAndRecordAudioSession])
return;
NSLog(@"Did stablish voice chat");
chat = [match voiceChatWithName:@"GeneralChat"];
[chat start]; // stop with [chat end];
chat.active = YES; // disable mic by setting to NO
chat.volume = 1.0f; // adjust as needed.
chat.playerStateUpdateHandler = ^(NSString *playerID, GKVoiceChatPlayerState state) {
switch (state)
{
case GKVoiceChatPlayerSpeaking:
// Highlight player's picture
NSLog(@"Speaking");
break;
case GKVoiceChatPlayerSilent:
// Dim player's picture
NSLog(@"Silent");
break;
case GKVoiceChatPlayerConnected:
// Show player name/picture
NSLog(@"Voice connected");
break;
case GKVoiceChatPlayerDisconnected:
// Hide player name/picture
NSLog(@"Voice disconnected");
break;
} };
}
Где установите PlayAndRecordAudioSession:
- (BOOL) establishPlayAndRecordAudioSession
{
NSLog(@"Establishing Audio Session");
NSError *error;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL success = [audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
if (!success)
{
NSLog(@"Error setting session category: %@", error.localizedFailureReason);
return NO;
}
else
{
success = [audioSession setActive: YES error: &error];
if (success)
{
NSLog(@"Audio session is active (play and record)");
return YES;
}
else
{
NSLog(@"Error activating audio session: %@", error.localizedFailureReason);
return NO;
}
}
return NO;
}
Код успешно регистрирует "Сделал стабильный голосовой чат", поэтому он запускает код, но когда я начинаю говорить, кажется, что он не получает голос и не отправляет его. Что я делаю неправильно? Я что-то пропустил? PS Я не получаю GKVoiceChatPlayerConnected уволен.
1 ответ
Убедитесь, что Wi-Fi включен на обоих устройствах.
(Я несколько часов бился головой об этом, и, наконец, понял, что случайно отключил Wi-Fi на одном из двух моих тестовых устройств)