I am trying to implement GKVoiceChat between two iPhones (an iPhone X and an iPhone 5s) in iOS11.3.1 Xcode 9.3.1. I have the GameKit connection working fine but not the voice. Has anyone got VoiceChat working? Can anyone see anything wrong in the code here? Thanks...
Here is my relevant code:
#import <GameKit/GameKit.h>
#include <AVFoundation/AVFoundation.h>
//in a method at the beginning......
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error= nil;
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
[audioSession setActive:YES error:&error];
if(error){
NSLog(@"audioSession: %@ %ld %@", [error domain], (long)[error code], [[error userInfo] description]);
}else{
[audioSession overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
if(error){
NSLog(@"audioSession1: %@ %ld %@", [error domain], (long)[error code], [[error userInfo] description]);
}else{
if( [GKVoiceChat isVoIPAllowed]){
allChannel=[[GKVoiceChat alloc] init];
allChannel=[myMatch voiceChatWithName:@"allPlayers"];
if(allChannel){
allChannel.volume = 1.0;
allChannel.active=YES;
[self performSelector:@selector(delayedStart) withObject:nil afterDelay:6.0f];//give Game Center a chance to respond
}else{
NSLog(@"no channel was oppend");
}
}else{
NSLog(@"voip not allowed");
}
}
}
-(void)delayedStart{
[allChannel start];
NSLog(@"started");
}
Here are the errors I get that I don't think are relevant. They all occur before the delayed call to [allChannel start] and they are there whether or not I implement any of the GKVoiceChat code. I think they are bugs in the GKMatch system. I am ignoring them:
//these errors occur before the match has been found and before the code above is executed:
2018-05-17 21:05:31.006119-0400 Go[477:67899] [log] [ERROR] gckSessionCheckPendingConnections:1438 gckSessionCheckPendingConnections: iICEChecksLeft=0, iUnconnectedNodeCount=0, iDDsExpected=1
2018-05-17 21:05:31.063331-0400 Go[477:67847] [log] [ERROR] ICEStopConnectivityCheck:2688 ICEStopConnectivityCheck() found no ICE check with call id (2019854734)
2018-05-17 21:05:31.065208-0400 Go[477:67847] [log] [ERROR] gckSessionCheckPendingConnections:1438 gckSessionCheckPendingConnections: iICEChecksLeft=0, iUnconnectedNodeCount=0, iDD
// the next line occurs when there is a call to matchmakerViewController:viewControllerDidFindMatch: and the code above is then executed
2018-05-17 21:05:35.251683-0400 Go[477:67566] [Error] Extension request cancelled with error: Error Domain=NSExtensionErrorDomain Code=-2 "Extension cancelled by host." UserInfo={NSLocalizedDescription=Extension cancelled by host.}
Here are the errors I get after setting the GKVoiceChat object to start (i.e. after that 6 second delay):
2018-05-17 21:05:40.766056-0400 Go[477:67566] started
2018-05-17 21:05:41.310557-0400 Go[477:67895] [log] [ERROR] openLogDump:65 failed to open /var/mobile/Library/Caches/com.apple.VideoConference/logs/20180517-210541-0757771790-CallSettings.calldump with error 1
2018-05-17 21:05:41.449639-0400 Go[477:68033] [] WiFi:[548298341.448992]: Missing com.apple.wifi.manager-access entitlement
2018-05-17 21:05:41.449986-0400 Go[477:68033] [] WiFi:[548298341.449970]: Missing com.apple.wifi.manager-access entitlement
2018-05-17 21:05:41.450418-0400 Go[477:68033] [] WiFi:[548298341.450400]: Missing com.apple.wifi.manager-access entitlement
2018-05-17 21:05:41.451010-0400 Go[477:68033] [] WiFi:[548298341.450924]: Missing com.apple.wifi.manager-access entitlement
2018-05-17 21:05:41.451625-0400 Go[477:68033] [] WiFi:[548298341.451608]: Missing com.apple.wifi.manager-access entitlement
2018-05-17 21:05:43.648429-0400 Go[477:67566] Bad response from apsd: Connection interrupted
2018-05-17 21:05:43.662956-0400 Go[477:67566] [Warning] Remote loader crashed for request: <NSMutableURLRequest: 0x10ba1bb60> { URL: http://init.ess.apple.com/WebObjects/VCInit.woa/wa/getBag?ix=4 }
2018-05-17 21:05:43.664051-0400 Go[477:67566] [Warning] => Retrying... (0/5) retries
2018-05-17 21:05:43.667507-0400 Go[477:67566] [Warning] Remote loader crashed for request: <NSMutableURLRequest: 0x10ba1bb60> { URL: http://init.ess.apple.com/WebObjects/VCInit.woa/wa/getBag?ix=4 }
2018-05-17 21:05:43.667646-0400 Go[477:67566] [Warning] => Retrying... (1/5) retries
2018-05-17 21:05:45.845023-0400 Go[477:67566] [Warning] Remote loader crashed for request: <NSMutableURLRequest: 0x10ba1bb60> { URL: http://init.ess.apple.com/WebObjects/VCInit.woa/wa/getBag?ix=4 }
2018-05-17 21:05:45.845205-0400 Go[477:67566] [Warning] => Retrying... (2/5) retries
2018-05-17 21:05:46.484616-0400 Go[477:67895] [log] VideoConference [ERROR] -[VideoConference inviteDataForParticipantID:callID:remoteInviteData:nonCellularCandidateTimeout:error:]:855 VideoConference: CALLID MISMATCH 0x10bb332e0 client callID 6161504380 internal callID 0
2018-05-17 21:05:46.490559-0400 Go[477:68030] [log] [ERROR] VCAudioReceiver_DiscardQueueExcess:454 AudioReceiver is NULL
2018-05-17 21:05:46.490986-0400 Go[477:68030] [log] [ERROR] VCAudioReceiver_DiscardQueueExcess:454 AudioReceiver is NULL
2018-05-17 21:05:50.246310-0400 Go[477:67566] [Warning] Remote loader crashed for request: <NSMutableURLRequest: 0x10ba1bb60> { URL: http://init.ess.apple.com/WebObjects/VCInit.woa/wa/getBag?ix=4 }
2018-05-17 21:05:50.246469-0400 Go[477:67566] [Warning] => Retrying... (3/5) retries
2018-05-17 21:05:52.019693-0400 Go[477:67895] [log] VCCallSession [ERROR] -[VCCallSession startConnectionWithParticipantID:callID:usingInviteData:isCaller:capabilities:idsSocket:destination:error:]_block_invoke:2215 - Reporting not available (no backends)
2018-05-17 21:05:56.819849-0400 Go[477:67566] [Warning] Remote loader crashed for request: <NSMutableURLRequest: 0x10ba1bb60> { URL: http://init.ess.apple.com/WebObjects/VCInit.woa/wa/getBag?ix=4 }
2018-05-17 21:05:56.820068-0400 Go[477:67566] [Warning] => Retrying... (4/5) retries