2011-01-26 2 views
20

Qualcuno potrebbe descrivermi una soluzione per implementare un plug-in all'interno di un'applicazione Android e come potrebbe essere venduto su Android Market?Come rilasciare il plug-in dell'applicazione utilizzando Android Market?

In genere, si crea un gioco i cui primi 4 livelli sono gratuiti. Quindi, l'utente dovrebbe acquistare qualcosa utilizzando Android Market per sbloccare ulteriori livelli.

Una soluzione potrebbe essere quella di elencare i pacchetti impostati sul telefono che sono denominati com.company.myApp.additionalLevelSet1 ma non sembra affatto sicuro! (un utente può impostare manualmente i pacchetti di plugin e quindi sbloccare liberamente le funzionalità aggiuntive)

Su iPhone, è possibile utilizzare InAppPurchase per acquistare prodotti non consumabili o di consumo.

Qualsiasi aiuto o suggerimento sarebbe apprezzato. Grazie!

+0

Google ha recentemente annunciato che l'acquisto in-app sarà presto disponibile sul mercato. – tamasd

risposta

27

E 'abbastanza semplice nel tuo caso, dal momento che non hai bisogno di alcuna logica in più, ma solo più livelli, quindi mi limiterò a questo caso specifico:

Puoi (o probabilmente già farai) i tuoi livelli di gioco salvati come risorse nel tuo .apk, quindi un plug-in può essere un .apk standard, che non comparirà nell'elenco di utenti-app. Per evitare che venga visualizzato, semplicemente non dichiarare la categoria-launcher:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Una volta che il frammento di codice fa NON appaiono nel AndroidManifest del vostro plugin, non sarà direttamente accessibile per l'utente.

All'avvio dell'attività di gioco principale, è necessario verificare l'esistenza di plug-in, è possibile farlo chiamando PackageManager.queryIntentActivities.E l'interrogazione per un intento specifico che si dichiarata nel file AndroidManifest del vostro plugin, per esempio:

<intent-filter> 
    <action android:name="com.your.package.name.LEVEL_PACK" /> 
</intent-filter> 

Il codice di query sarebbe allora:

PackageManager packageManager = getPackageManager(); 
Intent levelsIntent = new Intent("com.your.package.name.LEVEL_PACK"); 
List<ResolveInfo> levelPacks = packageManager.queryIntentActivities(levelsIntent, 0); 

Ci sono più modi per farlo, ma questo è abbastanza banale e diretto.

L'ultimo passaggio consiste nell'accedere ai livelli dai pacchetti di livello installati. Puoi farlo chiamando il numero: PackageManager.getResourcesForActivity e carica le risorse pertinenti e usale come preferisci.

+0

Grazie per la risposta che è stata chiarita sulla procedura. Tuttavia, sai se esiste una soluzione per contrastare un utente che potrebbe trovare l'APK del plugin, installarlo manualmente e quindi ottenere liberamente i livelli aggiuntivi? Forse è una domanda stupida ... – Sly

+0

Questa è una domanda molto più generica - per quanto ne so non esiste un gioco/applicazione che è "noncrassibile", il modo più sicuro è avere il proprio server e l'app controllerà contro se i livelli sono installati ... E ogni livello pack installato dovrebbe riferire al server ... Ovviamente eccessivo overkill :) – Devenv

+1

@Lior: Puoi elencare altri modi per il problema sopra riportato? – kAnNaN

0

Quello che ho visto finora su Android Market sono versioni completamente diverse di app gratuite rispetto a contenuti a pagamento della stessa applicazione.

Non ho ancora esaminato i plug-in, quindi non so se questa funzione è disponibile, ma se non riesci a trovarla, una soluzione potrebbe essere quella di avviare le applicazioni e nasconderle dall'applicazione di aggiunta a menu Home e/o menu di scelta rapida e basta aggiungere un collegamento all'interno dell'applicazione principale.

Un'altra soluzione è quella di trattare la vostra contenuti additionnal come librerie di contenuti a pagamento e semplicemente bloccare l'accesso a livello se la risorsa non è accessibile. Ma devi verificare se hai il diritto di avere librairie private separate dalla tua applicazione.

Fondamentalmente quello che stai cercando di fare è esattamente ciò che hoster di contenuti come Apple e Android stanno cercando di evitare o controllare in quanto permetterebbe lo streaming di nuovi contenuti al tuo app senza l'host contenuti sapendo in realtà è nuovo contenuto per un'altra app.

vi consiglio di leggere questo per capire il motivo per cui un multiplo app-app non è evidente in Android: Android Security