2011-01-30 3 views
3

私は無料のアプリAを持っています。私は寄付アプリであるアプリBを持っています。私は人々がコーヒーのために4ドルを支払うことを知っていて、他のチャンネルを介して無料で私のアプリを手に入れることができます。アプリケーションBが市場から正当に購入されたかどうかを確認するために、アプリケーションAからAndroidマーケットライセンスサーバーに問い合わせることはできますか?

アプリBが正当で、市場から支払われている場合は、アプリAでさらに機能を有効にしたいと考えています。

アプリAがそれを実行しているにもかかわらず、アプリBをチェックするためにマーケットライセンスコードのパッケージ名を変更するだけでは不思議でした。

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx, 
new AESObfuscator(SALT, ctx.getPackageName(), deviceId)), 
BASE64_PUBLIC_KEY); 

は、私はもちろん、私は知っていると私のアプリで、アプリBからパッケージ名でctx.getPackageNameを()を交換したいと思います:

たとえば、この行はLVLライブラリコードからです。例:

mChecker = new LicenseChecker(ctx, new ServerManagedPolicy(ctx, 
new AESObfuscator(SALT, com.something.app.b, deviceId)), 
BASE64_PUBLIC_KEY); 

誰もこれに経験がありますか?

+0

5ヶ月後、私はランダムなdownvoteを取得するアプリAに特定のバージョンのコードでは、ワイヤにする必要がありますので、それは、壊れること

注意これは...誰かが私が何かを知っていますか?コメントして助けてください。 – trgraglia

答えて

1

難読化プログラムのコンストラクタへの引数を変更することは、あなたが望むことをするつもりはありません。チェックされるパッケージは、最初の引数からLicenseCheckerコンストラクターによって決定されます。 LicenseCheckerの新しいコンストラクタを定義して、パッケージBのパッケージ名とバージョンコードを取得することもできます。

アプリAも独自のライセンスをチェックしたい場合は、ServerManagedPolicyも拡張する必要がありますアプリAの設定ファイル内の各アプリのキャッシュデータを別々にします。この作品場合でも、アプリBが市場に更新する場合は、

+0

あなたはおそらく環境設定を共有する方が良いルートだと思いますか? – trgraglia

+2

それは意味をなさないかもしれません。 App AはApp Bのキャッシュされた検証データにアクセスし、既定のポリシーが使用するのとほぼ同じロジックを使用して、現在のものであることを確認できます。 (アプリBが検証されていない場合、アプリAはそれが検証されず、ライセンスサーバへのクエリを決して行わないと想定することができますが、これは100%正確ではありませんが、 –

+0

意味があります... Bのmode_privateが同じ証明書で署名されている場合にのみアクセスすることもできます暗号化なしでキャッシュされた結果を読み取ることができます。リアルタイムであれば、暗号化されていても違いはありません。 – trgraglia

関連する問題