मैं ऐप-ऐप बिलिंग का उपयोग करके "भुगतान" संस्करण में एक निःशुल्क ऐप अपग्रेड करने का प्रयास कर रहा हूं। मैंने बिलिंग को संभालने के लिए this tutorial से कोड का उपयोग किया क्योंकि आधिकारिक डेवलपर साइट पर एक बहुत ही जटिल और मेरे जैसे साधारण प्रवाह के लिए गन्दा है।एंड्रॉइड इन-ऐप बिलिंग - पुनर्स्थापना ट्रांज़ेक्शन सूचना
अपग्रेड करने के लिए मेरा कोड ठीक काम करता है।
समस्या तब आती है जब मैं यह देखने के लिए कुछ जोड़ने का प्रयास करता हूं कि उपयोगकर्ता पहले से ही खरीदा है या नहीं, लेकिन डेटा को साफ़ करने या साफ़ करने के द्वारा या तो मेरा खरीद डेटा खो गया है (मुझे परवाह नहीं है)।
ऐप स्टार्टअप पर मैं पहले ध्वज के बाद सेट किए गए ध्वज की जांच करता हूं। यदि वह ध्वज नहीं है, तो उपयोगकर्ता को एक संवाद दिखाया गया है कि ऐप पिछली खरीदारियों की जांच करेगा, और जब वे ठीक क्लिक करेंगे, तो पुनर्स्थापनाकरण जानकारी विधि कहा जाता है। इसके बाद एप्लिकेशन को मजबूर होना पड़ता है।
क्योंकि डिबगिंग या एमुलेटर पर इन-ऐप बिलिंग काम नहीं करती है, इसलिए मुझे प्रत्येक बार कोड को आजमाने के लिए ऐप का एक हस्ताक्षरित संस्करण प्रकाशित करना होगा। मुझे यह जानने का कोई तरीका नहीं है कि जब मैं पुनर्स्थापनाकरण अनुरोध अनुरोध करने का प्रयास करता हूं तो एप्लिकेशन क्यों निकलता है। क्या किसी के पास कोई सुराग है कि मैं इसका निदान कैसे कर सकता हूं, या मेरे ऐप को मरने के कारण क्या हो सकता है? या restoreTransactionInformation विधि का उपयोग करने का एक उदाहरण उदाहरण है?
संपादित करें: तो ऐसा लगता है कि RESTORE_TRANSACTIONS अनुरोध सही प्रतिक्रिया प्राप्त कर रहा है, और मेरी परीक्षण खरीद के विवरण लौटा रहा है। दुर्भाग्य से इससे पहले कि यह कुछ भी कर सके, ऐप को मजबूर कर दिया गया है।
I/BillingService(6484): confirmTransaction()
D/Finsky (1884): [7] MarketBillingService.getPreferredAccount: com.hippypkg: Account from first account.
I/BillingService(6484): current request is:**********
I/BillingService(6484): RESTORE_TRANSACTIONS Sync Response code: RESULT_OK
D/WindowManagerImpl(6484): finishRemoveViewLocked, mViews[0]: [email protected]**********
W/InputManagerService(1381): [unbindCurrentClientLocked] Disable input method client.
W/InputManagerService(1381): [startInputLocked] Enable input method client.
D/NativeCrypto(1884): returned from sslSelect() with result 1, error code 2
D/Finsky (1884): [1] MarketBillingService.sendResponseCode: Sending response RESULT_OK for request ********** to com.hippypkg.
I/BillingService(6484): Received action: com.android.vending.billing.PURCHASE_STATE_CHANGED
I/BillingService(6484): purchaseStateChanged got signedData: {"nonce":**********,"orders":[{"orderId":"**********","packageName":"com.hippypkg","productId":"hippy_upgrade_free_to_full","purchaseTime":1331476540000,"purchaseState":0}]}
I/BillingService(6484): purchaseStateChanged got signature: **********==
I/BillingService(6484): signedData: {"nonce":**********,"orders":[{"orderId":"**********","packageName":"com.hippypkg","productId":"hippy_upgrade_free_to_full","purchaseTime":1331476540000,"purchaseState":0}]}
I/BillingService(6484): signature: **********==
I/BillingService(6484): confirmTransaction()
I/BillingService(6484): makerequestbundle success
I/BillingService(6484): putstringarray success
D/Finsky (1884): [24] MarketBillingService.getPreferredAccount: com.hippypkg: Account from first account.
D/AndroidRuntime(6484): Shutting down VM
W/dalvikvm(6484): threadid=1: thread exiting with uncaught exception (group=0x4001d5a0)
E/AndroidRuntime(6484): FATAL EXCEPTION: main
E/AndroidRuntime(6484): java.lang.RuntimeException: Unable to start receiver com.hippypkg.BillingReceiver: java.lang.NullPointerException
E/AndroidRuntime(6484): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2144)
E/AndroidRuntime(6484): at android.app.ActivityThread.access$2400(ActivityThread.java:135)
E/AndroidRuntime(6484): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1114)
E/AndroidRuntime(6484): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(6484): at android.os.Looper.loop(Looper.java:150)
E/AndroidRuntime(6484): at android.app.ActivityThread.main(ActivityThread.java:4385)
E/AndroidRuntime(6484): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(6484): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(6484): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
E/AndroidRuntime(6484): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
E/AndroidRuntime(6484): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(6484): Caused by: java.lang.NullPointerException
E/AndroidRuntime(6484): at android.os.Parcel.readException(Parcel.java:1328)
E/AndroidRuntime(6484): at android.os.Parcel.readException(Parcel.java:1276)
E/AndroidRuntime(6484): at com.android.vending.billing.IMarketBillingService$Stub$Proxy.sendBillingRequest(IMarketBillingService.java:100)
E/AndroidRuntime(6484): at com.hippypkg.BillingHelper.confirmTransaction(BillingHelper.java:152)
E/AndroidRuntime(6484): at com.hippypkg.BillingHelper.verifyPurchase(BillingHelper.java:250)
E/AndroidRuntime(6484): at com.hippypkg.BillingReceiver.purchaseStateChanged(BillingReceiver.java:41)
E/AndroidRuntime(6484): at com.hippypkg.BillingReceiver.onReceive(BillingReceiver.java:23)
E/AndroidRuntime(6484): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2103)
E/AndroidRuntime(6484): ... 10 more
W/ActivityManager(1381): Force finishing activity com.hippypkg/.Hippy
अरे वहाँ; क्या आपको अभी तक कोई समाधान मिला है? मैं बस इस मुद्दे पर आया और मैं आपके जैसा ही स्थान पर अटक गया हूं। – Sid
अभी तक नहीं - दुर्भाग्य से मैं किसी और चीज़ पर काम करने के लिए चले गए और उन्हें देखने का मौका नहीं मिला। अब तक के सबसे अच्छे परिणाम के लिए निकोले द्वारा प्रतिक्रिया पर धागे का पालन करें। अगर आपको कहीं भी मिलता है तो मुझे बताएं! – Hippyjim
इसे हल किया, बाद में 4 घंटे और 5 कॉफी) :) जवाब देखें। – Sid