Uzyskiwanie klucza interfejsu API usługi Mapy Google
Aby korzystać z funkcji google Mapy w systemie Android, musisz zarejestrować się w celu uzyskania klucza interfejsu API Mapy w usłudze Google. Dopóki to nie zrobisz, zobaczysz tylko pustą siatkę zamiast mapy w aplikacjach. Musisz uzyskać klucz interfejsu API systemu Android Mapy Google Mapy w wersji 2 — klucze ze starszego klucza interfejsu API systemu Google Mapy Android v1 nie będą działać.
Uzyskanie klucza interfejsu API Mapy w wersji 2 obejmuje następujące kroki:
- Pobierz odcisk palca SHA-1 magazynu kluczy, który jest używany do podpisywania aplikacji.
- Utwórz projekt w konsoli interfejsów API Google.
- Uzyskiwanie klucza interfejsu API.
Uzyskiwanie odcisku palca klucza podpisywania
Aby zażądać klucza interfejsu API Mapy od firmy Google, musisz znać odcisk palca SHA-1 magazynu kluczy używany do podpisywania aplikacji. Zazwyczaj oznacza to, że należy określić odcisk palca SHA-1 dla magazynu kluczy debugowania, a następnie odcisk palca SHA-1 dla magazynu kluczy, który jest używany do podpisywania aplikacji do wydania.
Domyślnie magazyn kluczy używany do podpisywania wersji debugowania aplikacji platformy Xamarin.Android można znaleźć w następującej lokalizacji:
C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono dla systemu Android\debug.keystore
Informacje o magazynie kluczy są uzyskiwane przez uruchomienie keytool
polecenia z zestawu JDK. To narzędzie zazwyczaj znajduje się w katalogu bin języka Java:
C:\Program Files\Android\jdk\microsoft_dist_openjdk_[VERSION]\bin\keytool.exe
Uruchom narzędzia keytool przy użyciu następującego polecenia (przy użyciu ścieżek plików pokazanych powyżej):
keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD]
Przykład debug.keystore
Dla domyślnego klucza debugowania (który jest automatycznie tworzony na potrzeby debugowania), użyj następującego polecenia:
keytool.exe -list -v -keystore "C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
Klucze produkcyjne
Podczas wdrażania aplikacji w sklepie Google Play musi być podpisana przy użyciu klucza prywatnego.
Element keytool
będzie musiał zostać uruchomiony przy użyciu szczegółów klucza prywatnego, a wynikowy odcisk palca SHA-1 użyty do utworzenia produkcyjnego klucza interfejsu API google Mapy. Pamiętaj, aby zaktualizować plik AndroidManifest.xml przy użyciu poprawnego klucza interfejsu API Mapy Google przed wdrożeniem.
Dane wyjściowe narzędzia Keytool
W oknie konsoli powinny zostać wyświetlone dane wyjściowe podobne do następujących:
Alias name: androiddebugkey
Creation date: Jan 01, 2016
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 4aa9b300
Valid from: Mon Jan 01 08:04:04 UTC 2013 until: Mon Jan 01 18:04:04 PST 2033
Certificate fingerprints:
MD5: AE:9F:95:D0:A6:86:89:BC:A8:70:BA:34:FF:6A:AC:F9
SHA1: BB:0D:AC:74:D3:21:E1:43:07:71:9B:62:90:AF:A1:66:6E:44:5D:75
Signature algorithm name: SHA1withRSA
Version: 3
W dalszej części tego przewodnika użyjesz odcisku palca SHA-1 (wymienionego po sha1).
Tworzenie projektu interfejsu API
Po pobraniu odcisku palca SHA-1 magazynu kluczy podpisywania należy utworzyć nowy projekt w konsoli interfejsów API Google (lub dodać usługę Google Mapy Interfejs API systemu Android w wersji 2 do istniejącego projektu).
W przeglądarce przejdź do pulpitu nawigacyjnego interfejsu API konsoli i usług Google Developers, a następnie kliknij pozycję Wybierz projekt. Kliknij nazwę projektu lub utwórz nowy, klikając pozycję NOWY PROJEKT:
Jeśli utworzono nowy projekt, wprowadź nazwę projektu w wyświetlonym oknie dialogowym Nowy projekt . To okno dialogowe spowoduje utworzenie unikatowego identyfikatora projektu opartego na nazwie projektu. Następnie kliknij przycisk Utwórz , jak pokazano w tym przykładzie:
Po minucie zostanie utworzony projekt i zostanie on przeniesiony na stronę Pulpit nawigacyjny projektu. W tym miejscu kliknij pozycję WŁĄCZ INTERFEJSY API I USŁUGI:
Na stronie Biblioteka interfejsów API kliknij pozycję Mapy SDK dla systemu Android. Na następnej stronie kliknij pozycję WŁĄCZ , aby włączyć usługę dla tego projektu:
Na tym etapie projekt interfejsu API został utworzony, a interfejs API systemu Android w wersji 2 firmy Google Mapy został do niego dodany. Nie można jednak używać tego interfejsu API w projekcie do momentu utworzenia dla niego poświadczeń. W następnej sekcji wyjaśniono, jak utworzyć klucz interfejsu API i autoryzować aplikację platformy Xamarin.Android do korzystania z tego klucza.
Uzyskiwanie klucza interfejsu API
Po utworzeniu projektu interfejsu API konsoli dewelopera Google należy utworzyć klucz interfejsu API systemu Android. Aplikacje platformy Xamarin.Android muszą mieć klucz interfejsu API przed udzieleniem im dostępu do interfejsu API mapy systemu Android w wersji 2.
Na wyświetlonej stronie zestawu SDK Mapy dla systemu Android (po kliknięciu przycisku WŁĄCZ w poprzednim kroku przejdź do karty Poświadczenia i kliknij przycisk Utwórz poświadczenia:
Kliknij pozycję Klucz interfejsu API:
Po kliknięciu tego przycisku zostanie wygenerowany klucz interfejsu API. Następnie należy ograniczyć ten klucz, aby tylko aplikacja mogła wywoływać interfejsy API za pomocą tego klucza. Kliknij pozycję OGRANICZ KLUCZ:
Zmień pole Nazwa z klucza interfejsu API 1 na nazwę, która pomoże Zapamiętać, jaki klucz jest używany dla (Xamarin Mapy DemoKey jest używany w tym przykładzie). Następnie kliknij przycisk radiowy Aplikacje dla systemu Android:
Aby dodać odcisk palca SHA-1, kliknij pozycję + Dodaj nazwę pakietu i odcisk palca:
Wprowadź nazwę pakietu aplikacji i wprowadź odcisk palca certyfikatu SHA-1 (uzyskany za pomocą
keytool
instrukcji opisanych wcześniej w tym przewodniku). W poniższym przykładzie wprowadzona jest nazwaXamarinMapsDemo
pakietu, a następnie odcisk palca certyfikatu SHA-1 uzyskany z debug.keystore:Należy pamiętać, że aby plik APK uzyskiwał dostęp do Mapy Google, należy dołączyć odciski palców SHA-1 i nazwy pakietów dla każdego magazynu kluczy (debugowanie i wydawanie), którego używasz do podpisywania pakietu APK. Jeśli na przykład używasz jednego komputera do debugowania i innego komputera do generowania wersji APK, należy dołączyć odcisk palca certyfikatu SHA-1 z magazynu kluczy debugowania pierwszego komputera i odcisk palca certyfikatu SHA-1 z magazynu kluczy wydania drugiego komputera. Kliknij pozycję + Dodaj nazwę pakietu i odcisk palca, aby dodać kolejny odcisk palca i nazwę pakietu, jak pokazano w tym przykładzie:
Kliknij przycisk Zapisz, aby zapisać zmiany. Następnie wrócisz do listy kluczy interfejsu API. Jeśli masz utworzone wcześniej inne klucze interfejsu API, zostaną one również wyświetlone tutaj. W tym przykładzie jest wyświetlany tylko jeden klucz interfejsu API (utworzony w poprzednich krokach):
Połączenie projektu na rozliczane konto
Od 11 czerwca 2018 r. klucz interfejsu API nie będzie działać, jeśli projekt nie jest połączony z rozliczanym kontem (nawet jeśli usługa jest nadal bezpłatna dla aplikacji mobilnych).
Kliknij przycisk menu hamburger i wybierz stronę Rozliczenia :
Połącz projekt z kontem rozliczeniowym, klikając pozycję Połącz konto rozliczeniowe, a następnie pozycję UTWÓRZ KONTO ROZLICZENIOWE w wyświetlonym oknie podręcznym (jeśli nie masz konta, zostanie wyświetlony przewodnik tworzenia nowego):
Dodawanie klucza do projektu
Na koniec dodaj ten klucz interfejsu API do pliku AndroidManifest.XML aplikacji Xamarin.Android. W poniższym przykładzie YOUR_API_KEY
należy zastąpić klucz interfejsu API wygenerowany w poprzednich krokach:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionName="4.10" package="com.xamarin.docs.android.mapsandlocationdemo"
android:versionCode="10">
...
<application android:label="@string/app_name">
<!-- Put your Google Maps V2 API Key here. -->
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="YOUR_API_KEY" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
</application>
</manifest>