I am trying to use Grpc in my libgdx app. Grpc uses okhttp to make network calls. Its working perfectly fine in android, but when I am trying to port my libgdx app to ios using Robovm compiler, I am getting following crash:-
io.grpc.StatusRuntimeException: UNAVAILABLE
at io.grpc.StatusRuntimeException.<init>(StatusRuntimeException.java:58)
at io.grpc.StatusRuntimeException.<init>(StatusRuntimeException.java:50)
at io.grpc.stub.ClientCalls.toStatusRuntimeException(ClientCalls.java:259)
at io.grpc.stub.ClientCalls.getUnchecked(ClientCalls.java:243)
at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:156)
Caused by: java.lang.RuntimeException: We can not do TLS handshake on this Android version, please install the Google Play Services Dynamic Security Provider to use TLS
at io.grpc.okhttp.OkHttpProtocolNegotiator$AndroidNegotiator.configureTlsExtensions(OkHttpProtocolNegotiator.java:302)
at io.grpc.okhttp.OkHttpProtocolNegotiator.negotiate(OkHttpProtocolNegotiator.java:96)
at io.grpc.okhttp.OkHttpProtocolNegotiator$AndroidNegotiator.negotiate(OkHttpProtocolNegotiator.java:218)
at io.grpc.okhttp.OkHttpTlsUpgrader.upgrade(OkHttpTlsUpgrader.java:63)
at io.grpc.okhttp.OkHttpClientTransport$4.run(OkHttpClientTransport.java:574)
Code-block:-
public AuthenticateUserResponse authenticateUser(AuthenticateUserRequest request) {
return io.grpc.stub.ClientCalls.blockingUnaryCall(
getChannel(), getAuthenticateUserMethod(), getCallOptions(), request);
}
Gradle dependancies for Robovm & okhttp:-
roboVMVersion = '2.3.16'
gdxVersion = '1.10.0'
grpcVersion = '1.45.0'
api "com.mobidevelop.robovm:robovm-rt:$roboVMVersion"
api "com.mobidevelop.robovm:robovm-cocoatouch:$roboVMVersion"
api "com.badlogicgames.gdx:gdx-backend-robovm:$gdxVersion"
implementation "io.grpc:grpc-okhttp:$grpcVersion"
Can someone help?