アプリケーションにアプリ内購入を埋め込みます

画像 新年のおもちゃに関する記事の第2部では、ゲームの購入について説明します。 私はアプリケーションでの広告がまったく好きではないので、アプリケーションに広告を埋め込む問題はすぐに消えてしまいました。 有料ゲームをGooogle Playに置いた経験から、このゲームをダウンロードしたい人の数が劇的に減少するため、ゲームを販売するオプションもなくなりました。 そして、私はゲームで大金を稼ごうとはしていませんが、私は自分の喜びのためにそれをもっとするので、ユーザーに何かを支払うかどうかを決定させることにしました。



はい、ゲームで寄付を使用することにしました。 その後、ゲーム内の寄付に関する興味深い統計がある場合は、次の記事で間違いなく共有します。



組み込みの購入を処理するために、私は非常にシンプルで、私の意見ではありますが、非常に機能的なAnjlabライブラリ( GitHubへのリンク)に決めました。



Google Playには2種類の製品があります。





商品の購入は非同期に機能します。つまり、最初に購入リクエストを行い、次に購入の成功またはエラーコードについての応答を受け取ります。



ライブラリをアプリケーションに接続するには、build.gradleファイルで必要です(モジュール:アプリ)



画像



「com.anjlab.android.iab.v3:library:1.0.44」というコンパイル行を依存関係セクションに追加します(変更後、ウィンドウの右上隅にある[今すぐ同期]をクリックすることを忘れないでください)。



apply plugin: 'com.android.application' android { compileSdkVersion 26 defaultConfig { applicationId "ru.crazyprojects.android.newyeartree" minSdkVersion 14 targetSdkVersion 26 versionCode 8 versionName '1.8' testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } productFlavors { } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:0.5' androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2' compile 'com.anjlab.android.iab.v3:library:1.0.44' }
      
      





Activityを使用して2つのライブラリをファイルに追加します。



 import com.anjlab.android.iab.v3.BillingProcessor; import com.anjlab.android.iab.v3.TransactionDetails;
      
      





BillingProcessor.IBillingHandlerの機能をアクティビティに提供します。



 public class NewYearTree extends AppCompatActivity implements BillingProcessor.IBillingHandler { ... }
      
      





購入を処理するには、BillingProcessorクラスのオブジェクトを作成し、必要なメソッドを追加します。



 public class NewYearTree extends AppCompatActivity implements BillingProcessor.IBillingHandler { BillingProcessor bp; ........... @Override public void onBillingInitialized() { /* * ,        */ } @Override public void onProductPurchased(String productId, TransactionDetails details) { /* *     */ } @Override public void onBillingError(int errorCode, Throwable error) { /* *    -     */ } @Override public void onPurchaseHistoryRestored() { /* *           . *      , ,    */ } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //    ,   ,   if (!bp.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } } }
      
      





onCreateメソッドで、変数を初期化します。



 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ........ if(!BillingProcessor.isIabServiceAvailable(this)) { Toast.makeText(this, "In-app billing service is unavailable.", Toast.LENGTH_LONG).show(); } bp = new BillingProcessor(this, "   Google Play", this); //       . bp.initialize(); }
      
      





オーバーライドされたメソッドにコードを入力します。



 @Override public void onBillingInitialized() { Log.d("LOG", "On Billing Initialaized"); //     } @Override public void onProductPurchased(String productId, TransactionDetails details) { Toast.makeText(this, "Thanks for Your donate. "+productId, Toast.LENGTH_LONG).show(); //    bp.consumePurchase(productId); //          ,      . } @Override public void onBillingError(int errorCode, Throwable error) { Log.d("LOG", "On Billing Error"+Integer.toString(errorCode)); //     } @Override public void onPurchaseHistoryRestored() { //            ,     . //  ,                 } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { //Toast.makeText(this, "On Activity Result", Toast.LENGTH_LONG).show(); Log.d("LOG", "On Activity Result"); if (!bp.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } } //   ,        public void donate(String ProductID) { bp.purchase(this, ProductID); //      }
      
      





アプリケーションがすべてを行ったので、Google Playコンソールで一連のアクションを実行する必要があります。

まず、「Google Playからライセンスキー」を取得する必要があります。 このキーはアプリケーションごとに一意であるため、受信するためには、たとえばベータ版としてアプリケーションを公開する必要があります。



アプリケーションが公開されたら、アプリケーション管理セクションに移動し(アプリケーションリストでクリックするだけ)、左側のメニューの[開発ツール]セクションを開き、[コンテンツのライセンスと販売]パネルの[サービスとAPI]サブセクションに移動します「MIIBIjANBgkqhkiG9w0BAQEFAAOCAの形式を持つ必要なキーです。 ...............................................»



このキーは、メソッドを呼び出すときに使用されます。



  bp = new BillingProcessor(this, "MIIBIjANBgkqhkiG9w0BAQEFAAOCA......................................................................................", this);
      
      





次に、販売するコンテンツを作成する必要があります。 これを行うには、左側のメニューの[アプリケーションページの設定]セクションと[販売コンテンツ]セクションに移動します。

次に、必要なコンテンツのタイプを決定する必要があります-タイプを決定した製品またはサブスクリプション、適切なタブに移動し、必須フィールドに入力して必要なコンテンツを作成します。 アプリケーションは、製品とサブスクリプションの両方を同時に持つことができます。



製品識別子の命名に注意する価値があり、アプリケーションで使用されます。



たとえば、識別子one_dollar_donateで製品を作成し、アプリケーションで購入するために次の関数呼び出しを使用します。



  bp.purchase(this, "one_dollar_donate");
      
      





明けましておめでとうございます! 前のものよりももっと面白くしましょう!



All Articles