En

پیاده سازی خرید درون برنامه ای برای چند مارکت


مقدمه

برای نوشتن برنامه‌ای در اندروید ممکن است به مشکلی برخورد کنیم که بخواهیم بر اساس مقادیری قابل تغییر مشخص خروجی‌های مختلفی داشته باشیم، به عنوان مثال زمانی که بخواهیم پرداخت درون‌برنامه‌ای را برای مارکت‌های مختلف (گوگل پلی، مایکت و ...) منتشر نماییم، با استفاده از ابزار gradle برای اندروید این عملیات به راحتی امکان‌پذیر است و دیگر نیازی به نگه داشتن چند سورس برای هر برنامه نیست.

در این مستند پرداخت درون‌برنامه‌ای را برای دو مارکت گوگل‌پلی و مایکت توضیح می‌دهیم تا با روش انجام این نوع عملیات آشنا شوید.

مراحل

فایل gradle.build

در ابتدا باید فایل build.gradle را تغییر دهیم:

  • اضافه کردن یک متغیر به صورت زیر:

def marketApplicationId
  • اضافه کردن flavorهای مختلف به المنت android

  • android {
    											productFlavors {
    												googlePlay {
    												}
    
    												myket {
    												}
    											}
    										}

    در هر flavor نیازمند مشخص کردن مقدار هستیم:

    • متغیری برای استفاده در کدهای برنامه
    • متغیری برای استفاده در فایل manifest برنامه
    • مشخص کردن مقدار متغیر تعریف شده
    
    											googlePlay {
    												marketApplicationId = "com.android.vending"
    												buildConfigField "String", "MARKET_APPLICATION_ID", "\"${marketApplicationId}\""
    												storePermission = "com.android.vending.BILLING"
    											}
    
    											myket {
    												marketApplicationId = "ir.mservices.market"
    												buildConfigField "String", "MARKET_APPLICATION_ID", "\"${marketApplicationId}\""
    												storePermission = "ir.mservices.market.BILLING"
    											}
    									
  • باید توجه داشت که مقدار متغییر storePermission را باید از مستند خرید درون‌برنامه‌ای اپ‌استور مورد نظر یافت. به عنوان مثال این مقدار برای مایکت برابر با "ir.mservices.market.BILLING" و برای گوگل‌پلی برابر با "com.android.vending.BILLING" است.
  • فایل manifest برنامه

    <uses-permission android:name="${storePermission}" />
    									

    فایل IabHelper.java

    
    											Intent serviceIntent = new Intent(BuildConfig.MARKET_APPLICATION_ID + ".InAppBillingService.BIND");
    											serviceIntent.setPackage(BuildConfig.MARKET_APPLICATION_ID);
    									

    انتشار برنامه با flavor

    برای مشخص کردن اینکه کدام یک از چاشنی‌ها را برای اجرا انتخاب نماییم در قسمت BuildVariants در Android Studio می‌توان flavorهای مختلف را انتخاب کرد و به صورت خودکار تمامی متغیرها به flavor مورد نظر تغییر خواهند کرد.

    کلیه حقوق متعلق به مایکت می باشد.