Ottenere una chiave API Google Maps

Per usare la funzionalità google Mappe in Android, è necessario registrarsi per una chiave API Mappe con Google. Fino a quando non si esegue questa operazione, verrà visualizzata solo una griglia vuota anziché una mappa nelle applicazioni. È necessario ottenere una chiave dell'API Android v2 di Google Mappe: le chiavi della chiave API Android Mappe precedente di Google Mappe versione 1 non funzioneranno.

Per ottenere una chiave API v2 Mappe sono necessari i passaggi seguenti:

  1. Recuperare l'impronta digitale SHA-1 dell'archivio chiavi usato per firmare l'applicazione.
  2. Creare un progetto nella console delle API Google.
  3. Recupero della chiave API.

Recupero dell'impronta digitale della chiave di firma

Per richiedere una chiave API Mappe da Google, è necessario conoscere l'impronta digitale SHA-1 dell'archivio chiavi usato per firmare l'applicazione. In genere, ciò significa che sarà necessario determinare l'impronta digitale SHA-1 per l'archivio chiavi di debug e quindi l'impronta digitale SHA-1 per l'archivio chiavi usato per firmare l'applicazione per il rilascio.

Per impostazione predefinita, l'archivio chiavi usato per firmare le versioni di debug di un'applicazione Xamarin.Android è disponibile nel percorso seguente:

C:\Users\[U edizione Standard RNAME]\AppData\Local\Xamarin\Mono for Android\debug.keystore

Le informazioni su un archivio chiavi si ottengono eseguendo il comando keytool dal JDK. Questo strumento si trova in genere nella directory bin Java:

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

Eseguire keytool usando il comando seguente (usando i percorsi dei file illustrati in precedenza):

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

Esempio di Debug.keystore

Per la chiave di debug predefinita ,creata automaticamente per il debug, usare questo comando:

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

Chiavi di produzione

Quando si distribuisce un'app in Google Play, è necessario firmarla con una chiave privata. Sarà keytool necessario eseguire con i dettagli della chiave privata e l'impronta digitale SHA-1 risultante usata per creare una chiave API di Google Mappe di produzione. Ricordarsi di aggiornare il file AndroidManifest.xml con la chiave API di Google Mappe corretta prima della distribuzione.

Keytool Output

Nella finestra della console dovrebbe essere visualizzato un output simile al seguente:

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

Più avanti in questa guida si userà l'impronta digitale SHA-1 (elencata dopo SHA1).

Creazione di un progetto API

Dopo aver recuperato l'impronta digitale SHA-1 dell'archivio chiavi di firma, è necessario creare un nuovo progetto nella console delle API Google (o aggiungere il servizio API Android v2 di Google Mappe a un progetto esistente).

  1. In un browser passare al dashboard api e servizi di Google Developers Console e fare clic su Seleziona un progetto. Fare clic sul nome di un progetto o crearne uno nuovo facendo clic su NUOVO PROGETTO:

    Google Developer Console CREATE PROJECT button

  2. Se è stato creato un nuovo progetto, immettere il nome del progetto nella finestra di dialogo Nuovo progetto visualizzata. Questa finestra di dialogo produrrà un ID progetto univoco basato sul nome del progetto. Fare quindi clic sul pulsante Crea come illustrato in questo esempio:

    New project is named XamarinMapsDemo

  3. Dopo un minuto, il progetto viene creato e viene visualizzata la pagina Dashboard del progetto. Fare clic su ABILITA API E edizione Standard RVICES:

    Clicking Google Maps Android API in the Library section

  4. Nella pagina Libreria API fare clic su Mappe SDK per Android. Nella pagina successiva fare clic su ABILITA per attivare il servizio per il progetto:

    Clicking the ENABLE button in the Dashboard section

A questo punto il progetto API è stato creato e Google Mappe API Android v2 è stato aggiunto. Tuttavia, non è possibile usare questa API nel progetto finché non si creano le credenziali. La sezione successiva illustra come creare una chiave API e autorizzare un'applicazione Xamarin.Android a usare questa chiave.

Recupero della chiave API

Dopo aver creato il progetto API di Google Developer Console , è necessario creare una chiave API Android. Le applicazioni Xamarin.Android devono avere una chiave API prima di concedere l'accesso all'API Map android v2.

  1. Nella pagina Mappe SDK per Android visualizzata (dopo aver fatto clic su ABILITA nel passaggio precedente), passare alla scheda Credenziali e fare clic sul pulsante Crea credenziali:

    Maps SDK for Android Credentials message

  2. Fare clic su Chiave API:

    Add credentials to your project dialog

  3. Dopo aver fatto clic su questo pulsante, viene generata la chiave API. A questo punto è necessario limitare questa chiave in modo che solo l'app possa chiamare LE API con questa chiave. Fare clic su RESTRICT KEY (LIMITA CHIAVE):

    Clicking Restrict Key on the Credentials page

  4. Modificare il campo Nome da Chiave API 1 a un nome che consentirà di ricordare la chiave usata per (Xamarin Mappe DemoKey viene usata in questo esempio). Fare quindi clic sul pulsante di opzione App Android:

    Selecting Android apps on the Credentials page

  5. Per aggiungere l'impronta digitale SHA-1, fare clic su + Aggiungi nome pacchetto e impronta digitale:

    Clicking Add package name and fingerprint

  6. Immettere il nome del pacchetto dell'app e immettere l'impronta digitale del certificato SHA-1 (ottenuta tramite keytool come illustrato in precedenza in questa guida). Nell'esempio seguente viene immesso il nome del pacchetto per XamarinMapsDemo , seguito dall'impronta digitale del certificato SHA-1 ottenuta da debug.keystore:

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

  7. Si noti che, per consentire all'APK di accedere a Google Mappe, è necessario includere le impronte digitali SHA-1 e i nomi dei pacchetti per ogni archivio chiavi (debug e versione) usato per firmare il file APK. Ad esempio, se si usa un computer per il debug e un altro computer per la generazione dell'APK di versione, è necessario includere l'impronta digitale del certificato SHA-1 dall'archivio chiavi di debug del primo computer e l'impronta digitale del certificato SHA-1 dall'archivio chiavi di rilascio del secondo computer. Fare clic su + Aggiungi nome pacchetto e impronta digitale per aggiungere un'altra impronta digitale e un nome del pacchetto, come illustrato in questo esempio:

    Adding another fingerprint creates another SHA-1 certificate

  8. Fare clic sul pulsante Salva per salvare le modifiche. Si tornerà quindi all'elenco delle chiavi API. Se sono presenti altre chiavi API create in precedenza, verranno elencate anche qui. In questo esempio viene elencata una sola chiave API (creata nei passaggi precedenti):

    XamarinMapsDemoKey is shown in the API keys list

Connessione il progetto a un account fatturabile

A partire da giugno 2018, la chiave API non funzionerà se il progetto non è connesso a un account fatturabile (anche se il servizio è ancora gratuito per le app per dispositivi mobili).

  1. Fare clic sul pulsante del menu hamburger e selezionare la pagina Fatturazione :

    Selecting the hamburger menu billing section

  2. Collegare il progetto a un account di fatturazione facendo clic su Collega un account di fatturazione seguito da CREA ACCOUNT DI FATTURAZIONE nella finestra popup visualizzata (se non si ha un account, si verrà guidati per crearne uno nuovo):

    Link project to billing account

Aggiunta della chiave al progetto

Aggiungere infine questa chiave API al file AndroidManifest.XML dell'app Xamarin.Android. Nell'esempio YOUR_API_KEY seguente, deve essere sostituito con la chiave API generata nei passaggi precedenti:

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