試用モードをサポートするアプリケーションを開発しました。しかし今、私は一部のユーザーにアクティベーション コードを介して満腹になるようにする必要があります。シナリオでは、ユーザーが試用版アプリケーションをダウンロードし、アプリのアクティベーション コードを入力すると、ユーザーはアプリの全機能を使用できます。
誰でも私にこれを行う方法を提案してください。
試用モードをサポートするアプリケーションを開発しました。しかし今、私は一部のユーザーにアクティベーション コードを介して満腹になるようにする必要があります。シナリオでは、ユーザーが試用版アプリケーションをダウンロードし、アプリのアクティベーション コードを入力すると、ユーザーはアプリの全機能を使用できます。
誰でも私にこれを行う方法を提案してください。
コードをどのように認証するかを考える必要があります-ストアを介してコードを認証することを望まないので、これを行うにはバックエンドサービスを提供する必要があります。
サービスには明らかにアクティベーションコードを送信する必要があり(これはリモート設定に保存する必要があります)、デバイスの一意のIDを送信する必要がある場合があります。これには一意のIDを使用できます。
次に、サービスはコードを何回確認したかを検証する必要があります。問題がなければ、コード、デバイスID、およびアプリケーションと共有されているシークレットをハッシュする必要があります。これは、アプリコード内に埋め込む必要があります。
ユーザーのプライバシーを強化するために、サーバーに送信する前に、デバイスの一意のIDを共有シークレットでハッシュすることをお勧めします。
返されたアクティベーションコードをアプリ内に保存する必要がありますが、選択肢は多くありません。私はこのコードをLocalSettings領域に個人的に保存します。
起動時に、保存されているアクティベーションコードが有効であることを確認する必要があります。インターネットに接続している場合は、コードが有効かどうかをサービスに問い合わせることでこれを行うことができますが、オフラインチェックの手配をする必要があります。これは、アクティベーションコードに加えて、共有シークレットに対してハッシュされたハッシュされたデバイスIDが、保存されているアクティベーションコードと等しくなる必要があるため、十分に単純です。アプリケーションのタイプによっては、インターネットアクセスを要求する前にこの方法で5つのアクティベーションのみを許可する場合があります(高これは本当にユーザーを困らせる可能性があるため、番号)
最後に、複数のデバイスを使用しているユーザーを検討する必要があります。ストアによると、同じユーザーに対して、異なるデバイス間で同じアプリケーションを5回インストールできます。これに対応するために、アクティベーションコードをリモート設定に保存しました。起動時に、コードが存在するかどうかを確認し、アクティベーションのためにコードとデバイスIDをサービスに自動的に送信するかどうかを確認します。
他に考慮する必要があるのは、アプリケーションで共有シークレットをどのように保護するかということだけです。残念ながら、これには多くのオプションがありません。それは本当にあなたのアプリがどれだけ安全である必要があるかに依存します。あなたが完全に偏執的であるならば、あなたのコードを難読化します、しかしこれはただ時間を浪費します。それ以上が必要な場合は、暗号的にランダムなナンスでハッシュされたデバイスコードをサービスに送信することをお勧めします。これにより、送信したものが返されますが、シークレットでハッシュされます。残念ながら、これによりアクティベーショントークンのオフライン検証が不可能になるため、インターネット接続が不要な猶予期間を設ける必要があります。
または、アプリの購入に使用することもできます。