इन-ऐप्लिकेशन खरीदारी मेज़र करना

प्लैटफ़ॉर्म चुनें: iOS+ Android Unity


इन-ऐप्लिकेशन खरीदारी (आईएपी), ऐसी सुविधाओं या डिजिटल कॉन्टेंट को कहते हैं जिन्हें Apple App Store या Google Play के ज़रिए मोबाइल ऐप्लिकेशन में बेचा जा सकता है. इसके लिए, आपके ऐप्लिकेशन को वित्तीय लेन-देन प्रोसेस करने की ज़रूरत नहीं होती. इन-ऐप्लिकेशन खरीदारी के उदाहरणों में, सदस्यता के हिसाब से कॉन्टेंट या गेम के खास आइटम शामिल हैं.

Analytics, इन-ऐप्लिकेशन खरीदारी की रिपोर्ट में आईएपी इवेंट दिखाता है.

Unity ऐप्लिकेशन के लिए, Analytics SDK टूल, iOS पर Apple App Store और Android पर Google Play के साथ इंटिग्रेट होता है.

ज़्यादातर मामलों में, Analytics SDK, IAP इवेंट को अपने-आप इकट्ठा करता है. इसके लिए, आपके ऐप्लिकेशन में एपीआई कॉल की ज़रूरत नहीं होती. सेटअप से जुड़ी ज़रूरी शर्तें और ट्रैकिंग का तरीका, टारगेट प्लैटफ़ॉर्म पर निर्भर करता है:

  • Android: Google Play को लिंक करने के बाद, Google Play लेन-देन अपने-आप ट्रैक हो जाते हैं. इसके लिए, कोड में कोई बदलाव करने की ज़रूरत नहीं होती.
  • iOS (StoreKit 1): StoreKit 1 API का इस्तेमाल करके किए गए App Store के लेन-देन को अपने-आप ट्रैक किया जाता है. इसके लिए, कोड में कोई बदलाव करने की ज़रूरत नहीं होती.
  • iOS (StoreKit 2): StoreKit 2 API का इस्तेमाल करके किए गए App Store के लेन-देन को, कस्टम Unity API का इस्तेमाल करके मैन्युअल तरीके से लॉग किया जाना चाहिए.

शुरू करने से पहले

लागू करना

Android

Android ऐप्लिकेशन के लिए, Google Play से लिंक करने के तुरंत बाद, आईएपी इवेंट मेज़र किए जा सकते हैं. खरीदारी का आकलन करने के लिए, आपको अपने Unity प्रोजेक्ट में कोई कस्टम कोड लिखने की ज़रूरत नहीं है.

iOS

iOS ऐप्लिकेशन के लिए, लागू करने की रणनीति इस बात पर निर्भर करती है कि आपका ऐप्लिकेशन StoreKit 1 या StoreKit 2 का इस्तेमाल करता है या नहीं:

StoreKit 1

अगर आपके खरीदारी फ़्लो में StoreKit 1 का इस्तेमाल किया जाता है, तो Analytics SDK, आईएपी इवेंट को अपने-आप लॉग करता है. इन खरीदारी को ट्रैक करने के लिए, आपको कोई कस्टम कोड जोड़ने की ज़रूरत नहीं है.

StoreKit 2

अगर आपके खरीदारी फ़्लो में StoreKit 2 का इस्तेमाल किया जाता है, तो आपको पुष्टि किए गए लेन-देन को मैन्युअल तरीके से लॉग करना होगा. इसके लिए, लेन-देन के आइडेंटिफ़ायर स्ट्रिंग को LogAppleTransactionAsync() में पास करें.

using Firebase.Analytics;

// Call this method once you have completed a StoreKit 2 transaction
// and have the transaction identifier.
public void LogPurchase(string transactionId) {
    FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWith(task => {
        if (task.IsFaulted || task.IsCanceled) {
            Debug.LogError("Failed to log Apple purchase transaction: " + task.Exception);
        } else {
            Debug.Log("Successfully logged Apple purchase transaction");
        }
    });
}
Unity IAP का इस्तेमाल करके लेन-देन आईडी वापस पाना

अगर आपका प्रोजेक्ट Unity के स्टैंडर्ड इन-ऐप्लिकेशन खरीदारी पैकेज (UnityEngine.Purchasing) का इस्तेमाल करता है, तो लेन-देन आईडी पाने का तरीका, इस्तेमाल किए जा रहे Unity IAP API के वर्शन पर निर्भर करता है.

Unity IAP v5.2+ का इस्तेमाल करके पुष्टि करने के लिए कॉलबैक

Unity IAP v5.2 और इसके बाद के वर्शन में, Apple से जुड़े लेन-देन की जानकारी को सीधे तौर पर ऐक्सेस किया जा सकता है. इसके लिए, पुष्टि करने वाले कॉलबैक में मौजूद Order ऑब्जेक्ट का इस्तेमाल करें. OriginalTransactionID को OriginalTransactionID या मौजूदा लेन-देन आईडी में से कोई एक पास किया जा सकता है:LogAppleTransactionAsync()

using UnityEngine.Purchasing;
using Firebase.Analytics;
using Firebase.Extensions;

// Example using Unity IAP v5.2+ Order confirmation
void OnPurchaseConfirmed(Order order) {
    #if UNITY_IOS
    if (order is ConfirmedOrder confirmedOrder) {

        var appleInfo = confirmedOrder.Info.Apple;
        if (appleInfo != null) {

            string transactionId = appleInfo.OriginalTransactionID;

            if (!string.IsNullOrEmpty(transactionId)) {
                // Log the StoreKit 2 transaction with Firebase Analytics
                FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWithOnMainThread(task => {
                    if (task.IsFaulted || task.IsCanceled) {
                        Debug.LogError($"Failed to log Apple purchase transaction: {task.Exception}");
                    } else {
                        Debug.Log("Successfully logged Apple purchase transaction");
                    }
                });
            } else {
                Debug.LogWarning("Apple OriginalTransactionID is null or empty. Skipping Firebase logging.");
            }
        }
    } else if (order is FailedOrder failedOrder) {
        Debug.Log($"Purchase confirmation bypassed due to failure: {failedOrder.FailureReason}");
    }
    #endif
}
लेगसी ProcessPurchase कॉलबैक

अगर लेगसी ProcessPurchase कॉलबैक का इस्तेमाल किया जा रहा है, तो खरीदे गए प्रॉडक्ट से लेन-देन आइडेंटिफ़ायर निकाला जा सकता है:

using UnityEngine.Purchasing;
using Firebase.Analytics;
using Firebase.Extensions;

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {
    // Extract the transaction ID from the purchased product
    string transactionId = args.purchasedProduct.transactionID;

    #if UNITY_IOS
    // Log the StoreKit 2 transaction with Firebase Analytics
    FirebaseAnalytics.LogAppleTransactionAsync(transactionId).ContinueWithOnMainThread(task => {
        if (task.IsFaulted || task.IsCanceled) {
            Debug.LogError($"Failed to log Apple purchase transaction: {task.Exception}");
        } else {
            Debug.Log("Successfully logged Apple purchase transaction");
        }
    });
    #endif

    return PurchaseProcessingResult.Complete;
}