Autore Topic: Creare un app "key" per abilitare funzioni di un app free  (Letto 337 volte)

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Creare un app "key" per abilitare funzioni di un app free
« il: 12 Dicembre 2014, 00:14:20 CET »
0
Salve,

vorrei creare una app (di piccole dimensioni) che una volta installata sblocchi alcune funzioni di un'altra mia app.
In sostanza come capita spesso di trovare nel Play Store vorrei creare una sorta di "app key" che una volta acquistata ed installata permetta di abilitare alcune funzioni di una mia app gratuita altrimenti non disponibili.

Ora vi chiedo:
1. qual'è la logica che permette di valutare alla mia app gratuita se l'utente ha acquistato "l'app key"? Cosa dovrebbe controllare e come?
2. "l'app key" dovrebbe essere di dimensioni molto contenute e non mostrare alcuna icona nel menu visto che l'utente di fatto non deve interfacciarsi con lei, come posso fare a ridurre le dimensioni e a far sparire l'icona dal menu?
3. esistono esempi a riguardo?

Grazie.

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Creare un app "key" per abilitare funzioni di un app free
« Risposta #1 il: 12 Dicembre 2014, 10:20:25 CET »
0
1. Puoi fare due cose... o vedere semplicemente se la tua App key è installata, oppure salvare una chiave "comune" nelle shared preferences della AppKey e leggerla dalla App gratis.

Per la prima cosa:
Codice (Java): [Seleziona]
        Boolean keyInstalled = false;
        try {
            keyInstalled = (context.getPackageManager().getPackageInfo( com.xxx.appkey, 0) != null);
        } catch (PackageManager.NameNotFoundException exc) { }
Ma non è molto sicuro... chiunque può fare un Appina con il packagename che serve.

Per la seconda basta che nella AppKey chiami getSharedPreferences in modo Context.MODE_WORLD_READABLE
Dalla AppGratis prendi il contest dell AppKey con createPackageContext e da lì leggi le SharedPreferences
Però è deprecato... io eviterei.

Probabilmente si può fare qualcosa di più sicuro con il meccanismo del licensing, credo sia semplice ma non l'ho mai usato.

Per il punto 2. non so... perché invece non usi InAppPurchase?

Ciao.

Offline DHD

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    m7
  • Sistema operativo:
    Win 8.1
Re:Creare un app "key" per abilitare funzioni di un app free
« Risposta #2 il: 31 Dicembre 2014, 19:09:34 CET »
0
1. Puoi fare due cose... o vedere semplicemente se la tua App key è installata, oppure salvare una chiave "comune" nelle shared preferences della AppKey e leggerla dalla App gratis.

Per la prima cosa:
Codice (Java): [Seleziona]
        Boolean keyInstalled = false;
        try {
            keyInstalled = (context.getPackageManager().getPackageInfo( com.xxx.appkey, 0) != null);
        } catch (PackageManager.NameNotFoundException exc) { }
Ma non è molto sicuro... chiunque può fare un Appina con il packagename che serve.

Per la seconda basta che nella AppKey chiami getSharedPreferences in modo Context.MODE_WORLD_READABLE
Dalla AppGratis prendi il contest dell AppKey con createPackageContext e da lì leggi le SharedPreferences
Però è deprecato... io eviterei.

Probabilmente si può fare qualcosa di più sicuro con il meccanismo del licensing, credo sia semplice ma non l'ho mai usato.

Per il punto 2. non so... perché invece non usi InAppPurchase?

Ciao.


Si può migliorare il tuo metodo interagendo con l'app in questione:
Codice (Java): [Seleziona]
public void checkKey(){
        Log.d(Constants.TAG, "Check for existence of pro app");

        Intent pro_app = new Intent("android.intent.action.MAIN");
        pro_app.setComponent(ComponentName.unflattenFromString("com.xxx.key/"
                        + "com.xxx.key.MainActivity"));
       
        pro_app.putExtra("checkCode",
                "thisIsMyCheckCode");

        try {
            startActivityForResult(pro_app, 0);
            Log.d("ProApp", "startActivityForResult started");
        } catch (ActivityNotFoundException e) {
            Log.w("ProApp", "WARNING! The pro app doesn't exist");
}

E poi:
Codice (Java): [Seleziona]
@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (resultCode == RESULT_OK && requestCode == 0) {
                Log.d("ProApp","Pro functions unlocked");
            } else {
                Log.d("MainActivity", "No key installed");
            }
        }

Volendo puoi anche usare le sharedPreferences per ricordare che hai la key, e al massimo ricontrolli solo se l'app è installata senza eseguire il check completo.