La préférence IPv6 / IPv4 est déterminée par l'initiateur d'une connexion, c'est-à-dire le navigateur Web. Les règles de sélection d'adresse sont définies dans la RFC 6724 . Bien que ceux-ci puissent être remplacés, ce n'est que par l'utilisateur qui reconfigure leur système d'exploitation.
La seule façon de forcer quelqu'un à utiliser IPv4 est de ne pas proposer IPv6 du tout. Ce n'est évidemment pas une solution pratique même à moyen terme ...
Revenons donc au problème d'origine: la géolocalisation pour IPv6 est "un peu plus irrégulière qu'avec IPv4".
Cela dépend en partie de l'endroit où vous obtenez vos données de géolocalisation. Maxmind, par exemple, ne donne mon adresse IPv6 que "États-Unis" sans aucune ville et un ensemble intéressant de coordonnées , tandis que Google identifie au moins correctement la zone métropolitaine à environ 50 miles de distance. Maxmind et Google permettent de signaler les corrections, et au moins pour Maxmind, n'importe qui peut le faire pour n'importe quelle adresse IP.
Je ne m'attendrais pas à ce que cette situation dure très longtemps. Alors que l'utilisation d'IPv6 continue de se développer, les utilisateurs de ces services de géolocalisation exigeront une plus grande précision pour les adresses IPv6, et ils devront éventuellement la fournir, au moins pour les clients payants, de peur que ces clients n'aillent ailleurs.
En attendant, vous devez vous assurer que votre application dispose d'autres moyens pour localiser les utilisateurs. S'ils se sont connectés, vous pouvez lire leur compte existant pour obtenir des indices sur leur emplacement. Vous pouvez demander à l'utilisateur de sélectionner explicitement un pays. Etc...
Une autre chose que vous pouvez faire est de fournir un sous-domaine IPv4 uniquement et un sous-domaine IPv6 uniquement de votre site Web, chacun de vos pages tentant de se charger. Vous pouvez ensuite les corréler côté client et faire rapport au serveur. Ce n'est pas par hasard que Maxmind le fait déjà sur son propre site Web.