2016-08-04 48 views
0

Ich entwickle diese Android-App für meine Firma (sagen wir die Hauptdomain ist mycompany.com) und ich muss die Website des Unternehmens mit der spezifischen TLD für das aktuelle Land öffnen, in dem sich das Gerät befindet. Ortsbezogene Ländercodes sind also nicht gut für mich.Wie öffne ich eine Domain basierend auf dem aktuellen Land, in dem sich das Gerät befindet?

Ich meine, wenn Sie sich gerade im Ausland in Spanien sind und Sie unsere App öffnen, sollte es mycompany.es öffnen, wenn Sie in Italien sind, sollten sie mycompany.it öffnen und so weiter. Ich brauche das nicht für jedes mögliche Land, nur ein paar, der Fallback wird mycompany.com sein, wenn der aktuelle Ländercode keiner der spezifischen entspricht.

Ich brauche das wirklich, bevor ich etwas anderes auf meiner App mache, dies wird eine WebView Eröffnung der Web-App des Unternehmens sein. Mit anderen Worten, bis ich den Ländercode des Geräts erhalte, ist die App unbrauchbar. Dies liegt daran, dass einige Länder (wie Spanien) uns zwingen, nur mycompany.es zu haben, während der mycompany.com auf der ISP-Ebene vollständig blockiert ist.

Ich brauche dies für alle Geräte, Telefone/Tablets, alle Mobilfunknetze oder nur Wi-Fi. Sachen wie TelephonyManager.getNetworkCountryIso() helfen wahrscheinlich nicht.

Ich muss den Standort entweder mit LocationManager oder Googles Location Services API erhalten. Mit jedem von ihnen muss ich den letzten bekannten Ort bekommen, aber wenn ich aus irgendeinem Grund keinen bekomme, muss ich Standort-Updates anfordern und darauf warten. Bei den Diensten von Google gibt es auch die Einschränkung, bei der der Benutzer die Standortdienste deaktiviert hat, was ein Problem darstellt. Ich müsste auf LocationManager zurückgreifen, was nicht so zuverlässig erscheint.

All diese Lösungen scheinen umständlich zu sein, nur um den aktuellen Ländercode des Geräts zu erhalten, nur um die WebView-URL in der richtigen Domäne zu laden. Aber ich denke, ich habe keine andere Wahl.

Es sei denn jemand kennt eine bessere Lösung für dieses Problem ... Gedanken?

Antwort

2

Mein erster Gedanke ist nur, weil ich in Spanien bin, bedeutet nicht, dass ich plötzlich Spanisch sprechen kann. Ich möchte immer noch die Website sehen, die mit meinem Telefongebietsschema übereinstimmt. Aber angesichts Ihrer Aussage, dass .com auf der ISP-Ebene blockiert ist, sieht es so aus, als hätten Sie keine Wahl. Hoffentlich wenn Sie die Website öffnen, können Sie ihm das Gebietsschema des Geräts mitteilen. Wenn ich also en_us bin, erhalte ich standardmäßig die .es-Website in Englisch.

Angesichts der Anforderungen, die Sie angelegt haben, denke ich, dass Sie nur einen Standort erhalten müssen, warten Sie darauf und dann eine Standortzuordnung zu Ihren Websites Gebietsschemata, die unterstützt werden. Wenn ich dies tue, würde ich die Location Services API über den Location Manager empfehlen. Es ist viel zuverlässiger und schneller, da es Speicherorte für jede App speichert, die es bereits abgerufen hat, und automatisch Fallbacks für Sie verarbeitet.

+0

Was meinst du damit, dass die Ortungsdienste Fallbacks für mich behandeln? –

+1

Dieses Thema fasst es ziemlich gut http://StackOverflow.com/Questions/33022662/Android-LocationManager-VS-google-Play-services –

+0

Ich stieß auf diesen Beitrag vor dem Posten dieser Frage, habe ich nichts über eine bemerkt Zurückfallen. Aber ich werde genauer hinsehen, wenn ich nach Hause komme. Vielen Dank. –