Získání klíče rozhraní API služby Mapy Google

Pokud chcete používat funkce Google Mapy v Androidu, musíte si zaregistrovat klíč rozhraní API Mapy u Googlu. Dokud to neuděláte, zobrazí se v aplikacích jenom prázdná mřížka místo mapy. Musíte získat klíč Rozhraní API pro Android v2 google Mapy – klíče ze staršího klíče rozhraní Google Mapy Android API v1 nebudou fungovat.

Získání klíče rozhraní API Mapy v2 zahrnuje následující kroky:

  1. Načtěte otisk SHA-1 úložiště klíčů, který se používá k podepsání aplikace.
  2. Vytvořte projekt v konzole Rozhraní API Google.
  3. Získání klíče rozhraní API

Získání otisku podpisového klíče

Pokud chcete požádat o klíč rozhraní API Mapy od Googlu, musíte znát otisk SHA-1 úložiště klíčů, který se používá k podepsání aplikace. Obvykle to znamená, že budete muset určit otisk SHA-1 pro úložiště klíčů ladění a pak otisk SHA-1 pro úložiště klíčů, který se používá k podepsání vaší aplikace k vydání.

Úložiště klíčů, které se používá k podepisování ladicí verze aplikace Xamarin.Android, najdete v následujícím umístění:

C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono pro Android\debug.keystore

Informace o úložišti klíčů získáte spuštěním keytool příkazu z sady JDK. Tento nástroj se obvykle nachází v adresáři Bin Jazyka Java:

C:\Program Files\Android\jdk\microsoft_dist_openjdk_[VERSION]\bin\keytool.exe

Spusťte nástroj keytool pomocí následujícího příkazu (pomocí výše uvedených cest k souborům):

keytool -list -v -keystore [STORE FILENAME] -alias [KEY NAME] -storepass [STORE PASSWORD] -keypass [KEY PASSWORD]

Příklad debug.keystore

Pro výchozí ladicí klíč (který se automaticky vytvoří pro ladění) použijte tento příkaz:

keytool.exe -list -v -keystore "C:\Users\[USERNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore" -alias androiddebugkey -storepass android -keypass android

Produkční klíče

Při nasazování aplikace do Google Play musí být podepsaný privátním klíčem. Bude keytool potřeba spustit podrobnosti o privátním klíči a výsledný otisk SHA-1 použitý k vytvoření produkčního klíče rozhraní GOOGLE Mapy API. Nezapomeňte aktualizovat soubor AndroidManifest.xml správným klíčem rozhraní API google Mapy před nasazením.

Výstup nástroje Keytool

V okně konzoly by se mělo zobrazit něco podobného jako v následujícím výstupu:

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

Otisk prstu SHA-1 (uvedený po SHA1) použijete později v této příručce.

Vytvoření projektu rozhraní API

Po načtení otisku prstu SHA-1 podpisového úložiště klíčů je nutné vytvořit nový projekt v konzole Rozhraní GOOGLE API (nebo přidat službu Google Mapy Android API v2 do existujícího projektu).

  1. V prohlížeči přejděte na řídicí panel rozhraní API a služby Google Developers Console a klikněte na Vybrat projekt. Klikněte na název projektu nebo vytvořte nový kliknutím na NOVÝ PROJEKT:

    Google Developer Console CREATE PROJECT button

  2. Pokud jste vytvořili nový projekt, zadejte název projektu v zobrazeném dialogovém okně Nový projekt . Toto dialogové okno vytvoří jedinečné ID projektu, které je založeno na názvu projektu. Potom klikněte na tlačítko Vytvořit , jak je znázorněno v tomto příkladu:

    New project is named XamarinMapsDemo

  3. Po minutě se projekt vytvoří a přejdete na stránku Řídicí panel projektu. Odtud klikněte na POVOLIT APIS A SLUŽBY:

    Clicking Google Maps Android API in the Library section

  4. Na stránce Knihovna rozhraní API klikněte na Mapy SDK pro Android. Na další stránce klikněte na POVOLIT a zapněte službu pro tento projekt:

    Clicking the ENABLE button in the Dashboard section

V tuto chvíli byl projekt rozhraní API vytvořen a do něj byl přidán Google Mapy Android API v2. Toto rozhraní API však nemůžete použít ve svém projektu, dokud pro něj nevytvoříte přihlašovací údaje. V další části se dozvíte, jak vytvořit klíč rozhraní API a autorizovat aplikaci Xamarin.Android k použití tohoto klíče.

Získání klíče rozhraní API

Po vytvoření projektu rozhraní API google Developer Console je nutné vytvořit klíč rozhraní ANDROID API. Aplikace Xamarin.Android musí mít před udělením přístupu k rozhraní Android Map API verze 2 klíč rozhraní API.

  1. Na stránce Mapy SDK pro Android, která se zobrazí (po kliknutí na POVOLIT v předchozím kroku), přejděte na kartu Přihlašovací údaje a klikněte na tlačítko Vytvořit přihlašovací údaje:

    Maps SDK for Android Credentials message

  2. Klikněte na klíč rozhraní API:

    Add credentials to your project dialog

  3. Po kliknutí na toto tlačítko se vygeneruje klíč rozhraní API. Dále je nutné tento klíč omezit, aby rozhraní API s tímto klíčem mohli volat jenom vaše aplikace. Klikněte na TLAČÍTKO OMEZIT KLÍČ:

    Clicking Restrict Key on the Credentials page

  4. Změňte pole Název z klíče rozhraní API 1 na název, který vám pomůže zapamatovat, k čemu se klíč používá (V tomto příkladu se používá Xamarin Mapy DemoKey). Potom klikněte na přepínač aplikace pro Android:

    Selecting Android apps on the Credentials page

  5. Pokud chcete přidat otisk prstu SHA-1, klikněte na + Přidat název balíčku a otisk prstu:

    Clicking Add package name and fingerprint

  6. Zadejte název balíčku vaší aplikace a zadejte otisk certifikátu SHA-1 (který jste získali keytool výše v této příručce). V následujícím příkladu je zadán název XamarinMapsDemo balíčku následovaný otiskem certifikátu SHA-1 získaným z debug.keystore:

    Package name entered is com.xamarin.docs.android.map

  7. Mějte na paměti, že aby váš APK měl přístup ke google Mapy, musíte zahrnout otisky prstů SHA-1 a názvy balíčků pro každé úložiště klíčů (ladění a vydání), které používáte k podepsání APK. Pokud například používáte jeden počítač pro ladění a jiný počítač pro generování verze APK, měli byste zahrnout otisk certifikátu SHA-1 z ladicího úložiště klíčů prvního počítače a otisk certifikátu SHA-1 z úložiště klíčů vydané verze druhého počítače. Kliknutím na + Přidat název balíčku a otisk prstu přidejte další otisk prstu a název balíčku, jak je znázorněno v tomto příkladu:

    Adding another fingerprint creates another SHA-1 certificate

  8. Kliknutím na tlačítko Uložit uložte provedené změny. Pak se vrátíte do seznamu klíčů rozhraní API. Pokud máte další klíče rozhraní API, které jste vytvořili dříve, zobrazí se zde také. V tomto příkladu je uvedený jenom jeden klíč rozhraní API (vytvořený v předchozích krocích):

    XamarinMapsDemoKey is shown in the API keys list

Připojení projektu k fakturovatelnému účtu

Od 11. června 2018 klíč rozhraní API nebude fungovat, pokud se projekt nepřipojí k fakturovatelnému účtu (i když je služba stále zdarma pro mobilní aplikace).

  1. Klikněte na tlačítko hamburgerové nabídky a vyberte stránku Fakturace :

    Selecting the hamburger menu billing section

  2. Propojte projekt s fakturačním účtem kliknutím na Propojit fakturační účet následovaný vytvořením fakturačního účtu v zobrazeném místním okně (pokud účet nemáte, zobrazí se průvodce vytvořením nového účtu):

    Link project to billing account

Přidání klíče do projektu

Nakonec přidejte tento klíč rozhraní API do souboru AndroidManifest.XML vaší aplikace Xamarin.Android. V následujícím příkladu YOUR_API_KEY se má nahradit klíčem rozhraní API vygenerovaným v předchozích krocích:

<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>