Quando entri in test a tempo limitato e invii ai client "codici di sblocco", questi sono davvero licenze digitali e protezione dalla copia. Ci sono molte opzioni per questo, e non c'è un "modo migliore".
Sembra che il tuo programmatore non abbia mai fatto questo genere di cose prima, ed è il genere di cose su cui puoi spendere un sacco di tempo e denaro, e comunque sbagliare (come in, il tuo software è facile da piratare) . Quindi ti consiglierei di andare con una soluzione commerciale. Alcuni dei sistemi di distribuzione digitale online offrono SDK che il tuo programmatore può integrare con il tuo software: Kagi ha una buona reputazione intorno a questo, e sospetto che Digital River possa offrire qualcosa.
Una cosa su cui ti metterei in guardia è di essere emotivo e di volere un "sistema infallibile". Non vi è nulla di simile; dovresti presumere che se un "cappello nero" è disposto a buttare abbastanza tempo e denaro in esso, possono rompere il tuo sistema. Quindi devi fare un'analisi costi-benefici a sangue freddo e fare un compromesso tra quanto denaro sei disposto a investire rispetto al livello di pirateria che puoi tollerare.
Fortunatamente per te, ad un prezzo di $ 10, la pirateria non è molto attraente, quindi non hai bisogno di un sistema molto elegante. Se ti costerà un cappello nero per più di qualche ora per rompere la tua protezione, è meglio comprare il tuo programma. (Faccio questo genere di cose per un software multi-miliardario, quindi l'incentivo a piratarlo è alto ei miei clienti spendono molti soldi per una protezione da copia difficile da sconfiggere.)
Un'alternativa che potresti considerare è la vendita attraverso il Mac App Store, che può ridistribuire il software acquistato da lì. Non penso che ti permetta di offrire aggiornamenti da una versione di prova a una versione a pagamento, ma so che puoi pubblicare una versione gratuita "lite" con funzionalità limitate o "filigrane" che sfigurano l'output. Quindi, se alla gente piace la versione "lite", possono acquistare la versione "a pagamento". Ecco un articolo che ne parla, e immagino che il tuo programmatore lo troverebbe facile a un "controllo identità" dell'App Store sulla tua versione "a pagamento".