2012-09-05 12 views
5

Desidero soddisfare LICENSE_OLD_KEY nella mia politica di licenza Android. Stavo per modificare il ServerManagedPolicy in quanto non è adatto per questo, per quanto posso dire, sembra proprio per cercare Policy.LICENSED o Policy.NOT_LICENSED in processServerResponse metodo:Quali sono i codici di risposta (valori) restituiti dal server di Google Play in una risposta di licenza?

public void processServerResponse(int response, ResponseData rawData) { 

    // Update retry counter 
    if (response != Policy.RETRY) { 
     setRetryCount(0); 
    } else { 
     setRetryCount(mRetryCount + 1); 
    } 

    if (response == Policy.LICENSED) { 
     // Update server policy data 
     Map<String, String> extras = decodeExtras(rawData.extra); 
     mLastResponse = response; 
     setValidityTimestamp(extras.get("VT")); 
     setRetryUntil(extras.get("GT")); 
     setMaxRetries(extras.get("GR")); 
    } else if (response == Policy.NOT_LICENSED) { 
     // Clear out stale policy data 
     setValidityTimestamp(DEFAULT_VALIDITY_TIMESTAMP); 
     setRetryUntil(DEFAULT_RETRY_UNTIL); 
     setMaxRetries(DEFAULT_MAX_RETRIES); 
    } 

    setLastResponse(response); 
    mPreferences.commit(); 
} 

mi piacerebbe sapere ciò che il codice di risposta è per LICENSE_OLD_KEY perché che non esiste in politica:

public static final int LICENSED = 0x0100; 
public static final int NOT_LICENSED = 0x0231; 
public static final int RETRY = 0x0123; 

ho dato un'occhiata here, ma non riesco a trovare da nessuna parte che elenca il nome e valori.

Posso vedere che ci sono un elenco di codici di risposta del server in LicenseValidator ma non corrispondono a quelli di politica:

// Server response codes. 
private static final int LICENSED = 0x0; 
private static final int NOT_LICENSED = 0x1; 
private static final int LICENSED_OLD_KEY = 0x2; 
private static final int ERROR_NOT_MARKET_MANAGED = 0x3; 
private static final int ERROR_SERVER_FAILURE = 0x4; 
private static final int ERROR_OVER_QUOTA = 0x5; 

private static final int ERROR_CONTACTING_SERVER = 0x101; 
private static final int ERROR_INVALID_PACKAGE_NAME = 0x102; 
private static final int ERROR_NON_MATCHING_UID = 0x103; 
+0

Non sembra molto disponibile su Internet quando si cerca su google per LICENSE_OLD_KEY. Forse non dovremo più occuparci di LICENSE_OLD_KEY? Qualcuno sa?? Vorrei che la documentazione di Android fosse aggiornata ... – James

risposta

5

Dare qualche pensiero ho deciso di provare la visualizzazione dei codici motivo restituiti dal server Google Play sul mio telefono, utilizzando AlertDialog's. Ecco cosa ho trovato:

Selezionando LICENZA, nel profilo della Console sviluppatore, è stato restituito il numero 256, come da Policy.LICENSED.

Selezionando NOT_LICENSED è stato restituito il numero 561, sempre come da Policy.NOT_LICENSED.

Infine, selezionando LICENSED_OLD_KEY ha restituito il numero 256, che è lo stesso di Policy.LICENSED.

Quindi sembrerebbe che LICENSED_OLD_KEY non è più utilizzato, o piuttosto non vi è alcuna distinzione tra LICENSED e LICENSED_OLD_KEY. Il che è un po 'confuso date le informazioni fornite da google nella loro documentazione here.

Giusto per notare, ho provato a disinstallare la mia app e selezionare le diverse opzioni nella console degli sviluppatori alcune volte, ma ha sempre avuto come risultato la stessa risposta!

0

Il codice che stai guardando è solo un'implementazione di riferimento. Non può sapere come vorresti gestire una situazione di LICENSED_OLD_KEY in dettaglio. La documentazione suggerisce che è possibile limitare l'accesso all'app corrente o ai dati del server dall'app corrente e chiedere all'utente di aggiornare e utilizzare la versione più recente. Non c'è nulla che possa fornire un'implementazione di riferimento che ti permetta di affrontare tutte queste situazioni. Puoi e dovresti modificare il codice per trattare separatamente LICENSED_OLD_KEY.

Non c'è alcuna indicazione per LICENSED_OLD_KEY "non viene utilizzato più" perché è ancora gestita come una risposta del server nel LicenseValidator.java e "OLD_KEY" si riferisce ad una versione precedente della tua app, non una versione precedente di Google Play gestione del server.