5

こんにちは、よろしくお願いします。

ライセンスを取得したアプリをPlayストアにアップロードしています。すべての静的テストライセンス応答(ライセンス済み、ライセンスなしなど)を使用して、テストし、期待される結果を得ることができます。ここまでは順調ですね。

しかし、私のテストデバイスにインターネット接続がない場合、ライセンスチェックは常に失敗します。これは、ServerManagedポリシーが機能することを私が理解する方法ではありません。インストールが最近ライセンスされていることが判明した場合、ポリシーは共有設定ファイルに情報をキャッシュし、インターネット接続がない場合にそれを使用することになっています。

そこで、ライセンスシステムが作成するprefsファイルのデータの難読化を一時的にコメントアウトしました。データを見ると、再試行回数などがゼロに設定されていることがわかります。これは私が期待するものではありません。このようなデータを使用すると、厳密なポリシーを使用しているかのように動作します(実際は使用していません)。

これはテスト応答システムを使用した結果であり、「実際の」ユーザーは、インターネットに接続していなくても操作できるように、難読化された共有設定で実際のデータを取得すると推測しています。

そこで、サーバーの応答を「通常応答」に設定してみました。これを行うと、常にライセンスなしの応答が返されます。私はアプリを購入してダウンロードしていないので、これはある程度意味があると思います。

では、開発者として、エンドユーザーが体験することを正確に体験するにはどうすればよいでしょうか。たとえば、インターネットに接続していなくても、これらすべてがどのように機能するかをテストできるようにしたいと思います。私はこれを行う方法を理解できないようですか?自分のアプリを購入できると思いますが、テストデバイスがテストアカウントにログインしているため、それでも機能するかどうかはわかりません。また、開発者が独自のアプリを購入する必要があるのは意味がありません。

提案をありがとう。

4

2 に答える 2

1

あなたの問題の可能な解決策を見つけたと思います。

私がやったこと:最初に、アプリのアルファ/ベータテスター用のGoogleグループを作成しました(もちろん、アプリをアップロードした後)。次に、この Google グループに自分自身を招待し、招待を受け入れました。この後、ライセンス テスト用のユーザー リストに Gmail 開発者アカウントを挿入し、サーバーの応答を "RESPOND_NORMALLY" に設定しました。

このように、サーバーの応答は常に私のアカウントに対して「LICENSED」になり、有効期限は 2 分で切れません。アプリを購入したのと同じです!

このトリックの唯一の制限は、アプリを Google 開発者コンソールのベータ版またはアルファ版スロットにアップロードする必要があることですが、その後、通常の方法でデバイスにアップロードされたデバッグ アプリを使用して、「LICENSED」の回答を取得することもできます。エクリプスIDE!テスト アプリをダウンロードするためのリンクの生成を待つ必要はありません (生成に非常に時間がかかります... 最大 24 時間!)。

于 2013-07-23T01:08:21.400 に答える
0

私もこのフラストレーションを経験したことがあります。私もお客様と同じ体験をしたいです。「Respond Normal」を設定するとすぐに、常に「NOT LICENSED」という応答が表示されます。Google が追加する必要があるのは **' RESPOND_NORMALY_AND_LICENSED '** の設定だと思います。それは必要なことをするでしょう。

問題の核心: インターネットに接続しているときにアプリを正常に動作する「LICENSED」のままにしておくと、2 分間接続がないと、アプリはライセンスされた状態で動作しなくなります (Google Play サーバーにキャッシュが設定されているため) 2分まで)。したがって、自分のアプリを毎日使用したい場合は、ライセンスを無効にしてアプリを作成する必要があります。これは、顧客が目にすることのないものです。 それは非常に悪い考えです。

私たちは皆、ずっと前に「開発者として自分の『ドッグフード』を食べなければならない」と学びました。

  • 私はこれを「開発者コンソール」のバグとして報告しましたが、おそらく「バグ」ではなく、非常に強力な提案であり、一見簡単に実装できるようです。

回避策として、ServerManagedPolicy.processServerResponse() にコードを追加して、ライセンスされた時間の 2 か月分を単純に追加し、setValidityTimestamp() を呼び出します。これが他の誰かに役立つことを願っています。これで満足です---

于 2013-01-02T20:26:12.813 に答える