I'm trying to run the xamarin forms sample from the [Dot net conf 2019 keynote](https://github.com/dotnet-presentations/dotNETConf/tree/master/2019/Technical/keynote). I've hosted the grpc service and a .net core console application can get data from it without any issues.
But when running the xamarin app, the ALPN negotiation(Client hello) happens with http 1.1 and therefore the grpc call fails.
[Source code available here](https://github.com/kwkgaya/XamarinGrpc)

**Error message: Grpc.Core.RpcException: Status(StatusCode=Internal, Detail="Bad gRPC response. Response protocol downgraded to HTTP/1.1."**

Debugger reveals that the SocketsHttpHandler used underneath on xamarin does not have the code that support Http 2.

**Questions:** 

1. Apparently Xamarin supports Grpc and Http. Why does this fail? 
Given that my suspect is correct, so that the issue is because xamarin uses an old version of System.Net.Http.dll that doesn't support Http2.
2. How to make sure Xamarin uses correct runtime assemblies that support Http2?
3. If this works for someone, Can you please share the system configuration?

**Configuration**

Use shared runtime: true   

Mono shared runtime version (as seen on android device): 10.1.0-18.   

Visual studio 2019 on windows 10:   

Xamarin.Android SDK 10.1.4.0 (d16-4/e44d1ae)   

Xamarin.Android Reference Assemblies and MSBuild support.   

 Mono: fd9f379   

 Java.Interop: xamarin/java.interop/d16-4@c4e569f   

 Xamarin.Android Tools: xamarin/xamarin-android-tools/d16-5@9f4ed4b   

**Things I tried:**

1. Switch to Managed HttpClient implementation /NativeMessageHandler
from ModernHttpClient. Still fails with same error. (Because ALPN
negotiation still uses same code?)
2. Send a HttpRequestMessage with Version 2 on a new HttpClient. Still
the underlying handler is the same. So it fails to negotiate Http2.
3. Disable shared runtime. Didn't work.

On .net core console app HttpConnectionSettings used by the SocketsHttpHandler has http2 supporting code:
[![HttpConnectionSettings used by the SocketsHttpHandler has http2 supporting code](https://i.stack.imgur.com/6MnIL.jpg)](https://i.stack.imgur.com/6MnIL.jpg)

But on xamarin it doesn't. AndroidClientHandler is selected, but t delegates to the SocketsHttpHandler. It's settings doesn't have the http2 support:
[![Xamarin fails](https://i.stack.imgur.com/E0WJh.jpg)](https://i.stack.imgur.com/E0WJh.jpg)