question

nextdoorcs avatar image
nextdoorcs asked

Do you support IPv6?

It must support IPv6 at Apple.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
brendan avatar image
brendan answered

All of Apple's current testing of the title for this requirement is specific to the client itself - they are checking that the title is not doing any of the things described in their docs and presentations. Specifically:

  • Use the networking frameworks (for example, “NSURLSession”)
  • Avoid use of IPv4-specific APIs
  • Avoid hard-coded IP addresses

If your client is complying with those points, you'll be fine in terms of this requirement at certification (we have titles passing certification using PlayFab regularly, including since Apple started testing for this). There's a more complete doc on how to ensure compatibility here: https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1.

What Apple is doing is making sure your title is prepared for a change that is on the horizon, so that when it does happen, they can be assured that all the newest and popular titles on their platform are compatible. The reality is that your title won't be shipping into any IPv6-only regions yet. We have reviewed our service to ensure we have a clear plan around what changes would be required to be compatible with an IPv6-only network, and are prepared to roll out the additional infrastructure needed as soon as it becomes necessary.

10 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Chris avatar image Chris commented ·

Hi,

It may have been so until recently, but we got rejected this week for that very reason, and by tracking down their error, it can only come from our game not being logged into playfab. We get that same situation (not being able to log into playfab) when running in unity editor while connected in ipv6 only.

So I believe they have stepped up their review pattern...

What we haven't tried yet : change the request type from "unity www" to "http web request" (I don't have the mac right now, we'll test it tonight). Could this be an issue resolver ?

If not, what solutions would you suggest ?

Thanks

0 Likes 0 ·
brendan avatar image brendan Chris commented ·

Specific to Unity WWW vs HTTP Web Request, WWW should be fine. I'd recommend two things:

1. Update to the latest version of Unity, and

2. Have a look at our web request implementation in our example game project: https://github.com/PlayFab/UnicornBattle.

0 Likes 0 ·
zarasatelawrence avatar image zarasatelawrence brendan commented ·

We are using the latest version of Unity 5, and the only difference I see with the Unicorn Battle and our login process is we require a google play or game center account to Login instead of the device ID.

We've also followed the documentation and the examples for android and ios release but still we were not able to pass App Store's app review due to ipv6 compatibility issues.

0 Likes 0 ·
Show more comments
Chris avatar image Chris commented ·

We finally managed to get our setup correctly in ipv6 on the Mac, and this is the error we get when connecting to playfab :

SocketException: Network is unreachable System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) Rethrow as WebException: Error: ConnectFailure (Network is unreachable) System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult) System.Net.HttpWebRequest.GetRequestStream () PlayFab.Internal.PlayFabWebRequest.Post (PlayFab.Internal.CallRequestContainer reqContainer) (at Assets/PlayFabSdk/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:198) Rethrow as WebException: ConnectFailure: WebException making http request to: https://XXXX.playfabapi.com/Client/LoginWithCustomID UnityEngine.Debug:LogException(Exception) PlayFab.Internal.PlayFabWebRequest:Post(CallRequestContainer) (at Assets/PlayFabSdk/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:211) PlayFab.Internal.PlayFabWebRequest:WorkerThreadMainLoop() (at Assets/PlayFabSdk/Shared/Internal/PlayFabHttp/PlayFabWebRequest.cs:131)

0 Likes 0 ·
brendan avatar image brendan Chris commented ·

That's actually a common error for many versions of Unity - what version are you using? If it's not at least 5.3.4p4, you'll need to update. What the error is specifically saying is, "the client can't figure out how to talk to that endpoint". But that's a result of the client not being able to deal with the IP translation - that's what Apple is testing for. From their doc (https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html):

"A DNS64/NAT64 network is an IPv6-only network that continues to provide access to IPv4 content through translation."

In other words, the server endpoints being IPv4 is irrelevant. The network library the client is using needs to be connecting by name, not resolving the DNS name before attempting to connect (usually the problem).

I would also recommend reading Unity's info on their IPv6 support, starting with this thread: https://forum.unity3d.com/threads/unity-ios-and-ipv6-support.404938/.

0 Likes 0 ·
Chris avatar image Chris commented ·

Hi, thank you for your response.

We are already using unity 5.6.0p2...

-1 Like -1 ·
brendan avatar image brendan Chris commented ·

It's very hard to help you further without more details of what's happening in your network layer. Can you get a Wireshark capture of the calls (https://wiki.wireshark.org/SSL)?

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.