php – Error when trying to host app on itunes

Question:

We made an iPhone app with Embarcadero xe10 + PHP, but when trying to host it on:

It was turned down for not having IPV6 support.

I went to http://validador.ipv6.br/index.php?site=www.useunic.com.br&lang=pt and found that IPV6 access is not supported.

Apple requires my app to work on an IPv6 network as per the website above.

On this host we only host the php files that are used in the app, there is some configuration that we can do to correct this, because I contacted the hosting and they do not have ipv6 support.

Here's the feedback from itunes about the app:

De Apple
2. 1 PERFORMANCE: APP COMPLETENESS
Performance - 2.1


We discovered one or more bugs in your app when reviewed on iPad running iOS 10.2.1 on Wi-Fi connected to an IPv6 network.

Specifically, your app produced an error when we attempted to log in with the demo account you provided.

Please see attached screenshots for details.

Next Steps

Please run your app on a device while connected to an IPv6 network (all apps must support IPv6) to identify any issues, then revise and resubmit your app for review.

If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.

For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

Resources

For information about supporting IPv6 Networks, please refer to Supporting IPv6 DNS64/NAT64 Networks and About Networking.

Answer:

Since June 2016, Apple has required apple store apps to support IPv6-only, which is basically networks that don't use IPv4 tunneling or proxying.

However, if your app uses IPv4-specific APIs or hard-coded IP addresses, you will need to make changes. https://developer.apple.com/support/ipv6/

That is, if your application has a specific IP address, such as opening a socket, or an access that directly uses an IP, it will fall under this rule.

In the documentation it says:

It is not necessary to remove all references to IPv4-only constructors from your application. It is acceptable to have such references and to use IPv4-only constructs, as long as they behave correctly in an IPv6-only environment. IMPORTANT: We encourage you to adopt address-agnostic-friendly APIs instead of maintaining separate code paths for IPv4 and IPv6. (personal translation)

Agnostic APIs are domains that respond in both IPv6 and IPv4, instead of static IPv4.

To perform the compatibility tests you should follow the instructions on this page of Apple support documentation https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref /doc/uid/TP40010220-CH213-SW16

If your application needs to support IPv4 (an ssh connection application for example) you need to apply some modifications to support DNS64/NAT64 to synthesize IPv4 into IPv6, the technique is described in this documentation page: https://developer.apple. com/library/content/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1

For more information access:

https://developer.apple.com/support/ipv6/

Also, your server must be accessible via IPv6, for that you can use CDNs like Cloudflare Inc. that allow traffic via IPv6 without you having 'AAAA' entries. However, be aware that there are limitations such as connection timeout, calls that take a long time to respond can result in error 524 . Another detail about CF is that it does not support socket, so we would have problems with stream and websocket for example.

If Cloudflare is not an option, you must choose a server that has both IPv4 and IPv6 and correctly configure your DNS with "A" entries for IPv4 and "AAAA" entries for IPv6, in addition to configuring your server to receive connections IPv6(Network Layer) and your web server (Application Layer) to account for this IPv6.

As you are using Embarcadero xe10, it is necessary to understand how it handles this issue, because the code will be rewritten and in this rewriting process it must be adapted to the specifications provided by apple.

Scroll to Top