рдкреЗрдб рдФрд░ рдлреНрд░реА рдРрдкреНрд╕: рдЯреВ рдЗрди рд╡рди



рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ Habr├й рдкрд░ рдЗрди-рдРрдк рдЦрд░реАрджрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдХреИрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА ( рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ ) рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд░рд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЛрдб рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкреЗрдкрд▓ рднреБрдЧрддрд╛рди рд╕рд╣рд╛рдпрддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рд▓реЗрдХрд┐рди рд░реЛрдмреЛрдЯ рдореАрдбрд┐рдпрд╛ SL рдФрд░ рдУрдкрди-рд╕реЛрд░реНрд╕ рдПрдВрдбреНрд░реЙрдЗрдб рдмрд┐рд▓рд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░рд╛ рдЬреАрд╡рди рд╕рд░рд▓ рд╣реИред рдмрд╣реБрдд рд╕рд░рд▓реАрдХреГрддред


рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ - рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд┐рдХрд╛рд▓реЗрдВ ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЧрддрд┐рд╡рд┐рдзрд┐ рдЬрд┐рд╕рдореЗрдВ рднреБрдЧрддрд╛рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреЛ AbstractBillingActivity рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрдЯрди рдХреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╣реА рдХрд░рдирд╛ рдкрдбрд╝рд╛, рддрд╛рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ рдмрдврд╝рд╛рдП, рд▓реЗрдХрд┐рди рд╕рдХреНрд░рд┐рдпрддрд╛ ред

рдХреЛрдб рд╕реНрд╡рдпрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
public class Preferences extends AbstractBillingActivity { public static final String ANDROID_MARKET_ITEM = "my_managed_item_id"; private boolean billingSupported = false; @Override protected void onCreate(Bundle savedInstanceState) { ... Preference buyPref = (Preference) findPreference("pref_billing_buy"); buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { //         public boolean onPreferenceClick(Preference preference) { //       if (checkBillingSupported() != BillingStatus.SUPPORTED) { //  ,     showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID); } else { //         Boolean purchased = BillingController.isPurchased(getApplicationContext(), ANDROID_MARKET_ITEM); if (!purchased) { //    (       ?   //    ?),     restoreTransactions(); //   (       ) - //     -  restoreTransactions, //      purchased = BillingController.isPurchased(getApplicationContext(), ANDROID_MARKET_ITEM); if (!purchased) { // ,        requestPurchase(ANDROID_MARKET_ITEM); } } } return true; } }); @Override public void onBillingChecked(boolean supported) { billingSupported = supported; } @Override public void onPurchaseCancelled(String itemId) { Log.i(TAG, "Transaction has been cancelled: "+itemId); } //   ,       UI @Override public void onPurchaseExecuted(String itemId) { Log.i(TAG, "User bought ad-free version: "+itemId); CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy"); buyPref.setEnabled(false); } @Override public void onPurchaseRefunded(String itemId) { Log.i(TAG, "Transaction has been refunded: "+itemId); } //     ,    @Override public byte[] getObfuscationSalt() { return new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; } //      @Override public String getPublicKey() { return "my_key_is_here"; } 


рдмрд╕? рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рдареАрдХ рд╣реИ, рдмрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрдиреЛрдВ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП (рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, AdMob) рдореЗрдВ рдЕрдкрдирд╛ рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ рдЫрд┐рдкрд╛ рд╣реЛ, рдмрд▓реНрдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рднреА рди рд╣реЛ:
 Boolean purchased = BillingController.isPurchased(getApplicationContext(), Preferences.ANDROID_MARKET_ITEM); if (purchased) { LinearLayout adContainer = (LinearLayout) findViewById(R.id.bridges_list); View admobAds = (View) findViewById(R.id.adView); adContainer.removeView(admobAds); } 


рд▓реЗрдЦрдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрдЪреНрдЫрд╛рдУрдВ рдХреЛ рд╕реБрди рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In124098/


All Articles